web.xmlとスタイルシートの用意
これで必要なクラスはできました。後は、Webページ(WebPageクラスとテンプレート)を作っていくわけですが、その前に、それ以外に必要となるものを準備しておきましょう。まずはweb.xmlへの追記です。
<filter> <filter-name>wickletFilter</filter-name> <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class> <init-param> <param-name>applicationClassName</param-name> <param-value>jp.tuyano.AuthApp</param-value> </init-param> </filter> <filter-mapping> <filter-name>wickletFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<web-app>
にこのようにタグを追記しておきます。applicationClassNameには、jp.tuyano.AuthAppを指定しておきます。続いて、各ページの表示に統一感を持たせるため、スタイルシートを作成しておきましょう。
body { background-color: #FFF0FF; font-size: 10pt; color: #000099; } h1 { background-color: #CCAAFF; border-style: none none solid solid; border-width: 0px 0px 2px 5px; padding: 1px 5px 1px 5px; font-size: 12pt; color: #330000; } p { font-size: 10pt; color: #606060; }
これは「WebContent」内に「style.css」というファイル名で用意します。WebページのテンプレートなどはJavaのクラスと同じパッケージ内におきますが、スタイルシートのように、ページ内にリンクしておく静的ファイルは、そのままWebContentに作成しておけば、そのまま利用できます。イメージファイルなどの類いも同様に考えていいでしょう。
ログインページの作成
では、Webページを作成しましょう。まずは、ログインページからです。ここでは「AuthSignInPage」という名前で用意しましょう。まずはテンプレートです。jp.tuyanoパッケージに「AuthSignInPage.html」というファイル名で用意します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Sign in</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <h1>Sign in Page.</h1> <p>※ユーザー名とパスワードを入力してください。</p> <table border="1"> <tr><td wicket:id="signInPanel"></td></tr> </table> </body> </html>
ここでは、wicket:id="signInPanel"
を指定したタグがあるだけで、フォームなどの類いはまったくありません。実は、wicket-auth-rolesには、ログインページがあらかじめ用意されており、それを利用することでまったくインターフェースなどを作成することなくページが作れるのです。続いて「AuthSignInPage.java」のソースコードもあげておきましょう。
package jp.tuyano; import org.apache.wicket.authentication.pages.SignInPage; public class AuthSignInPage extends SignInPage { public AuthSignInPage(){} }
こちらも、ただクラスを定義しておくだけで、何も内容はありません。通常、WebページはWebPageクラスを継承して作成しますが、ログインページはSignInPageを継承します。こうするだけで、自動的にwicket:id="signInPanel"
のタグにログインのパネルをはめ込み、ログインのための処理が使えるようになるのです。
このAuthSignInPageは、ユーザー名とパスワード、それに「ユーザー名を記憶する」というチェックボックスのあるフォームを自動生成して表示します。またパスワードが空だとメッセージが表示されたり、ユーザー名が不正だと再入力となるなど基本的なバリデーション機能も備えています。