Struts2を使ったWEBサイト開発

ログイン編

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

 

ListUserAction.javaの作成

 ListUserAction.javaに以下の記述をします。

/*
* ユーザ一覧表示画面サンプル
*/
package pkg.sample;
import java.util.ArrayList;
import org.apache.struts2.config.ParentPackage;
import com.opensymphony.xwork2.ActionSupport;
/*
* ユーザ一覧表示アクションクラス
*/
@ParentPackage(value="mydefault")
public class ListUserAction extends ActionSupport {
  private static final long serialVersionUID = 1L;
  public ArrayList<UserBean> userlist = new ArrayList<UserBean>();
  // 「/listUser.action」を呼び出した際に、自動的にこの
  // execute()メソッドが実行される。
  public String execute() {
    UserDAO userdao = UserDAO.getInstance();
    userlist.addAll( userdao.selectAll() );
    // 「SUCCESS」を返却すると、自動的に「listUser-success.jsp」が
    // 呼び出される。もし存在しなければ「listUser.jsp」が呼び出される。
    return SUCCESS;
  }
  public ArrayList<UserBean> getUserlist() {
   // jspから<s:property value="userlist" />で参照可能。
   return userlist;
  }
  public int getUserCount() {
   // jspから<s:property value="userCount" />で参照可能。
    return userlist.size();
  }
}

(1) 「@ParentPackage」アノテーションを指定して、独自パッケージである 「mydefault」を使用することを宣言します。
※この記述がないと、struts標準パッケージであるstruts-defaultが 適用されてしまいます。
(2) 「/ListUser.action」の呼出時に実行される execute()メソッドでは UserDAOを検索して登録中のユーザ一覧を取得し、ArrayListであるuserlist変数に 格納しています。
(3) その後「return SUCCESS;」により、「listUser-success.jsp」を表示します。

 

listUser-success.jspの作成

 listUser-success.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>List User</title>
</head>
<body>
ユーザ一覧<br /><br />
<!-- ListUserAction.getUserCount()が呼び出される。 -->
ユーザ数 : <s:property value="userCount" />人 <br /><br />
<table border="1">
  <tr>
    <th>ID</th>
    <th>ユーザID</th>
    <th>パスワード</th>
    <th>氏名</th>
    <th>出身地</th>
    <th> </th>
    <th> </th>
  </tr>
  <!-- ListUserAction.getUserlist()が呼び出され全データを繰り返しループ。-->
  <s:iterator value="userlist">
  <tr>
    <td><s:property value="id" /></td>
    <td><s:property value="userid" /></td>
    <td><s:property value="passwd" /></td>
    <td><s:property value="name" /></td>
    <td><s:property value="pref" /></td>
    <!--  url変数に、updateUser!input?user.id=「getId()値」 の -->
    <!-- URLを格納                      -->
    <s:url id="url" action="updateUser!input">
    <s:param name="user.id" value="id" />
    </s:url>
    <td><s:a href="%{url}">更新</s:a></td>
    <!--  url変数に、deleteUser!confirm?user.id=「getId()値」 の -->
    <!-- URLを格納                       -->
    <s:url id="url" action="deleteUser!confirm">
     <s:param name="user.id" value="id" />
    </s:url>
    <td><s:a href="%{url}">削除</s:a></td>
  </tr>
</s:iterator>
</table>
</body>
</html>

(1) <s:property value="userCount" />タグを記述することで、ListUserAction.getUserCount()が 呼び出され、その結果が表示されます。
(2) <s:iterator value="userlist">タグを記述することで、ListUserAction.getUserlist()が呼び出され、 全データを繰り返しループします。
(3) 「更新」リンクを押下すると、「updateUser!input?user.id=[id]」という呼び出しが行われ、 「UpdateUserActionクラスのinput()メソッド」が呼び出されます。
(3) 「削除」リンクを押下すると、「deleteUser!confirm?user.id=[id]」という呼び出しが行われ、 「DeleteUserActionクラスのconfirm()メソッド」が呼び出されます。

次へ

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