<目次>
(1) JSP Servletでセッションの有効期限を設定する方法
(1-1) セッションの有効期限設定の概要
(1-2) 方法1:web.xmlに追記する方法
(1-3) 方法2:プログラム内で指定する方法
(1) JSP Servletでセッションの有効期限を設定する方法
(1-1) セッションの有効期限設定の概要
セッション管理単位 | 内容 |
①アプリケーションサーバ単位 | 最上位の設定単位です。
TomcatやIIS等のアプリケーションサーバ単位にて、デフォルトのセッションのタイムアウト時間を指定しています。 |
②アプリケーション単位 | ①と③の間の設定単位です。
アプリケーション(JSP/Servletの場合は「動的WebProject」単位)に対して生成される全てのセッションに適用されるタイムアウト時間を設定できます。 「web.xml」にて設定を行います(⇒「方法1」にて解説) |
③セッション単位 | 最下位の設定単位です。
HttpSessionインターフェイス(Servlet API)のsetMaxInactiveInterval()メソッドを使って、プログラム中でもセッションタイムアウト時間を個別に変更する事ができます。 このメソッドが実行された特定のセッションに対して、指定したタイムアウト時間が個別に設定されます。 Servlet等にて設定を行います(⇒「方法2」にて解説) |
(1-2) 方法1:web.xmlに追記する方法
(表1)の②に相当する方法で、「WEB-INF」配下の「web.xml」に次の記述を行う事で、セッションタイムアウトを実現できます。
(構文)
<?xml version="1.0" encoding="UTF-8"?> <web-app ..[中略] ..> <!-- 中略 --> <session-config> <session-timeout>10</session-timeout> </session-config> <!-- 中略 --> </web-app>
(構文説明)
<session-config>タグでセットする値はInteger型で、セッションタイムアウトまでの時間を単位「分」で指定します。ここで設定した値は、このアプリにおいて生成される全てのセッションに対して有効となります。0以下を指定した場合は、コンテナのデフォルト設定が適用されます。
(図111)web.xmlの設定例
WEB-INFフォルダで右クリック⇒New⇒Otherと選択すると、次のNew画面が出るので「XML File」と検索すると出てきます。
(図113)web.xmlの新規作成
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <security-constraint> <web-resource-collection> <web-resource-name>Form Auth</web-resource-name> <url-pattern>/form_auth/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>admin-gui</role-name> <role-name>manager-gui</role-name> </auth-constraint> </security-constraint> <login-config> <auth-method>FORM</auth-method> <form-login-config> <form-login-page>/Login1.jsp</form-login-page> <form-error-page>/LoginError1.jsp</form-error-page> </form-login-config> </login-config> <security-role> <role-name>admin-gui</role-name> </security-role> <security-role> <role-name>manager-gui</role-name> </security-role> <!-- 今回追記する内容 --> <session-config> <session-timeout>1</session-timeout> </session-config> </web-app>
(1-3) 方法2:プログラム内で指定する方法
Session.setMaxInactiveInterval([秒数]);
JSPの場合はHttpSessionのインスタンスは暗黙オブジェクトとして利用出来るため、いきなり「session.setMaxInactiveInterval(600);」と記述する事ができます。
<% session.setMaxInactiveInterval(600); %>
(例:Servletの場合)10分=600秒
HttpSession session = request.getSession(); Session.setMaxInactiveInterval(600);