GroupSessionではユーザ識別のためにセッション情報を保持しています。
ここではのそのセッション情報の内容や取得方法について説明します。
このドキュメントは、Java、Apache Struts、Jakarta Antについての知識がある事を前提とします。
セッション情報を各プラグイン側で取得する方法を「Hello World!」プラグインを作成する方法で作成したソースファイルを元に説明します。
package jp.groupsession.v2.newplugin.helloworld;
import java.sql.Connection;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jp.groupsession.v2.cmn.GSConst;
import jp.groupsession.v2.cmn.dao.BaseUserModel;
import jp.groupsession.v2.struts.AbstractGsAction;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* <br>[機 能] HelloWorldのアクションクラス
* <br>[解 説]
* <br>[備 考]
*
* @author JTS
*/
public class HelloWorldAction extends AbstractGsAction {
/**
* <br>[機 能] アクションを実行する
* <br>[解 説]
* <br>[備 考]
* @param map ActionMapping
* @param form ActionForm
* @param req HttpServletRequest
* @param res HttpServletResponse
* @param con DB Connection
* @return ActionForward
* @throws Exception 実行時例外
*/
public ActionForward executeAction(ActionMapping map,
ActionForm form,
HttpServletRequest req,
HttpServletResponse res,
Connection con)
throws Exception {
//HttpServletRequestからHttpSessionを取得します。
HttpSession session = req.getSession();
//セッション情報からログインユーザの情報を取得します。
BaseUserModel usModel =
(BaseUserModel) session.getAttribute(GSConst.SESSION_KEY);
return map.getInputForward();
}
}
セッション情報をjspファイル内で取得する方法を「Hello World!」プラグインを作成する方法で作成したjspファイルを元に説明します。
<%@ page pageEncoding="Windows-31J"
contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-nested" prefix="nested" %>
<% String key = jp.groupsession.v2.cmn.GSConst.SESSION_KEY; %>
<html:html>
<head>
<title>[GroupSession] HelloWorld</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link rel=stylesheet href='../common/css/default.css' type='text/css'>
</head>
<body class="body_03">
<html:form action="/newplugin/helloworld">
<%@ include file="/WEB-INF/plugin/common/jsp/header001.jsp" %>
<table width="100%">
<tr>
<td width="100%" align="center">
<p>Hello
<!-- ユーザ名:姓 -->
<bean:write name="<%= key %>" scope="session" property="usisei" />
<!-- ユーザ名:名 -->
<bean:write name="<%= key %>" scope="session" property="usimei" />
<!-- ログインID -->
(<bean:write name="<%= key %>" scope="session" property="lgid" />)
</p>
</td>
</tr>
</table>
<%@ include file="/WEB-INF/plugin/common/jsp/footer001.jsp" %>
</html:form>
</body>
</html:html>
セッション情報にはjp.groupsession.v2.cmn.dao.BaseUserModelが格納されています。
BaseUserModelの内容は以下の表の通りです。
| 項目 | データ型 | Getter名 | 説明 |
|---|---|---|---|
| ユーザSID | int | getUsrsid() | ユーザを識別するキーとなるIDです。(ログインIDではありません) |
| ログインID | String | getLgid() | ログインIDです。 |
| 姓 | String | getUsisei() | ログインユーザの姓です。 |
| 名 | String | getUsimei() | ログインユーザの名です。 |
| ユーザ区分 | boolean | getAdminFlg() | 管理者権限の有無です。 true:管理者, false:一般 |
| 前回ログイン時間 | String | getLstLogintime() | 前回ログインした日時文字列です。 |
| モバイル使用可否 | int | getMblUse() | GSモバイルの使用可/不可です。 |
| テーマファイルパス | String | getCtmPath() | 画面のテーマに関するファイルパス。 |
GroupSessionのセッション情報有効期限は12時間に設定されています。
リクエスト毎に有効期限は12時間後に更新されますが、セッションが切れると再ログインする必要があります。