티스토리 뷰
세션은 쿠키와 상당히 밀접한 관계입니다. 따라서 서론은 생략하고 정의와 차이점을 시작으로 공부해 보겠습니다.
(참고 : Cookie)
Session ?
세션도 쿠키와 마찬가지로 http 프로토콜의 약점을 보안하기 위한 방법입니다. 쿠키와 마찬가지로 연결유지를 위한 수단인데,
중요한 차이점은, 쿠키는 연결정보를 클라이언트에 저장하는 반면 세션은 서버에 저장합니다.
이로인해 둘의 특징이 갈리게 됩니다.
▶ 서버보다는 개인 PC를 사용하는 클라이언트가 해킹당할 위험이 더 크기때문에 서버에 정보를 저장하는 세션이 쿠키보다 보안성에 있어서 우월합니다.
▶ 다만 속도에 있어서는 클라이언트가 브라우저에 접속할 때 해당 브라우저에 저장되어 있는 쿠키를 이용하는 것이 더 빠릅니다. 하지만 그 차이는 미미합니다.
그렇다면 세션만 사용하면 되지 왜 쿠키를 사용할까요 ?
세션은 서버에 정보를 저장하기 때문에 서버의 리소스를 사용합니다. 이 리소스들은 서버의 성능에 직관되는 자원들이고 이를 남용하게 되면 서버 입장에서 상당히 부담스럽고, 여차하면 성능의 저하까지 이를 수 있기 때문에 세션이 좋다고 여기저기 막 사용할 수 없는 노릇입니다.
Session 구현
1 2 3 4 5 6 7 8 9 | <% if(session.getAttribute("userID") != null) response.sendRedirect("loginOk.jsp"); %> <form action="loginCon" method="post"> ID : <input type ="text" name="userID"><br> PW : <input type ="password" name="userPW"><br> <input type="submit" value="login"> </form> | cs |
LoginCon.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | @WebServlet("/loginCon") public class LoginCon extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); String userID = request.getParameter("userID"); String userPW = request.getParameter("userPW"); out.print("userID : " + userID); out.print("userPW : " + userPW); HttpSession session = request.getSession(); session.setAttribute("userID", userID); response.sendRedirect("loginOk.jsp"); } | cs |
쿠키와 다른점으로는 HttpSession 객체를 생성한다는 점입니다. 그리고 session을 검사할 때 배열과 반복문을 사용하지 않아 비교적 간단합니다.(참고로 post방식을 사용했지만 doGet에서 코딩을 하는 이유는 저번에도 말했듯이 doPost 메소드에서 doGet(request, response)를 통해 객체를 파라미터로 전달했기 때문입니다.)
loginOk.jsp
1 2 3 4 5 6 7 8 | <% session = request.getSession(); out.print("userID : " + Session.getAttribute("userID") + "<br>"); %> <form action="logoutCon" method="post"> <input type="submit" value="logout"> </form> | cs |
session 객체를 통해 세션정보를 출력해 주고 세션을 삭제하기 위한 logout을 만들어 주겠습니다.
logoutCon.java
1 2 3 4 5 6 7 8 9 10 11 | @WebServlet("/logoutCon") public class LoginCon extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(); session.invalidate(); response.sendRedirect("login.jsp"); } | cs |
세션을 삭제하는 방법은 간단하게 invalidate() 함수를 호출해 주면 됩니다.
'JSP&Servlet' 카테고리의 다른 글
Cookie (0) | 2019.01.23 |
---|---|
Servlet 데이터 공유 (1) | 2019.01.22 |
JSP 내장객체 (0) | 2019.01.21 |
JSP request, response (0) | 2019.01.20 |
JSP 스크립트 (0) | 2019.01.19 |
- Total
- Today
- Yesterday
- 프로그래머스
- 방명록 프로젝트
- spring mvc
- 생활코딩 javascript
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 스프링 컨테이너
- 스프링 mvc
- 선형 회귀
- jsp
- Gradle
- Spring Boot
- Computer_Networking_A_Top-Down_Approach
- 쉘 코드
- 지옥에서 온 git
- 스프링 테스트
- Python Cookbook
- 쉽게 배우는 운영체제
- Spring Data JPA
- 패킷 스위칭
- JPA
- Spring
- 김영환
- 파이썬 for Beginner 연습문제
- git merge
- git branch
- 파이썬 for Beginner 솔루션
- 스프링
- git
- Thymeleaf
- 운영체제 반효경
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |