Java サーブレットのセッションのサンプル(getSession)

Javaのサーブレットのセッションのサンプルです。

確認環境
・Windows10
・Eclipse4.6  (JavaEE)
・apache-tomcat-8.0.39

目次

環境

EclipseのTest1.javaにコードを書いています。

アクセスするURLは以下です。
http://localhost:8080/test2/testjava

 

セッションのサンプル

ブラウザを更新すると文字と数値が表示されます。数値は更新毎に1増加します。

4回更新をすると37行目のinvalidateメソッドでセッションが切れendと表示します。
更新して5秒を超えて何もしないと22行目のsetMaxInactiveIntervalメソッドでセッションが切れます。

ブラウザの種類が違うとセッションが別になります。(例:chromeとFireFox)
13行目の/testjavaは、URLでアクセスする時に使用します。

package test1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/testjava")
public class Test1 extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, 
			HttpServletResponse response)
			throws ServletException, IOException {
		try{
			HttpSession hs = request.getSession();
			hs.setMaxInactiveInterval(5); //5秒
			
			String name = (String)hs.getAttribute("name");
			Integer cnt = (Integer)hs.getAttribute("count");

			if(hs.isNew()){
				cnt = 0;
				name = "First time";
			}else{
				cnt = cnt + 1;
			}
			
			PrintWriter pw = response.getWriter();
			
			if(cnt==3){
				hs.invalidate();
				pw.println("end");
			}else{
				hs.setAttribute("count", cnt);
				hs.setAttribute("name", "test1");	
				pw.println("name=" + name + "," + "cnt=" + cnt);
			}		
		}
		catch(Exception e){
			e.printStackTrace();
		}
	}
}

 

HttpSession getSession()

上記21行目のgetSessionメソッドです。
リクエストに紐付いているセッションを返します。
リクエストがセッションを持たない場合セッションを作ります。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpServletRequest.html#getSession()

 

void setMaxInactiveInterval(int interval)

上記22行目のsetMaxInactiveIntervalメソッドです。
セッションを無効にするまでのクライアント要求の間隔を秒単位で指定します。
ゼロまたはマイナスの値を指定すると、セッションはタイムアウトしません。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpSession.html#setMaxInactiveInterval(int)

 

java.lang.Object getAttribute(java.lang.String name)

上記24,25行目のgetAttributeメソッドです。
Objectで返します。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletRequest.html#getAttribute(java.lang.String)

 

isNew()

上記27行目のisNewメソッドです。
クライアントがセッションをまだ認識していない場合trueを返します。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpSession.html#isNew()

 

void invalidate()

上記37行目のinvalidateメソッドです。
セッションを無効にします。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpSession.html#invalidate()

 

void setAttribute(java.lang.String name,java.lang.Object value)

上記40,41行目のsetAttributeメソッドです。
セッションに値をセットします。
https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/HttpSession.html#setAttribute(java.lang.String,%20java.lang.Object)

関連の記事

Java JSTLのカスタムタグの導入と使用例のサンプル(core,i18n)
Java サーブレット・JavaBeans・jspが連携するサンプル

△上に戻る