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

+ Recent posts