▶ 이번 시간에는 Cookie의 단점을 대신하기 위해 주로 쓰이는
Session의 개념과 사용법에 대해서 알아보겠습니다.
🔑 목차
🎉 1. Session 이란?
🎉 2. Session 구현
🚩 1. Session 이란?
▶ 현재 보안 관련 문제 때문에 점점 쓰이지 않는 Cookie에 비해서,
(Server(Web Container)가 만들고, Clinet/Server에서 모두 저장/사용)
이러한 단점을 보완한 채로 클라이언트와 서버의 연결을 유지시켜주는
방법 중 하나로 Session이 있다.
▶ Cookie는 보안이 취약하기에 요즘은 Session을 더 사용하는 추세이다.
▶ 이 역시 Http protocol이기 때문에, 1회 request/response 후 연결 해제된다.
▶ Cookie가 Client 측에 저장/사용되는 반면,
Session은 Server 측에 저장/사용된다.
▶ Cookie 파트에서 설명했던 것과 유사하게 Session 또한
Session을 null 값과 비교하는 식으로 주로 사용된다.
🚩 2. Session 구현
▶ 우선 코드 먼저 살펴보자.
< login.jsp > (JSP 파일) >
...
<body>
<%
if(session.getAttribute("memberId") != null){
response.sendRedirect("loginOk.jsp");
}
%>
<form action="loginCon" method="post">
ID : <input type=text name="mId"><br>
PW : <input type=text name="mPw"><br>
<input type=submit value="login">
</form>
</body>
▶ 로그인 화면을 담당할 .jsp 파일은 위와 같다.
if(session.getAttribute("memberId") != null){
response.sendRedirect("loginOk.jsp");
}
▶ 내장 session 객체에 name이 memberId인 attribute가 저장되어 있다면, (if)
바로 loginOk.jsp (로그인 완료 페이지) 로 강제 이동시킨다.
<form> action="loginCon" method="POST"
...
</form>
▶ “login” 버튼 클릭 시, LoginCon.java라는 Servlet으로 전송한다.
< LoginCon.java > (Servlet 파일)
...
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String mId = request.getParameter("mId");
String mPw = request.getParameter("mPw");
PrintWriter out = response.getWriter();
out.print("Id : " + mId + "<br>");
out.print("Pw : " + mPw + "<br>");
HttpSession session = request.getSession();
session.setAttribute("memberId", mId);
response.sendRedirect("loginOk.jsp");
}
▶ 위는, 로그인 버튼 클릭 시 작동할 Servlet 코드이다.
HttpSession session = request.getSession();
session.setAttribute("memberId", mId);
▶ login.jsp 화면에서 사용자가 입력한 Id 정보를
session에 “memberId”라는 이름의 attribute로 저장한다.
response.sendRedirect("loginOk.jsp");
▶ 로그인 완료 화면으로 강제 이동시킨다.
< loginOk.jsp > (JSP 파일)
...
<body>
<%
session = request.getSession();
out.print("session : "+session.getAttribute("memberId")+"<br>");
%>
<form action="logoutCon" method="post">
<input type="submit" value="logout">
</form>
</body>
▶ 위는, 로그인이 정상 처리 되었을 때, 이동할 jsp 페이지이다.
session = request.getSession();
out.print("session : "+session.getAttribute("memberId")+"<br>");
▶ session에 “memberId”라는 이름으로 저장된 attribute를 출력한다. (사용자 Id)
<form action="logoutCon" method="post">
<input type="submit" value="logout">
</form>
▶ “logout”버튼 클릭 시, “logoutCon”이라는 Servlet을 호출한다.
< LogoutCon.java > (Servlet 파일)
...
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.jsp");
}
▶ 위는, 로그아웃 클릭 시, 작동하게 될 Servlet 코드이다.
HttpSession session = request.getSession();
session.invalidate();
▶ request 객체로부터 내장 session 객체를 가져오고,
그 session을 제거한다. (invalidate = 제거하다)
response.sendRedirect("login.jsp");
▶ 첫 login 화면(login.jsp)로 되돌려 보낸다.
- loginOk.jsp 페이지로 강제 이동 (session이 존재하기 때문에, if문)
▶ login.jsp 으로 이동
✋ 다음 포스팅에서는 한글 처리에 대해서 작성하도록 하겠습니다.
'(2022) 공부 (Study)' 카테고리의 다른 글
🔥 Spring Framework - #1 Spring 개요 (0) | 2020.12.31 |
---|---|
🔥 JSP 기본 정리 - #2 개발 환경 설정 (Eclipse) (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #15 한글 처리 방법 (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #13 Cookie (0) | 2020.12.31 |
🔥 JSP 기본 정리 - #1 웹 프로그램 개요 (0) | 2020.12.30 |