자 , 오늘은 37강 쿠키와 세션이고 오늘부터는 세션다루는 방법에 대해서 살펴보자
쿠키는 웹페이지 즉 우리가 만든 쿠키의 정보를 클라이언트 쪽에다가 저장하는 개념이 쿠키였다.
자 이번시간에는 세션에 대해서 다뤄보자
세션의 개요, 세션에 대한 정보를 의미를 알려주겠다.
세션은 클라이언트에 대한정보를 즉 브라우저(쿠키같이)에서 저장하는 것이 아니라..
서버에서 저장하는 것을 말한다. 즉
쿠키는 웹브라우저 자체내에 저장.
세션은 서버내에 저장
정도로 보면 될듯하다.
웹브라우저당 한개의 세션이 자동으로 웹 컨테이너에 저장된다.
웹컨테이너는 톰캣서버를 의미한다.
웹브라우저에 대한정보를 저장하고 있는 내용이 세션이다.
세션에는 어떤 메소드들이 있나?
이런 메소드들이 있다고 한다.
자세한 거는 아래 링크를 보자
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=jaeminstar&logNo=220971188882
세션은 그럼 언제 사용하나?
마찬가지로 세션도 쿠키처럼, 쿠키는 클라이언트 브라우저의 쿠키저장소에 저장이 되어있다.
세션은 서버에 저장되어있다.
세션을 쓰는 이유는 계속해서 페이지가 바뀌어도 데이터를 유지시키고 싶을때(예시: 쇼핑몰 -장바구니),
사용한다.
세션이라는 저장공간을 잘 이용하자.!
자 세션에 대해서 알아보기 전에 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>
'웹 프로그래밍(풀스택-->java) > 웹프로그래밍(백엔드-->java)' 카테고리의 다른 글
32. Jsp 게시판 - 시스템구조 (0) | 2021.12.05 |
---|---|
31. Jsp Cookie & Sessions 5&6 (0) | 2021.12.03 |
29. Jsp Cookie & Session3 (0) | 2021.12.02 |
28. Jsp Cookies & Session 2 (0) | 2021.12.02 |
27. Jsp Cookies & Session 1 (0) | 2021.12.02 |