Apache Wicket(アパッチ・ウィケット)は、
Apacheソフトウェア財団が開発するオープンソースの
Java Webアプリケーションフレームワークです。一般的に「Wicket」と略称されます。
概要
Wicketは、元々Jonathan Locke氏によって作成され、
2005年6月にバージョン1.0が発表されました。その後、
2007年6月にApacheのトップレベルプロジェクトとして採用されました。
類似の
Webアプリケーションフレームワークとしては、
JavaServer Faces(JSF)や
Apache Tapestryなどが挙げられます。
Wicketという名称は、英語で「小さな門」や「格子窓口」といった意味を持つほか、
クリケットで使用される「三柱門」を指す言葉でもあります。2011年にバージョン1.5がリリースされた後、2012年にはメジャーバージョンアップ版であるバージョン6.0がリリースされました。
特徴
従来の
Webアプリケーションフレームワークとして普及していた
Apache Struts(以下、Struts)は、設定ファイルに依存した開発を行っていました。Strutsは
Javaで作られていましたが、必ずしも
Javaのオブジェクト指向の利点を最大限に活用していたとは言えません。設定ファイルに多くの記述を必要としたため、開発効率を損なう側面もありました。
Wicketは、これとは対照的に、
Javaのオブジェクト指向言語としての特性を最大限に活用できるように設計されています。Wicketでは、Webページもオブジェクトとして扱われ、その上に配置される要素(文字列やタグなど)もすべてオブジェクトとして扱われます。これにより、
Javaプログラムを通じてWebページを継承したり、機能
委譲したり、独自に拡張したりすることが容易になります。
Wicketが利用する設定ファイルは、
Java Servletの仕様で必要とされるweb.xmlのみです。画面定義やページ
テンプレートにはHTMLファイルまたはXHTMLファイルを使用します。Wicketの独自拡張タグは、HTMLタグの置換や処理を記述するのではなく、Wicketが解釈する範囲指定や意味づけを行います。また、HTMLタグには必要に応じて独自拡張属性を記述します。このため、JSPファイルとは異なり、通常のブラウザでの表示や、Adobe Dreamweaverなどの
Webオーサリングツールでの編集が容易になります。
Wicket 独自拡張
Wicketが独自に拡張したタグには、以下のようなものがあります。
- - `wicket:link`
- - `wicket:panel`
- - `wicket:fragment`
- - `wicket:border`
- - `wicket:body`
- - `wicket:extend`
- - `wicket:child`
- - `wicket:message`
- - `wicket:remove`
- - `wicket:head`
- - `wicket:enclosure`
- - `wicket:container`
Wicketが独自に拡張した属性には、以下のようなものがあります。
- - `wicket:id`
- - `wicket:message`
- - `wicket:enclosure`
- - `wicket:for`
- - `wicket:unknown`
- - `wicket:scope`
プログラム例
以下に、
Hello world|Hello_worldを表示するプログラム例を示します。
HelloWorld.html
html
Hello World
テンプレートとなるXHTMLファイルです。
HelloWorld.java
java
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage {
public HelloWorld() {
add(new Label("message", "ハロー・ワールド!"));
}
}
ページクラスです。クラス名と同じ名前のHTML/XHTML
テンプレート(この場合、HelloWorld.html)を読み込みます。
テンプレート中にある`wicket:id`属性が"message"となっているタグの内容を、指定した文字列("ハロー・ワールド!")に置き換えます。
HelloWorldApplication.java
java
import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
@Override
public Class getHomePage() {
return HelloWorld.class;
}
}
Applicationオブジェクトです。アプリケーションをWebコンテナにロードする際の開始点となります。
web.xml
xml
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
wicket
org.apache.wicket.protocol.http.WicketFilter
applicationClassName
HelloWorldApplication
wicket
/*
Wicketサーブレット・クラスを定義し、クラスにアプリケーションクラス名をパラメータとして指定します。
参考書籍
- - 「オープンソース徹底活用 WicketによるWebアプリケーション開発」 矢野勉 ISBN 978-4798022215
関連項目
外部リンク