본문 바로가기
웹 프로그래밍(풀스택-->java)/웹프로그래밍(백엔드-->java)

30. Jsp Cookies & Session 4

by 백엔드개발자0107 2021. 12. 3.

자 , 오늘은 37강 쿠키와 세션이고 오늘부터는 세션다루는 방법에 대해서 살펴보자

 

쿠키는 웹페이지 즉 우리가 만든 쿠키의 정보를 클라이언트 쪽에다가 저장하는 개념이 쿠키였다.

 

자 이번시간에는 세션에 대해서 다뤄보자

 

세션의 개요, 세션에 대한 정보를 의미를 알려주겠다.

 

세션은 클라이언트에 대한정보를 즉 브라우저(쿠키같이)에서 저장하는 것이 아니라..

 

서버에서 저장하는 것을 말한다. 즉

 


쿠키는 웹브라우저 자체내에 저장.

 

세션은 서버내에 저장


정도로 보면 될듯하다.

 

웹브라우저당 한개의  세션이 자동으로 웹 컨테이너에 저장된다.

 

웹컨테이너는 톰캣서버를 의미한다.

 

웹브라우저에 대한정보를 저장하고 있는 내용이 세션이다.

 

세션에는 어떤 메소드들이 있나?

 

이런 메소드들이 있다고 한다.

 

자세한 거는 아래 링크를 보자

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jaeminstar&logNo=220971188882 

 

[JSP] session 객체의 메소드

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<%@ page l...

blog.naver.com

 

세션은 그럼 언제 사용하나?

 

마찬가지로 세션도 쿠키처럼, 쿠키는 클라이언트 브라우저의 쿠키저장소에 저장이 되어있다.

 

세션은 서버에 저장되어있다. 

 

세션을 쓰는 이유는 계속해서 페이지가 바뀌어도 데이터를 유지시키고 싶을때(예시: 쇼핑몰 -장바구니),

 

사용한다.

 

세션이라는 저장공간을 잘 이용하자.!

 

자 세션에 대해서 알아보기 전에 request성질에 대해서 먼저 알아보자,

 

request는 한브라우저에서 다른 한 브라우저까지는 데이터를 넘겨주지만, 한번에 가장 처음 넘겨줬던 데이터를

 

다른 한 브라우저에서 또 다른 한 브라우저까지 넘겨줄수가 없다.

 

그래서 링크(url)부분에 ?달고 key와 value를 넣어줬던 것이다.

 

하지만 session은 다르다.

 

SessionLoginForm.jsp

 

<%@ 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>
</head>
<body>






	<center>
	<h2> 세션 로그인 </h2>
	<form action="SessionLoginProc.jsp" method="post">
	<table width="400" border ="1">
	<tr height="50">
	<td width="150">아이디 </td>
	<td width="250"> <input type="text" name="id" > </td>
	</tr>
	
		<tr height="50">
	<td width="150">패스워드 </td>
	<td width="250"> <input type="text" name="pass"> </td>
	</tr> 
	
		<tr height="50">
	<td colspan="2" align="center"> <input type="checkbox" name="save" value="1"> 아이디 저장  </td>
	</tr>
	
	<tr height="50">
	<td colspan="2" align="center"> <input type="submit" value="로그인"> </td>
	</tr>  
	  
	</table>
	
	</form>
	</center>



</body>
</html>

 

SessionLoginProc.jsp

 

<%@ 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>
</head>
<body>

<center>

<h2>세션로그인 처리 1 </h2>


<%
request.setCharacterEncoding("UTF-8");

String id = request.getParameter("id");
String pass = request.getParameter("pass");



%>


<h2>당신의 아이디는 <%=id %>입니다. </h2>
<a href="SessionLoginProc2.jsp">다음페이지로 이동 </a>
</center>

</body>
</html>

 

 

SessionLoginProc2.jsp

 

<%@ 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>
</head>
<body>

<center>

<h2>세션로그인 처리 2</h2>


<%
request.setCharacterEncoding("UTF-8");

String id = request.getParameter("id");
String pass = request.getParameter("pass");



%>


<h2>당신의 아이디는 <%=id %>입니다. </h2>

</center>


</body>
</html>

 

 

위 내용이 아까 말한 request의 단점의 예시이다.

 

url에 데이터를 넘겨주면 아이디와 패스워드가 다 드러나기 떄문에 노출이 되서 공격을 받을수 있다.

 

고로 그러면 안된다.

 

그래서 이래서 세션을 사용해야만 한다.

 

SessionLoginProc.jsp

 

<%@ 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>
</head>
<body>

<center>

<h2>세션로그인 처리 1 </h2>


<%
request.setCharacterEncoding("UTF-8");


//사용자로부터 데이터를 읽어드림
String id = request.getParameter("id");
String pass = request.getParameter("pass");

//세션은 내장객체이기 떄문에 클래스 선언필요없이 그냥 바로 session쓴다.
//아이디와 패스워드 저장 
session.setAttribute("id", id);
session.setAttribute("pass", pass);

//세션의 유지시간 설정 
session.setMaxInactiveInterval(60);
%>


<h2>당신의 아이디는 <%=id %>입니다. </h2>
<a href="SessionLoginProc2.jsp">다음페이지로 이동 </a>
</center>

</body>
</html>

SessionLoginProc2.jsp

 

<%@page import="com.mysql.cj.Session"%>
<%@ 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>
</head>
<body>

<center>

<h2>세션로그인 처리 2</h2>


<%
//세션을 이용하여 데이트를 불러옴 
String id = (String)session.getAttribute("id");
String pass = (String)session.getAttribute("pass");


%>


<h2>당신의 아이디는 <%=id %>입니다. </h2>

</center>


</body>
</html>