Struts2を使ったWEBサイト開発

ログイン編

WEB画面でよく必要となるのはログイン機能です。本章では、ログイン画面とログイン後のセッション管理を実現する方法について説明します。

 

struts.xmlの作成

 struts.xmlに以下の記述をします。

<?xml version="1.0"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
  <constant name="struts.ui.theme" value="simple" />
  <constant name="struts.configuration.xml.reload" value="true" />
  <constant name="struts.codebehind.defaultPackage" value="mydefault" />
  <!-- 独自パッケージとして「mydefault」を定義 -->
  <package name="mydefault" namespace="/" extends="struts-default">
    <interceptors>
      <!-- LoginInterceptorクラスに対して「login」と名前を定義 -->
      <interceptor name="login" class="pkg.sample.LoginInterceptor" />
      <!-- LoginInterceptorとStruts標準のdefaultStackを
          足し合わせた新しい「defaultLoginStack」を定義 -->
      <interceptor-stack name="defaultLoginStack">
        <interceptor-ref name="login" />
        <interceptor-ref name="defaultStack" />
      </interceptor-stack>
    </interceptors>
    <!-- デフォルトのinterceptorを、defaultLoginStackに設定 -->
    <default-interceptor-ref name="defaultLoginStack"/>
    <!-- 「return "login"」「return "mainmenu"」に対して、固定のURLを定義 -->
    <global-results>
      <result name="login">index.jsp</result>
      <result name="mainmenu" type="redirect">mainMenu.action</result>
    </global-results>
    <!-- actionタグは記述不要 -->
  </package>
</struts>

(1) 「struts.codebehind.defaultPackage」に、独自パッケージである 「mydefault」を設定します。
(2) 次に、独自パッケージである「mydefault」を定義します。
(3) 独自インターセプターである「pkg.sample.LoginInterceptor」に、「login」という 名前をつけます。
(4) Struts2標準の「defaultStack」と独自インターセプターである「login」を 組み合わせた「defaultLoginStack」を新たに定義します。
(5) 更に、「defaultLoginStack」をこのパッケージのデフォルトのインターセプターとします。
(6) 未ログイン時に必ず「ログイン画面」に戻るようにするため、<global-results>を定義します。 インターセプターや各アクションクラス内で「return "login"」した場合には、 必ず「index.jsp」に遷移するように定義します。

 

index.jspの作成

 index.jspに以下の記述をします。

<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="Windows-31J"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Login Sample</title>
</head>
<body>
ログイン画面<br /><br />
<s:actionerror />
<s:form action="mainMenu.action">
<table border="1">
<tr>
<td>ユーザID</td> <td><s:textfield name="userid" value="" /></td>
</tr>
<tr>
<td>パスワード</td> <td><s:textfield name="passwd" value="" /></td>
</tr>
</table>
<s:submit value="ログイン" />
</s:form>
</body>
</html>

(1) <s:actionerror />タグには、ログイン認証時のエラーメッセージを出力します。
(2) <s:form>タグで、action="mainMenu.action"と指定しているため、ログインボタン押下時には 「MainMenuActionクラス」が呼び出されます。ただし、今回は自前のインターセプター群である 「defaultLoginStack」を定義しているため「LoginInterceptorクラス」がその前に割り込んで 呼び出されます。
(3) ユーザIDとパスワードのパラメタ名は、「userid」と「passwd」としています。

次へ

このサイトは、k2-s.comが提供するHTMLテンプレートを使用しています。
Copyright (C) 2007 まえば
トップ
セットアップ編
こんにちは編
参照画面編
更新画面編
Validation編
Struts Tags編 (未稿)
ログイン編