cookie(쿠키)가 클라이언트에 연결 정보를 저장하는 것이라면 session(세션)은 서버에 연결정보를 저장하는 것을 의미합니다.
http프로토콜의 단점으로 클라이언트가 서버에 요청을하고 서버가 응답을 하면 연결을 해제합니다.
이렇게 연결을 해제해버리면 로그인정보들이 다 날라갈수 있기 때문에 그 연결정보를 유지시켜주기위해 쿠키를 사용하기도 했습니다.
하지만 쿠키는 보안에 취약할수가 있는데 세션은 서버에 정보를 저장하기 때문에 쿠키에 비해 보안에 좋다고 말할수 있겠습니다.
세션을 구현하는 방법은 세션이 null인지 아닌지 확인을 하게 되고 null이라면 로그인을 유도하고 null이 아니라면 로그인 정보를 출력하게됩니다.
로그아웃을 하게 되면 서버에 저장된 정보를 지우는 역할을 하게되는데 session객체에서 invalidate()메서드가 해당역할을 하게 됩니다.
<%@page import="java.util.Enumeration"%>
<%@ 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>
<%
if(session.getAttribute("memberId") != null)
response.sendRedirect("loginOk.jsp");
%>
<form action="loginCon" method="post">
ID : <input type="text" name="mID"></br>
PW : <input type="password" name="mPW"></br>
<input type="submit" value="login">
</form>
</body>
</html>
해당 코드는 세션이 있는지 파악하여 세션이 있다면 로그인 성공페이지로 이동을하고 세션이 없다면 로그인을 유도합니다.
로그인을 하고 submit버튼 로그인 버튼을 누르게되면 loginCon서블릿으로 이동합니다.
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/loginCon")
public class LoginCon extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
String mId = request.getParameter("mID");
String mPw = request.getParameter("mPW");
out.print("mId : " + mId);
out.print("mPw : " + mPw);
HttpSession session = request.getSession();
session.setAttribute("memberId", mId);
response.sendRedirect("loginOk.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
로그인을 하게 되었을때 세션을 저장하는 서블릿입니다.
세션을 저장하고 로그인 성공페이지로 이동시킵니다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<%
session = request.getSession();
out.print("memberId : " + session.getAttribute("memberId") + "</br>");
%>
<form action="logoutCon" method="post">
<input type="submit" value="logout">
</form>
</body>
</html>
세션정보를 가지고 옵니다.
로그아웃 버튼을 누르면 세션을 지우는 logoutCon 서블릿으로 이동합니다.
package com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/logoutCon")
public class LogoutCon extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
세션을 삭제하고 다시 로그인 페이지로 이동합니다.
이 글은 실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌를 수강하며 공부한 내용을 정리한 글입니다.
https://www.inflearn.com/course/실전-jsp_renew/dashboard
'Java 관련 > JSP & Servlet' 카테고리의 다른 글
[JSP & Servlet] filter를 통한 한글처리 (0) | 2022.08.22 |
---|---|
[JSP & Servlet] JSP Servlet의 한글처리 (0) | 2022.08.21 |
[JSP & Servlet] Cookie (0) | 2022.08.19 |
[JSP & Servlet] Servlet 데이터 공유 (0) | 2022.08.18 |
[JSP & Servlet] JSP 내장객체(config, application, out) (0) | 2022.08.17 |