[JSP] Session

conficker77·2021년 9월 26일
0

session 이란?

cookie와 마찬가지로 클라이언트와 서버의 연결을 유지시켜주는 방법중 하나이다.

session은 cookie와 반대로 서버(웹 컨테이너)에 저장이 된다.

세션의 정보는 접속해서 종료되기 까지 유지된다.

접속 시간에 제한을 두어 일정시간 응답이 없으면 유지를 못하게 설정 가능하다.

쿠키보다 보안적으로 유리하다.

세션을 아에 날려버릴 수 있다. (로그아웃 기능)

session 구현

jsp파일에 form 태그에 ID와 PW를 입력한다.

<!-- loginSession.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    if (session.getAttribute("JSESSIONID") != null) {
        response.sendRedirect("loginSessionOk.jsp");
    }
%>
<form action="loginConSession" method="post">
    ID : <input type="text" name="mID"> <br>
    PW : <input type="password" name="mPW"> <br>
    <input type="submit" value="login">
</form>
</body>
</html>

servlet 파일에서 session값을 체크한다.

// loginConSession.java
package servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/loginConSession")
public class loginConSession 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("JSESSIONID", mID);


        response.sendRedirect("loginSessionOk.jsp");
    }

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

login 완료된 페이지에서 정보 확인차 체크된 내용 출력

<!-- loginSessionOk.jsp -->
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    session = request.getSession();
    out.print("memberID : " + session.getAttribute("JSESSIONID") + "<br>");
%>

<form action="logoutConSession" method="post">
    <input type="submit" value="logout">
</form>
</body>
</html>

invalidate() 메서드로 session값을 날릴 수 있다.

// logoutCon.java
package servlet;

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;
import java.io.IOException;

@WebServlet("/logoutConSession")
public class logoutCon extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.invalidate();
        response.sendRedirect("loginSession.jsp");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }
}
profile
게을러 지지 말자

0개의 댓글