うえしまさんの備忘録

うえしまさんの活動の備忘録をここに淡々と書いていきます。ジャンルは色々ですが、主にIT関連の記事を書きます。

Wicketのメモ初期導入編

参考にさせていただいたサイト

public static void main

研究室の先輩(id:Kishi)のブログ

Yoshiori’s Slidespace

Wicketの良さがわかるらしい

ステートレスとは何か

ステートレスとステートフルの違いが載っています。わかりやすいと思われます。(理解したのかどうかは知らないですが)

Wicket3分クッキング

wicketの導入がやさしく解説されています。

Wicketの良い点

実際のところよくわかっていない。今のとこわかったのはhttpプロトコルプロトコルレベルではステートレスで状態を保存しておけない?cookieやGETやPOSTパラメータやhiddenで状態を保存していけれどそれは結構危険な面があるらしい。ステートフルがいいのとは言い切れないらしいのでこれは開発していくうちにきっとわかっていくはず。

Wicket開発に必要なもの(ファイル形式はZIP)

Wicket

展開されたファイルをWEB-INF以下のlibに配置する

SLF4J
  • slf4j-api-1.4.3.jar
  • slf4j-simple-1.4.3.jar

この二つを上と同様に配置する。

Velocity
  • velocity-1.5.jar

ファイルは同じくプロジェクトのWebContent/WEB-INF/lib以下にコピー

Commons-collection
  • commons-collections-3.2.jar

ァイルは同じくプロジェクトのWebContent/WEB-INF/lib以下にコピー

Commons-lang
  • commons-lang-2.3.jar

ァイルは同じくプロジェクトのWebContent/WEB-INF/lib以下にコピー

僕の場合の開発環境

  • All in one Eclipse3.1
  • Tomcat5.5
  • Wicket1.3.3
  • JDK1.5.0.15
  • Apache2.2

HelloWorldするためにするべきこと

HelloWorld.htmlを作成する

ここでdiv,span要素のところに属性に>|html|wicket id||<とかしてあげます。

HelloWorld.java()を作成する

HTMLとワンセットと考える。ここでhtmlでID登録したやつを定義してやらないとダメらしい。定義しないとエラーでます

Application.java

ここでフィルタリングとかマッピングとかその他もろもろをやっているようです。基本的に一個でよさそう

WEB-INF/WEB.xmlの書き換え

この部分にWicketのクラスをサーブレットとして登録しましょう。

サンプルソース

HelloWorld.java
package sample;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.WebPage;

public class HelloWorld extends WebPage{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public HelloWorld(){
		add(new Label("test","Hello World"));
	}

}
SampleApplication.java
package sample;

 
import org.apache.wicket.protocol.http.WebApplication;
 
public class SampleApplication extends WebApplication{

	public SampleApplication(){
		super();
	}
	@Override
	public Class getHomePage() {
		// TODO 自動生成されたメソッド・スタブ
		return HelloWorld.class;
	}
	
}
HelloWorld.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Hello World</title>
</head>
<body>
<div wicket:id = "test">
</div>
</body>
</html>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 <servlet>
        <servlet-name>sample</servlet-name>
        <servlet-class>org.apache.wicket.protocol.http.WicketServlet</servlet-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>sample.SampleApplication</param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>sample</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>

注意点

Wicketの性質上JavaファイルとHtmlファイルを同一階層におかなければいけない。しかしEclipseの設定ではjavaファイルのフォルダにhtmlファイルをいれても認識してくれません。
Eclipseでの開発の場合には設定のJavaでhtmlを有効してやらないといけない。詳しくはここ(htmlが見つからないエラー )見てください。

感想

WEB上のいろんなライブラリーを使ってるからはじめはエラーでまくってあきらめかけていたが研究室の皆さんのご尽力の元で何とか動いた。
ゆとりでもWicketでHello Wolrdできるんだと思うとうれしかった。ゆとり最高!!