goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

Dukeマウス、紹介してなかった!

2006-12-31 23:55:32 | Weblog

 そうだ、今年、やりのこしたことがあった。
 Dukeマウス、getしたのに、ここで紹介してなかったので、
 いま、紹介します。こんなかんじ

 今年中に、まにあった。。かな?

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaの画面表示-その6:Struts(その7:モデルと配置)。

2006-12-31 22:43:41 | JavaとWeb

 シリーズJavaの画面表示のつづきです。今、Strutsを具体的な例をあげてやってます。手順は、以下のとおりです。

1.画面遷移を考える。
2.(別にやんなくてもいいけど)それを以下のように図にしておくと、あとで楽です
3.画面のJSPを作成します
4.Strutsタグをいれて、JSPを修正します
5.画面に対応するActionFormを作ります
6.Submitでサーバーで処理するところに対応する、Actionを作ります
7.struts-config.xmlを設定します
8.モデルを作って、Actionから呼び出します

 前回7まできたので、今回は「8.モデルを作って、Actionから呼び出します」なのですが、これは、すぐに終わってしまう一方、配置について書かないといけないので、それについても書きます。




■モデル部分について
Actionで呼び出しているshori1.rituKeisanですが、これは、Javaの画面表示-その4:JSPで表示、JavaBeanで処理(その2:ソース) で示したShori1.javaとおなじです(ということは、Strutsを使わなくても、JSPだけでも、MVCにわけて、同じことができるということです)。
 なので、一応ソースだけ、書いておきます。
package	pac1;

public class Shori1 {
	public String rituKeisan(String nyuryoku)
	{
		//==============================//
		//	データの取得	   //
		//==============================//
		if ( nyuryoku	==	null )
		{
			return "NO DATA!";
		}
		else if ( nyuryoku.length()	==	0 )
		{
			return "NO DATA!";
		}

		// 処理
		int	i,atari;
		atari = 0;
		String chk = "This is a pen";
		for(i = 0 ; i < nyuryoku.length() ; i ++ )
		{
			if ( i >= chk.length() )
			{
				break;
			}
			else if ( chk.charAt(i) ==  nyuryoku.charAt(i) )
			{
				atari++;
			}
		}

		//==============================//
		//	結果を返す	     //
		//==============================//
		return	Integer.toString(atari*100/chk.length());

	}

}

(上記 < >は、本当は半角です)




■配置
 で、今まで作ったものの配置です。
 まず、Tomcatのフォルダの下にwebappsがあるとおもうので、そこになんかフォルダをつくって、その下におきます。
 ただし、あとでlibのフォルダにいろいろいれないといけないので、実際には、
 struts-blank-1.3.5.warファイルを、あらかじめ、名前を変えておいて(フォルダ名.war)、それを、Tomcatのフォルダの下のwebappsの下において、展開してもらうことによって、フォルダを作成したほうが楽です。

 今回は、stestという名前でwebappsの下に作ったとします。

 そうした場合の、JSPファイルとjavaのクラスファイル、struts-config.xmlの置き方は、こんな感じになります

Tomcatのフォルダ
  |-webapps
     |-アプリを置くフォルダ
        |-jsp
        |  *-JSPファイル
        |-WEB-INF
           |-struts-config.xml
           |-web.xml
           |-lib
           | |-(中身は省略)
           |
           |-classes
             |-パッケージ名
                |-Javaクラスファイル


 JSPファイルは、アプリを置くフォルダの下なら、どこでも本当は大丈夫です。
 一方、WEB-INFの下にある設定ファイルや、ライブラリ、クラスは、このようにWEB-INFを作って配置してください。
 web.xmlと、libの中身に関しては、struts-blank-1.3.5.warを展開したものと同じものを使います(これ以外のファイル、フォルダは、今回は使いません)

 今回の具体例の場合は、以下のように配置します。
Tomcatのフォルダ
  |-webapps
     |-stest
        |-jsp
        |  |-index.jsp
        |  |-kekka.jsp
        |  *-error.jsp
        |
        |-WEB-INF
           |-struts-config.xml
           |-web.xml
           |-lib
           | |-(中身は省略)
           |
           |-classes
             |-pac1
                |-inputForm.class
                |-errorForm.class
                |-kekkaForm.class
                |-ShoriCtrl.class
                *-Shori1.class

 



 これで、Strutのお話は、ここでおわりです。
 で、Javaの画面表示の話も、HelloJava以降のJavaとしての話も、ここでおわりということになります。

 以降、来年からは、Javaの個々の話題に関して、単発的に触れて生きたいと思います。
 まずは、Strutsの続きからはじめます。
 (今回の話を前提に、ワンポイント的な話を書いていきます)

 また、HelloWorldまでのJavaの話を土日に、HelloJava以降の話を今回まで行ったため、本来なら、コレでつながるはずなのですが、重要な、例外の話やHashMapの話を書いていないので、またいつか、(もちょっとたったら)そのHelloWorldが終わった人のためのJavaみたいなシリーズも検討していたりしています。

 ということで、なんか、さいごはばたばたでしたが、これで、このシリーズおわりです。
(年内に終わってよかった ^^;)




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

デザインパターンの23種類の各パターンは、要するにこうだ!と言い切る(その4:振る舞い編2)

2006-12-31 21:01:47 | JavaとWeb

 これ、途中でとまってたんで、今年中に終わらせたいと思います。
 シリーズデザインパターンの23種類の各パターンは、要するにこうだ!と言い切るの4回目です。

 このシリーズ、GoF本の、デザインパターン23個は、結局、一言でいいきると、なんなんだ!というのを書いてます。かなり独断と偏見で書いてます。

 GoF本のデザインパターンは、主に3つにわかれます。
 1つめは、生成に関するもの
 2つめは、構造に関するもの
 3つめは、振る舞いに関するもの

 で、生成に関するものと、構造に関するものは書きました。

 振る舞いに関するものは、
  1.Chain Of Responsibilityパターン
  2.Commandパターン
  3.Interpreterパターン
  4.Iteratorパターン
  5.Mediatorパターン
  6.Mementoパターン
  7.Observerパターン
  8.Stateパターン
  9.Strategyパターン
 10.Template Methodパターン
 11.Visitorパターン

 とあって、前回5番のMediatorパターンまでやったので、今回は、6.Mementoパターンからです。

 なお、デザインパターンの具体的なプログラムは、
JavaでHello World > デザインパターン
http://www.hellohiro.com/pattern/

というのがあって、そこに載っているようなので、気になる人はそちらを参照してみてください。

なお、この内容は、増補改訂版Java言語で学ぶデザインパターン入門を参考にしています。



■6.Mementoパターン
 やり直し(undo)やもう一度(redo)するために、インスタンスの状態を保存したり、復元させる方法



■7.Observerパターン
 ある対象の状態が変化したときに、あらかじめ登録しておいたオブジェクトに(変化したことを)通知する。
 ちなみに、Javaでは、これをjava.util.observe,java.util.observableを継承して利用することによって、行うっていう手もある。




■8.Stateパターン
 よく、Cプログラムなどで、状態を表す変数stsなどというものを用意しておき、状態が変わるとsts=5のように、値をセットして、switch(sts)のように、状態によって処理を行うということをするが、それを、クラスを使って、オブジェクト指向っぽくやったもの。



■9.Strategyパターン
 やりかたがいくつかあって(たとえば、株の銘柄を選ぶとき、PBRで選ぶ、PERで選ぶ、利回りで選ぶなど、いくつかやり方があって)、やり方をごっそり変えたいとき、できるだけ他に影響を与えずに、やり方を切り替える方法。



■10.Template Methodパターン
 まさにテンプレートです。抽象クラスとして、テンプレートを用意しておき、具体的に使うときは、これを具体化して(一部かえることはあるかもしんないけど)使うというもんです。



■11.Visitorパターン
 オブジェクト指向は、データと処理をカプセル化します。
 しかし、処理(メソッド)を、あるデータ(エンティティ)に所属させるのが、あんまり良くないとき(適したものがない、適したものがいくつもある)、
 データ構造と処理を分離させてしまい、処理をvisitorのクラスとして定義してしまい、データ構造を、”訪問していく”形にしたもの。




ひえー、ということで、23個示したので、これで、このシリーズは、おしまいです。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

中央官庁、マイクロソフトの「ワード」や「エクセル」、原則購入対象から外す!

2006-12-31 18:42:09 | Weblog

 って、NHKニュース、まじっすかあ(@_@!)

ここのNHKニュース
互換性重視しソフトを調達へ
http://www3.nhk.or.jp/news/2006/12/31/d20061231000103.html

(NHKニュースは、日にちが変わると見れなくなります。
 その場合は、2006/12/31/のところを、今日の日にちにすると、
 見える「ことがあります」(必ず見れるわけではない))

によると(以下斜体は上記ニュースより引用)

国は、今後調達するソフトは互換性を重視し、原則として国際的な規格や日本工業規格などに基づく製品を優先して調達する方針を固めました。現在広く使われているマイクロソフト社製の「ワード」や「エクセル」などは、基準を満たしていないため、業務に支障がある場合などの特例を除き、今のままでは購入の対象外になります。国は今後一般からの意見も募って、新しい指針をまとめ、平成19年の夏にもこの指針に基づいたコンピューターソフトの調達を始める計画です


 まじっすかあー(@_@!)

 じゃあ、国に提出する場合は、ワード、エクセルでなく、そのソフト(OpenOfficeとかかなあ??)をインストールして作れって言うことになりませんか。。。

 そのソフト、フリーソフトから選んでくれればいいけど。。。

 マイクロソフトから、なんか、文句きたりして。。
 (互換性のある形式で書き出せば言いだけか。。。)

 でも、互換性重視なら。。やっぱ。。。
 テキストファイルで、ノートパッドですよね!

 たいてい、どんなOSでも、開けますよ(^^;)v



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Javaの画面表示-その6:Struts(その6:struts-config.xmlの設定)

2006-12-31 12:37:33 | JavaとWeb

 シリーズJavaの画面表示のつづきです。今、Strutsを具体的な例をあげてやってます。手順は、以下のとおりです。

1.画面遷移を考える。
2.(別にやんなくてもいいけど)それを以下のように図にしておくと、あとで楽です
3.画面のJSPを作成します
4.Strutsタグをいれて、JSPを修正します
5.画面に対応するActionFormを作ります
6.Submitでサーバーで処理するところに対応する、Actionを作ります
7.struts-config.xmlを設定します
8.モデルを作って、Actionから呼び出します

 前回6まできたので、今回は「7.struts-config.xmlを設定します」です。




■具体例について
 今回はいつもと違い、先に具体例、struts-config.xmlを示して、そのあとで、内容を書きます。

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
	<form-beans>
 		<form-bean name="inputForm" type="pac1.inputForm" />
 		<form-bean name="kekkaForm" type="pac1.kekkaForm" />
		<form-bean name="errorForm" type="pac1.errorForm" />
	</form-beans>
	<action-mappings>
		<action path="/shori" type="pac1.ShoriCtrl"
				name="inputForm" scope="request" validate="false">
			<forward name="success" path="/jsp/kekka.jsp" />
			<forward name="error" path="/jsp/error.jsp" />
		</action>
	</action-mappings>
</struts-config>

(上記 < > は、本当は半角です)

ここで、画面のイベントやフォワードの名前とJSPの関係は、以下のとおりです

(この設定ファイルを書きやすくするため、上記の図を作っています)
また、ActionFromのクラスと画面の関係は、以下のとおりです

 input.jsp  inputForm(ただし、error.jspのフォーム部分と同じ)
 error.jsp  errorForm(出力用)
 kekka.jsp  kekkaForm(JSP自体が、画面出力しかない)


さて、上記のXMLは、おおきく3つの部分に分かれます。
・DOCTYPE部分
・画面のActionForm定義:form-beans
・画面のAction定義:action-mappings
以下、それぞれについて説明します



■DOCTYPE部分
 決まり文句です。なお、これは1.3用です。
 1.1は、1.3と書いてあるところが違うのですが、
 1.3で1.1を使わないほうがいいと思います(つまり、バージョンを直したほうがいいと思います。form-beanとaction-mappingsだけなら、たぶん、それでOKそう。。)



■画面のActionForm定義:form-beans
 form-beansタグの中に、form-beanタグを書き、1ActionFormクラス1form-beanで書きます。こんなかんじ

  <form-bean name="名前" type="パッケージ名.アクションクラス名" />

 名前は、あとで使うaction-mappingsのところで使います。
 テキトーに付けてください(というか、クラス名と同じにするとか、なんか決まりをつくったほうがいいです)。



■画面のAction定義:action-mappings
 action-mappingsタグの中に、actionタグを書き、1Actionクラス1actionで書きます。こんなかんじ

<action path="JSPで書いたaction" type="パッケージ名.クラス名"
    name="入力画面の名前" scope="request" validate="false">
    <forward name="フォワード名" path="フォワードするJSP" />
       :
</action>

 ”JSPで書いたaction”とは、JSPファイルのhtml:formタグのaction属性で指定したものです。

 ”入力画面の名前”とは、このActionの入力画面に対応する、ActionFormの名前なのですが、その名前は、上記「画面のActionForm定義:form-beans」で書いた、名前のことです。

 ”フォワード名”とは、Actionクラスで
   return map.findForward("success");
 でsuccessとか書いた、あのmap.findForwardの引数として指定したものです。

 ”フォワードするJSP”は、JSP名を書いてください(このアプリの下から書きます。なので、/jsp/kekka.jspとか、書くことになります)。




 これだけ書けば、動きます。

 で、このシリーズの次回では、「8.モデルを作って、Actionから呼び出します」なんですけど、モデル部分は、Javaの画面表示-その4:JSPで表示、JavaBeanで処理(その2:ソース) で示したShori.javaと同じですので、それは軽く触れる程度にして、中心的な話題は、配置について書こうと思います。


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする