본문 바로가기
JSP/JSP기초

JSP(ch13) 세션(session)사용방법

by 미눅스[멘토] 2023. 7. 13.
728x90

 

 

 

Page영역

request영역

session영역

apllication영역이 있는데

모두 Scope로 접근이 가능하다

ex) sessionScope.userId

 

 

jsp파일 생성

 

session01.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<!-- 폼 페이지, 폼 태그 
	요청URL : session01_process.jsp
	요청파라미터 : {id=admin&passwd = java}
	-->
	<h3>${sessionScope.userId}</h3>
	<h3>${sessionScope.userPw}</h3>
	<form action="session01_process.jsp" method="post">
		<!-- 폼 데이터 -->
		<p>아이디 : <input type="text" name="id" value='<%=session.getAttribute("userId") %>' required /></p>
		<p>비밀번호 : <input type="password" name="passwd" value='<%=session.getAttribute("userPw") %>' required /></p>
		<p><input type="submit" name="전송" /></p>
	</form>
	
</body>
</html>

session01_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<% //스크립틀릿
//요청 URL : session01_process.jsp
//요청파라미터 : {id = admin&passwd = java}
	//한글 인코딩 처리
	request.setCharacterEncoding("UTF-8");
	
	String user_id = request.getParameter("id");	//admin
	String user_pw = request.getParameter("passwd");	//java
	
	
	out.print("session고유아이디(웹브라우저별1개) : " + session.getId() + "<br />");
	if(user_id.equals("admin")&&user_pw.equals("java")){
		session.setAttribute("userId", user_id);
		session.setAttribute("userPw", user_pw);
		out.print("<p>세션 설정 성공</p>");
		out.print("<p>" + user_id + "님 환영합니다.</p>");
	}else{
		out.print("<p>세션 설정 실패!</p>");
		out.print("<a href='session01.jsp'>되돌아 가기</a>");
	}
%>
</body>
</html>

 

파일 작성 후 확인

 

 

 

크롬에서 로그인 하고

edge 에서도 로그인하면 

크롬에서의 세션과

edge의 세션이 다르다.

 

 

 

 

 

 

다시 되돌아가보면 저장되어있던 세션값이 출력된다.

 

 

 

 

 


session-2_process.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<% //스크립틀릿
//요청 URL : session01_process.jsp
//요청파라미터 : {id = admin&passwd = java}
	//한글 인코딩 처리
	request.setCharacterEncoding("UTF-8");
	
	String user_id = request.getParameter("id");	//admin
	String user_pw = request.getParameter("passwd");	//java
	
	
	out.print("session고유아이디(웹브라우저별1개) : " + session.getId() + "<br />");
	if(user_id.equals("admin")&&user_pw.equals("java")){
		HttpSession httpsession = request.getSession();
		//동일한 웹 브라우저 내 정보 공유		
		session.setAttribute("userId", user_id);
		session.setAttribute("userPw", user_pw);
		out.print("<p>세션 설정 성공</p>");
		out.print("여기는session02");
		out.print("<p>" + user_id + "님 환영합니다.</p>");
		
		out.print("<a href='session01.jsp'>되돌아 가기</a>");
	}else{
		out.print("<p>세션 설정 실패!</p>");
		out.print("<a href='session01.jsp'>되돌아 가기</a>");
	}
%>
</body>
</html>

HttpSession으로 값을 가져와도 결과값은 같다.

 

 

 

 

 


<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
	<%//스크립틀릿
	
	//session.setAttribute("userID", user_id);
	//session.setAttribute("userID", user_pw);
	
	//리턴타입은 Object이므로 하위의 String 타입으로 다운 캐스팅
	String user_id = (String)session.getAttribute("userId");
	String user_pw = (String)session.getAttribute("userPw");
	
	out.print("설정된 세션 속성 값[1] : " + user_id + "<br />");
	out.print("설정된 세션 속성 값[2] : " + user_pw + "<br />");
	%>
	
</body>
</html>

 

 


 

 

 

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<%
	/*
	session.setAttribute("속성명",데이터)
	데이터 : Object개체 타입만 가능합. int(x), double(x), char(x)
	*/
	
	int a = 10;
	double b = 20.2;
	char c = 'a';
	session.setAttribute("test", a);
	session.setAttribute("test2", b);
	session.setAttribute("test3", c);
	
	
	out.print("test : " + session.getAttribute("test") + "<br />");
	out.print("test2 : " + session.getAttribute("test2") + "<br />");
	out.print("test3 : " + session.getAttribute("test3") + "<br />");
	
	String name; //세션 속성 명
	String value; //세션 값
	//session 내장 객체 내 어떤 속성명들이 있는지?
	Enumeration en = session.getAttributeNames();
	//세션 속성 명이 있을때 까지만 반복
	while(en.hasMoreElements()){
		name = en.nextElement().toString();
		value = session.getAttribute(name).toString();
		
		out.print("설정된 세션 속성 명 : " + name + "<br />");
		out.print("설정된 세션 속성 값 : " + value + "<br />");
	}
%>
</body>
</html>