Apache Wicket

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

関連項目



  • - POJO

外部リンク



もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。