728x90
클라이언트와 서버의 연결을 유지시켜주는 방법으로 Session에 대해 알아보자.
쿠키는 연결 정보를 클라이언트에 저장을 했지만 Session은 서버에 저장하는 방법이다.
Session을 구현하는 방법은
다음과 같다.
바로 만들어보도록 하자.
우선 login.jsp이다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Title</title>
</head>
<body>
<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>
이렇게 body 부분에 form으로 ID와 PW를 받고 post로 loginCon에 넘겨준다.
여기에 mapping된 메서드는
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/loginCon")
public class loginCon extends HttpServlet {
@Override
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");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
어차피 doPost에서 doGet으로 넘어가기에 doGet에 저렇게 작성을 하고 request에서 mID와 mPW를 각각 받아온다.
그리고 session에 memberId로 mID 속성을 저장하고 loginOk.jsp를 열어준다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
PrintWriter printWriter = response.getWriter();
session = request.getSession();
printWriter.print("memberId : " + session.getAttribute("memberId") + "<br>");
%>
<form action = "logoutCon" method="post">
<input type = "submit" value="logout">
</form>
</body>
</html>
loginOk.jsp에서는 session에서 memberId를 찾아 출력해주고 logoutCon을 연결해주는 버튼을 달아준다.
import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.IOException;
@WebServlet(name = "logoutCon", value = "/logoutCon")
public class logoutCon extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();
session.invalidate();
response.sendRedirect("login.jsp");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
logoutCon은 session을 비워주고 처음화면인 login.jsp로 돌려 보내준다.
login.jsp는 session에 저장이 되어 있는지 확인을 해보아야 한다.
그렇기에 앞부분에 조건문을 추가하여 session에 데이터가 있다면 loginOk.jsp를 열어주게 만든다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Title</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>
'백엔드 > JSP, Servlet' 카테고리의 다른 글
JSP & Servlet 12일차 (0) | 2023.02.05 |
---|---|
JSP & Servlet 10일차 (0) | 2023.01.16 |
JSP & Servlet 9일차 (0) | 2023.01.15 |
JSP & Servlet 8일차 (0) | 2023.01.04 |
JSP & Servlet 7일차 (0) | 2023.01.04 |