ecsimsw

JSP, Servlet / 세션 본문

JSP, Servlet / 세션

JinHwan Kim 2020. 5. 15. 15:45

Session

 

  쿠키는 파일을 클라이언트 브라우저 (로컬)에 저장하는 반면, 세션은 서버에 저장한다. 따라서 세션이 보안면에서는 훌륭하나, 속도나 자원의 한계가 있다.

 

  servlet에서는 HttpSession 인터페이스로 세션을 구현, jsp에서는 이를 내장 객체 session으로 jsp 컨테이너가 제공한다.

 

 

주요 메소드

getAttribute(String name) 

getAttributeNames() 

getCreationTime() : 생성 후 경과 시간

getMaxInactiveInterval() : 세션 유지 시간 리턴

invalidate() : 세션 무효화

removeAttribute(String.name)

setAttribute(String name, Object value)

setMaxInactiveInterval(int interval) : 세션 유지 시간 등록

 

 

사용 예시

 

  세션에 로그인 정보 등록, 속성 제거로 로그아웃

 

1. 로그인 정보 등록

HttpSession sesson = request.getSession();

sesson.setAttribute("loginID", id);

response.sendRedirect("testJSP.jsp");

2. 로그인 정보 리턴

session.getAttribute("loginID")

3. 로그인 정보 속성 제거

HttpSession session = request.getSession();

session.removeAttribute("loginID");

response.sendRedirect("testJSP.jsp");

 

 

전체 코드 

 

1. testJSP.jsp 로그인 정보 post

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    
<%@ page errorPage = "Error.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<%
	if(session.getAttribute("loginID") == null){
	%>
	<p>먼저 로그인을 하세요</p>
	<form action= "login" method ="post">
		<p>
			<strong>아이디</strong>
			<input type="text" name="id" value="아이디 입력">
		</p>
		<p>
			<strong>비밀번호</strong>
			<input type="password" name="pw" value="비밀번호 입력">
		</p>
		<p>
			<input type="submit" value="제출">
		</p>
	</form>
	<%
		}else{
	%>
	<p> 당신의 로그인 id <%= session.getAttribute("loginID") %> </p>
	<form action="logout" method="post">
		<input type="submit" value="log-out">
	</form>
	<%
	}
	%>
</body>
</html>

2. ServletEX.class / 세션 등록

@WebServlet("/login")
public class ServletEX extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String id = request.getParameter("id");

		HttpSession sesson = request.getSession();
		
		sesson.setAttribute("loginID", id);
		
		response.sendRedirect("testJSP.jsp");
		
	}


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

3. Logout.class / 로그인 속성 제거

@WebServlet("/logout")
public class Logout extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       HttpSession session = request.getSession();
       session.removeAttribute("loginID"); 
       response.sendRedirect("testJSP.jsp");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}
}

 

'Server application > Web, Servlet' 카테고리의 다른 글

redirect 와 forward의 차이  (0) 2020.05.21
JSP / 액션 태그  (0) 2020.05.18
JSP, Servlet / 쿠키  (0) 2020.05.14
내장 객체 / out / exception  (0) 2020.05.13
내장 객체 / ServletContext / ServletConfig  (0) 2020.05.13
Comments