💨

【初心者向け/ITスクール49日】JSPでCookieとSessionを扱う方法

2023/09/19に公開

はじめに

今日は、ITスクールに通った49日目の日で、今日学んだ知識を記事にシェアしたいと思います。本記事が、ITを勉強を始めた方々にもロードマップになればいいと思います。

49日目は、CookieとSessionについて、勉強し、ログインシステムを作る実習をしました。

Cookie&Session

タイプ 依存関係 データータイプ 所属 スコープ 呼び出すオブジェクト
Cookie Model String Browser 設定時間、もしくは直接削除するまで response
Session Model Object Server(attribute) 設定時間、もしくはブラウザーの終了まで request
cookie:${cookie.d.value } 
session:${sessionScope.e } 

ログイン時は、Sessionを活用し、Memberオブジェクトを生成することでログインシステムが成り立てることが分かりました。とても不思議でした。


String d = "500000";
Cookie ck = new Cookie("d", d);   
ck.setMaxAge(15);            //cookieの保存時間を15秒に設定 
res.addCookie(ck);      //response所属にadd(PCに保存)

HttpSession hs = req.getSession(); 
hs.setMaxInactiveInterval(15);     //sessionの維持時間を15秒維持
hs.setAttribute("e", e);           //session 所属のattribute


Login

Loginの場合、基本的にPOSTになりますので、requestからUTF-8にEncodingすることを忘れずにやってみましょう!

public static void login(HttpServletRequest req, HttpServletResponse res) {
	try {
	req.setCharacterEncoding("UTF-8");
	String id = req.getParameter("id");
	String pw = req.getParameter("pw");
			
	//Cookieは保安上、危ないので、Sessionを活用します。
	//Sessionでログインすれば、サイトのどこでも維持されます。
	if(id.equals("help") && pw.equals("me")) {
		Member m = new Member(id,pw);
		req.getSession().setAttribute("m", m);
		req.getSession().setMaxInactiveInterval(10);
	    }
	    
	Cookie c = new Cookie("lastLoginID",id);
	c.setMaxAge(600);
	res.addCookie(c);
			
	}catch(Exception e) {
		
		}
	}
}
public static boolean loginCheck(HttpServletRequest req) {
	Member m =(Member) req.getSession().getAttribute("m");
	return(m != null);
	}

SessionはObjectですので、ダウンキャストすることがポイントです!

Discussion