본문 바로가기
JSP/이론

Enumeration/session/ HttpSession

by SEOKIHOUSE 2023. 6. 13.

https://yongku.tistory.com/entry/%EC%9E%90%EB%B0%94Java-Enumeration-%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4Interface-%EC%A0%95%EB%A6%AC

<<참고사이트

 

  • HttpSession session = request.getSession(); 서블릿에서 session쓰는법
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Login Form</h1>
	<hr>
	<form action="SessionServlet" method="get">
		id:<input type="text" name="id" value="짱구"><br>
		pw:<input type="password" name="pw" value="짱구1234"><br>
		<input type="submit" value="로그인">
	</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Session에 값 저장하기(setAttribute)</h1>
	<hr>
	<%
		session.setAttribute("id", "admin");
		session.setAttribute("pw", "ad1234");
		session.setAttribute("age", 20);
	%>
</body>
</html>
<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>모든 세션값 얻어오기</h1>
	<hr>
	<%
		Enumeration<String> names = session.getAttributeNames();
		while(names.hasMoreElements()) { //true false반환
			String name = names.nextElement();//
			String value = session.getAttribute(name).toString();
			out.print(name+"|" +value+ "<br>");
			
		}
	%>
</body>
</html>

서블릿

package servlet0613;

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

@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		
		if(id.equals("짱구") && pw.equals("짱구1234")) {
			HttpSession session = request.getSession();
			session.setAttribute("ids", id);
			session.setAttribute("pws", pw);
			
			response.sendRedirect("0613getsession.jsp");
		}else {
			response.sendRedirect("0613loginForm.jsp");
		}
		
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>session값 가져오기(getsession)</h1>
	<hr>
	<%
		String id = (String)session.getAttribute("ids");
		String pw = (String)session.getAttribute("pws");
		
	%>
	
	<%=id %>님 록그인 성공<br>
	id:<%=id %><br>
	pw:<%=pw %><br>
</body>
</html>

세션정보

https://itworldyo.tistory.com/188

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>세션정보를 얻어오는 메소드 사용</h1>
	<hr>
	<%
		//session.getId()는 현재 세션의 고유한 식별자인 세션 ID를 얻어옵
		String id_str = session.getId();
		//session.getLastAccessedTime()과 session.getCreationTime()
		//을 사용하여 세션이 생성된 시간과 마지막 접근 시간을 얻어옵 
		long lastTime = session.getLastAccessedTime();
		long createdTime = session.getCreationTime();
		//(lastTime - createdTime)은 밀리초 단위의 차이를 나타내며, 이를 분 단위로
		//변환하기 위해 /60000을 수행. 나누기 60000은 밀리초를 분으로 변환하는 작업
		long time_used = (lastTime - createdTime) /60000;
		
		//session.setMaxInactiveInterval(-1);
		session.setMaxInactiveInterval(30*60);
		//session.getMaxInactiveInterval()은 세션의 최대 비활성 시간(세션의 유효 시간)을 초 단위로 반환
		//이를 분 단위로 변환하여 출력
		int inactive = session.getMaxInactiveInterval()/60;
		//session.isNew()는 세션이 새로 생성되었는지 여부를 확인
		boolean b_new = session.isNew();
	%>
	[1] 세션 ID는 [<%=session.getId() %>]입니다<br><hr>
	[2] 당신이 웹 사이트에 머문 시간은 <%=time_used %> 분 입니다 <br><hr>
	[3] 세션의 유효 시간은 <%=inactive %> 분 입니다<br><hr>	
	[4] 세션이 새로 만들어졌나요? <br>
	<%
		if(b_new) {
			out.print("예! 새로운 세션을 만들었슴다");
		}else {
			out.print("아니오! 새로운 세션 못만들었슴다");
		}
	%>
</body>
</html>

 

https://dololak.tistory.com/577

  • 기본세션유지시간 30분인데 -1하면 무한

기본30분

 


  • 세션지우기
  • session.removeAttribute() - 지정한 녀석만 삭제

 


  • session.invalidate() - 다 삭제

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>Login Form</h1>
	<hr>
	<form action="SessionServlet" method="get">
		id:<input type="text" name="id" value="짱구"><br>
		pw:<input type="password" name="pw" value="짱구1234"><br>
		<input type="submit" value="로그인">
	</form>
</body>
</html>
package servlet0613;

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

@WebServlet("/SessionServlet")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		String id = request.getParameter("id");
		String pw = request.getParameter("pw");
		
		if(id.equals("짱구") && pw.equals("짱구1234")) {
			HttpSession session = request.getSession();
			session.setAttribute("id", id);
			session.setAttribute("pw", pw);
			
			response.sendRedirect("0613getsession.jsp");
		}else {
			response.sendRedirect("0613loginForm.jsp");
		}
		
	}

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>세션지우기</h1>
	<hr>
	<%
		session.removeAttribute("id");
	%>
</body>
</html>

'JSP > 이론' 카테고리의 다른 글

jsp:include vs include file  (0) 2023.06.13
jsp:forward  (0) 2023.06.13
<%@ %> 지시자 / error /include  (0) 2023.06.09
주석/JSP Page, Request, Session, Application  (0) 2023.06.08
JSP/<%! %> 선언문 /<% %> 스크립틀릿 / <%= %> 표현식  (0) 2023.06.08