※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Wicketの動作に必要な最小構成で、まずは動かすのに必要なものを確認するっ

【前提】

Eclipse 3.3 + WTP で、Tomcat環境が出来とるという前提です。
Webアプリのための標準プラグイン「WTP」

自分が Maven2 の使い方を理解できてないので、フォルダ構成はWTP準拠になってます・・・。
Maven2勉強しないとなぁ・・・。

と思ったら、めそらぼさんのところで Maven2 使う方法が解説されとる!!


いまどきは、Maven2でビルドしてJettyなのか~


1.新規プロジェクト作成


"Web" - "Dynamic Web Project" を選択
プロジェクト名は、meke_wicket という名前にしました。

2.必要なJarをそろえる。


WebContent/WEB-INF/lib に、以下のjar ファイルを入れる

wicket-1.3.0-rc1.jar
slf4j-api-1.4.3.jar
logback-core-0.9.8.jar
logback-classic-0.9.8.jar

Wicket と Slf4J + Logback の構成です。

#WicketのJar1個に対して、ログ関連のJar3個かYO!

3.トップページを作る


srcフォルダの下に、meke_wicket.page というパッケージを作成して、トップページを作ります。(注1)
ここでは、HomePage.java, HomePage.html を作成します。

package meke_wicket.page;

import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;

public class HomePage extends WebPage {
	private static final long serialVersionUID = 1L;

	public HomePage() {
		this.add(new Label("label", "メケ"));
	}
}

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
	<title>Wicket トップページ!</title>
</head>
<body>
	こんにちは!<span wicket:id="label">ダミー</span>さん!
</body>
</html>

4.WebApplicationクラスとフィルターを作成する


WebApplicationクラスとWicketFilterのそれぞれに対して拡張クラスを作ります。
WebApplicationクラスは、Wicketのアプリケーション全体の設定を行っています。
それを、WicketFilterクラスを使って初期化します。


package meke_wicket;

import meke_wicket.page.HomePage;

import org.apache.wicket.Request;
import org.apache.wicket.Response;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebApplication;

public class MekeApplication extends WebApplication {
	
	@Override
	protected void init() {
		super.init();
		//リクエスト・レスポンス時の文字エンコード
		getRequestCycleSettings().setResponseRequestEncoding( "UTF-8");
		//Wicketが読み込むHTMLファイルのエンコード
		getMarkupSettings().setDefaultMarkupEncoding( "UTF-8");
	}
	
	@Override
	public Class<? extends WebPage> getHomePage() {
		return HomePage.class;
	}
}

package meke_wicket;

import org.apache.wicket.protocol.http.IWebApplicationFactory;
import org.apache.wicket.protocol.http.WebApplication;
import org.apache.wicket.protocol.http.WicketFilter;

public class MekeFilter extends WicketFilter{
	@Override
	protected IWebApplicationFactory getApplicationFactory() {
		return new IWebApplicationFactory(){
			@Override
			public WebApplication createApplication(WicketFilter filter) {
				return new MekeApplication();
			}
		};
	}
}


5.web.xml にフィルターを登録


4で作ったフィルターをweb.xml に登録します。

<filter>
	<filter-name>mekeFilter</filter-name>
		<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
	</filter>
<filter-mapping>
	<filter-name>mekeFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>


通常は、WebApplicationクラスのみ作成して、web.xml ファイルのパラメーターで登録するっぽいのですが
後になってクラス名やパッケージ名を変えることが良くあるため、リファクタリングに対応できるように
WicketFilterクラスを拡張してみました。
(注2)

6.ブラウザから実行してみる。


Tomcat起動してみて、以下のURLにアクセス!

http://localhost:8080/meke_wicket/

やった!出た!!(はず)



注1:
パッケージ名がJavaの命名規約と違いますが、、、簡単なサンプルアプリ動かすのにドメインに対応した階層掘るの面倒だし、まぁいいじゃないかと。(ダメ)
すんません。許してください。

注2:
独自フィルターを用意しない場合は、以下のようになります。

<filter>
	<filter-name>mekeFilter</filter-name>
		<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
	<init-param>
		<param-name>applicationClassName</param-name>
		<param-value>meke_wicket.MekeFilter</param-value>
		</init-param>
</filter>
<filter-mapping>
	<filter-name>mekeFilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>


名前:
コメント: