본문 바로가기
WEB/JSP

Session 객체

by 둥바 2022. 7. 18.

변수 영역

pageContext(현 페이지) < request(요청, 응답) < session(사용자단위 : 로그인~로그아웃) < application (서버단위)

 

예제) 세션과 리퀘스트 변수 영역 차이 확인하기

1. session영역과 리퀘스트 영역에 각각 변수 저장하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Session.jsp</title>
<script src=../include/jquery-3.6.0.min.js></script>
</head>
<body>
<%
//쓰여지는 변수가 살아있는 영역이 다르다(네가지 영역)
//pageContext(현 페이지에만 변수 활성화) < request(요청,응답 페이지)
//< session(사용자단 : 로그인~로그아웃까지) < application(서버 단위)
//request,session이 가장 많이 사용되는 객체이다.

//session 영역에 변수 저장
session.setAttribute("name","김");//session("변수명","값":object)
session.setAttribute("age",20);

//request 영역에 변수 저장
request.setAttribute("name","이");
request.setAttribute("age",25);

//페이지 이동
//1)리다이렉트 : sendRedirect() - url주소 변경, 소량의 데이터
//2)포워드 : forward() - url주소 고정, 대량의 데이터
RequestDispatcher rd = request.getRequestDispatcher("session_result.jsp");
rd.forward(request, response);
%>
</body>
</html>

 

2. session영역과 request영역의 변수를 꺼내어 보여주는 페이지

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>session_result.jsp</title>
<script src=../include/jquery-3.6.0.min.js></script>
</head>
<body>
<%

//세션에 저장된 값 꺼내오기
String name = (String)session.getAttribute("name"); //Object타입이 값이므로 형변환
int age = (int)session.getAttribute("age");

%>

[세션에 저장한 형태로 넘어온 데이터]<br>
이름 : <%= name %>, 나이 : <%= age %><br>
세션ID : <%= session.getId() %><br>
<!-- 세션 id는 서버에서 랜덤 생성, 브라우저마다 다르게 생성 -->

<% 
//리퀘스트에 저장된 값 꺼내오기
String name2 = (String)request.getAttribute("name");
int age2 = (int)request.getAttribute("age");

%>


[리퀘스트에 저장한 형태로 넘어온 데이터]<br>
이름 : <%= name2 %>, 나이 : <%= age2 %><br>

<a href="session_result2.jsp">페이지가 바뀔 때 세션과 request값 확인</a>





</body>
</html>

 

3. 링크를 타고 이동했을 때 session과 request에 저장된 변수값이 남아있는 지 확인

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src=../include/jquery-3.6.0.min.js></script>
</head>
<body>
[session으로 넘어온 값]<br>
이름  : <%= session.getAttribute("name") %>,
나이 : <%= session.getAttribute("age") %><br>
<hr>

[request로 넘어온 값]<br>
이름  : <%= request.getAttribute("name") %>,
나이 : <%= request.getAttribute("age") %><br>
<hr>

</body>
</html>

이를 통해 알 수 있는 것은, 요청-응답의 페이지까지에서는 request에 저장된 변수 값이 남아있었지만 새로운 페이지로 이동했을 때는 request에 저장된 변수값이 없다는 것! (그와 달리 session은 세션값을 지우기 전까지는 변수 값이 남아있다)

 

세션을 이용해서 로그인 프로그램 만들기

프로그램의 흐름순서 ( 6개 파일 )

1. sessionTestForm.jsp (로그인 폼)

2. session_success.jsp(성공적으로 로그인 했을 때, 서비스 페이지 - 로그아웃 버튼도 존재)

3. session_check.jsp(세션 값을 체크해주는 페이지 - url만 치고 들어오는 것을 방지하기 위함

=> 모든 요청은 항상 컨트롤러에게 보낸다.

4. LoginController.java ( Controller Servlet )

모델영역

5. MemberDAO.java (DB에 접근하여 값을 받아오기)

6. MemberDTO.java 

----

로그인 성공을 하게 되면, session_success.jsp로 이동

만일 로그인 실패 하게 되면, sessionTestForm.jsp(로그인 폼)으로 다시 돌아감

 

 

'WEB > JSP' 카테고리의 다른 글

트랜잭션 처리, 배치 처리  (0) 2022.07.22
JDBC - DB연결해서 멤버 리스트 출력, 삽입, 삭제하기  (0) 2022.07.22
웹 프로젝트 생성 및 DB연결  (0) 2022.07.17
JSP /SERVLET 개념 정리  (0) 2022.07.17
JSP 예제  (0) 2022.07.13