ablog

不器用で落着きのない技術者のメモ

5分ではじめる Wicket

覚え書き

  • Wicketのサイトに用意されているサンプルアプリケーション「QuickStart」をインストールして起動する。
  • あらかじめApache Mavenのセットアップが終わっており、mvn コマンドを使用できる必要がある。
  • Maven が 100% Java の Webサーバ兼 Servlet コンテナ Jetty もインストールしてくれるので、ApacheTomcat などをインストールする必要はない。

手順

サンプルアプリケーションをインストールする。

% cd ~/Documents/workspace 
% mvn archetype:create -DarchetypeGroupId=org.apache.wicket -DarchetypeArtifactId=wicket-archetype-quickstart -DarchetypeVersion=1.4.3 -DgroupId=jp.gihyo.wicket -DartifactId=wicket-sample
% cd wicket-sample

サンプルアプリケーションを起動する。

% mvn jetty:run

http://localhost:8080/wicket-sample/ にブラウザでアクセスする。

所要時間は 5 分程度

ちょっと中身をのぞいてみる。

yoheia% pwd
/Users/yoheia/Documents/workspace/wicket-sample
yoheia% find . 
.
./pom.xml
./src
./src/main
./src/main/java
./src/main/java/jp
./src/main/java/jp/gihyo
./src/main/java/jp/gihyo/wicket
./src/main/java/jp/gihyo/wicket/HomePage.html
./src/main/java/jp/gihyo/wicket/HomePage.java
./src/main/java/jp/gihyo/wicket/WicketApplication.java
./src/main/resources
./src/main/resources/log4j.properties
./src/main/webapp
./src/main/webapp/WEB-INF
./src/main/webapp/WEB-INF/web.xml
./src/test
./src/test/java
./src/test/java/jp
./src/test/java/jp/gihyo
./src/test/java/jp/gihyo/wicket
./src/test/java/jp/gihyo/wicket/Start.java
./src/test/java/jp/gihyo/wicket/TestHomePage.java
./target
./target/classes
./target/classes/jp
./target/classes/jp/gihyo
./target/classes/jp/gihyo/wicket
./target/classes/jp/gihyo/wicket/HomePage.class
./target/classes/jp/gihyo/wicket/HomePage.html
./target/classes/jp/gihyo/wicket/WicketApplication.class
./target/classes/log4j.properties
./target/test-classes
./target/test-classes/jp
./target/test-classes/jp/gihyo
./target/test-classes/jp/gihyo/wicket
./target/test-classes/jp/gihyo/wicket/Start.class
./target/test-classes/jp/gihyo/wicket/TestHomePage.class
./target/work
./target/work/jsp
package jp.gihyo.wicket;

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

/**
 * Homepage
 */
public class HomePage extends WebPage {

	private static final long serialVersionUID = 1L;

	// TODO Add any page properties or variables here

    /**
	 * Constructor that is invoked when page is invoked without a session.
	 * 
	 * @param parameters
	 *            Page parameters
	 */
    public HomePage(final PageParameters parameters) {

        // Add the simplest type of label
        add(new Label("message", "If you see this message wicket is properly configured and running"));

        // TODO Add your page's components here
    }
}
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd" >
    <head>  
        <title>Wicket Quickstart Archetype Homepage</title>
    </head>
    <body>
        <strong>Wicket Quickstart Archetype Homepage</strong>
        <br/><br/>
        <span wicket:id="message">message will be here</span>
    </body>
</html>
package jp.gihyo.wicket;

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

/**
 * Application object for your web application. If you want to run this application without deploying, run the Start class.
 * 
 * @see jp.gihyo.wicket.Start#main(String[])
 */
public class WicketApplication extends WebApplication
{    
    /**
     * Constructor
     */
	public WicketApplication()
	{
	}
	
	/**
	 * @see org.apache.wicket.Application#getHomePage()
	 */
	public Class<HomePage> getHomePage()
	{
		return HomePage.class;
	}

}
  • /src/main/resources/log4j.properties
log4j.appender.Stdout=org.apache.log4j.ConsoleAppender
log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n

log4j.rootLogger=INFO,Stdout

log4j.logger.org.apache.wicket=INFO
log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO
log4j.logger.org.apache.wicket.version=INFO
log4j.logger.org.apache.wicket.RequestCycle=INFO
  • src/main/webapp/WEB-INF/web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app 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"
	 version="2.4">

	<display-name>wicket-sample</display-name>

	 <!--  
	      There are three means to configure Wickets configuration mode and they are
	      tested in the order given. 
	      1) A system property: -Dwicket.configuration
	      2) servlet specific <init-param>
	      3) context specific <context-param>
	      The value might be either "development" (reloading when templates change)
	      or "deployment". If no configuration is found, "development" is the default.
	-->

	<filter>
		<filter-name>wicket.wicket-sample</filter-name>
 		<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
		<init-param>
			<param-name>applicationClassName</param-name>
			<param-value>jp.gihyo.wicket.WicketApplication</param-value>
 		</init-param>
 	</filter>

 <filter-mapping>
  <filter-name>wicket.wicket-sample</filter-name>
	<url-pattern>/*</url-pattern>
 </filter-mapping>


</web-app>

ちょっといじってみる。

yoheia% vi src/main/java/jp/gihyo/wicket/WicketApplication.java  
package jp.gihyo.wicket;

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

/**
 * Application object for your web application. If you want to run this application without deploying, run the Start class.
 *
 * @see jp.gihyo.wicket.Start#main(String[])
 */
public class WicketApplication extends WebApplication
{
    /**
     * Constructor
     */
        public WicketApplication()
        {
        }

        /**
         * @see org.apache.wicket.Application#getHomePage()
         */
        public Class<HomePage> getHomePage()
        {
                return HomePage.class;
        }

        @Override
        public void init() {
                super.init();
                mountBookmarkablePage("/top", HomePage.class);
        }

}
yoheia% vi src/main/java/jp/gihyo/wicket/HomePage.java 
package jp.gihyo.wicket;

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

/**
 * Homepage
 */
public class HomePage extends WebPage {

        private static final long serialVersionUID = 1L;

        // TODO Add any page properties or variables here

    /**
         * Constructor that is invoked when page is invoked without a session.
         *
         * @param parameters
         *            Page parameters
         */
    public HomePage(final PageParameters parameters) {

        // Add the simplest type of label
        add(new Label("message", "id:t_yano++; id:yoshiori++;"));

        // TODO Add your page's components here
    }
}

Jetty を再起動する。

Ctrl + C
yoheia% mvn jetty:run  

http://localhost:8080/wicket-sample/top にブラウザでアクセスしてみる。