JAVA

Session

정숙씨의 쏠쏠한 코딩 2021. 7. 1. 22:12

-Session 이란-

클라이언트와 서버가 유지 할 수 있는 기능이다.

쿠키 를 사용 하는 방식 보단 보안성 유지를 위해 Session을 더 많이 사용 하는 추세이다.

-Session 사용 방법-

  • login.jsp
    • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
      <html>
      <head>
      <title>Login.jsp</title>
      </head>
      <body>
      <%
      if(session.getAttribute("memberID") != null) // 세션의 정보를 가져왔을때 null값이 아닌 경우
      {
          response.sendRedirect("loginOk.jsp")// 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>
    • -loginOk.jsp-
      • 정상적인 로그인이 완료 된 후 세션 확인을 위한 view
      • <%@ page contentType="text/html;charset=UTF-8" language="java" %>
        <html>
        <head>
        <title>Session Check</title>
        </head>
        <body>
        <%
        session = request.getSession(); // 요청 받은 세션 정보를 가지고 온다.
        out.print("memberID :" + session.getAttribute("memberID") + "</br>"); //setAttribute()지정된 값을 불러온 후 printWriter 객체를 사용하여 출력
        %>
        <form action="logoutCon" method="post">
        <input type="submit" value="logout">
        </form>
        </body>
        </html>
      • loginCon.Class
        • package Servlet;

          import javax.servlet.*;
          import javax.servlet.http.*;
          import javax.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("ID: " + mID);
          out.print("PW: " + mPW);

          HttpSession session = request.getSession(); //사용자의 요청에 의한 session을 담는 객체
          session.setAttribute("memberID", mID); // session 객체내 memberID로 mID 값을 통한 속성을 지정한다.

          response.sendRedirect("loginOk.jsp"); // 작업이 완료 된 후 loginOk.jsp 페이지로 이동한다.
          }

          @Override
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          doGet(request, response);
          }
          }
        • logoutCon.class
          • package Servlet;

            import javax.servlet.*;
            import javax.servlet.http.*;
            import javax.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(); // invalidate()메서드를 통한 로그인 된 세션 삭제

            response.sendRedirect("login.jsp"); // 세션 삭제 로직 진행 후 login.jsp페이지로 이동 시킨다.
            }

            @Override
            protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
            }
            }