jsp19

제로·2022년 12월 8일
0

JSP

목록 보기
18/30

세션

  1. 세션이란?
    • 웹 컨테이너에 클라이언트의 정보를 보관할 때 사용된다.
    • 서버에서만 생성되고, 클라이언트마다 세션이 생성된다
  2. 세션 생성
    • page 지시자에서 session 속성값을 true로 설정(default)
    • session.setAttribute("키",등록객체)
    • 속성을 이용해서 클라이언트 관련 정보 저장
  3. 세션 종류/타임 아웃
    • session.invalidate()를 이용해서 세션 종료
      - 세션이 종료되면 기존에 생성된 세션이 삭제
      • 이후 접근 시 새로운 세션 생성
    • 마지막 세션 사용 후, 유효시간이 지나면 자동 종료
      - web.xml 파일에서 지정
      <session-config>
      <session-timeout>30 (분단위)
      • session 기본 객체의 setMaxInactiveInterval()메서드 이용해서 지정(초단위)
# 세션 설정
<%
	Member m1 = new Member("himan","홍길동",1000,"일반회원");
	session.setAttribute("s01", m1);
%>
<a href="a04_sessionMenu.jsp">세션확인</a>

# 세션 불러오기(a04_sessionMenu.jsp)
<%
 	Member m = (Member)session.getAttribute("s01");
 	boolean hasSess = m!=null;
 	if(hasSess){
 %>
 	<h3>아이디 : <%=m.getId() %></h3>
 	<h3>이름 : <%= m.getName()%></h3>
 	<h3>포인트 : <%=m.getPoint() %></h3>
 	<h3>권한 : <%=m.getAuth() %></h3>
 
 <%} %>
 <script>
 	var hasSess = <%=hasSess%>
    if(!hasSess){
    	alert("세션이 없습니다. 등록하러 이동하겠습니다.")
        location.href="세션 등록할 uri입력"
    }
 </script>

세션의 중단

  1. 세션은 3가지 형태로 중단 처리할 수 있다.
    1) 중단 메서드
    - session.invalidate();
    ex) 로그아웃 시 설정된 세션 중단
    2) 시간을 설정해서 해당 시간 이후 중단 처리(초단위)
    - session.setMaxInactiveInterval(1000);
    해당 시간동안 요청이 없을 때 중단
    3) web.xml에서 서버 단위로 설정(분단위)
    <session-config>
    <session-timeout>30
    </session-config>
<h2 onclick="makeSess()">세션 설정 (로그인 후 세션 생성)</h2>
<h2 onclick="delSess()">세션 삭제 (로그아웃)</h2>	

<h2>세션 상태</h2>
<%
	String sess01 = (String) session.getAttribute("sess01");
	boolean hasSess = sess01!=null;
	if(hasSess){
		out.print("<h3>세션생성 : "+sess01+"</h3>");
	}else{
		out.print("<h3>세션생성됨 : 없음</h3>");
	}
%>
<script type="text/javascript">
var hasSess = <%=hasSess%>
function makeSess(){
	location.href="a06_Session.jsp?sess=y"
}
function delSess(){
	// 로그인 안되어 있는 상태에서 로그아웃 클릭 시 
	if(!hasSess) alert("로그인 정보가 없습니다")
	location.href="a06_Session.jsp?sess=n"
}
</script>

## a06_Session.jsp
<%
	String sess = request.getParameter("sess");
	if(sess!=null){
		if(sess.equals("y")){
			session.setAttribute("sess01", "hi,session!");
		}
		if(sess.equals("n")){
			// session.invalidate(); 전체세션 종료 처리
			session.removeAttribute("sess01"); // 특정 세션 종료 처리
		}
		response.sendRedirect("a05_stopSession.jsp");
	}
%>



## a07_sessionExp.jsp
<%
	String sess01 = (String)session.getAttribute("sess01");
	String sess = request.getParameter("sess");
	if(sess!=null&&sess.equals("n")){
		session.invalidate(); // 다음 페이지를 호출할 때 없어지므로 다시 페이지를 호출해야함
		response.sendRedirect("a07_sessionExp.jsp");
	}
%>
	<h2>세션상태:<%=sess01!=null?sess01:"세션없음" %></h2>
	<form>
	<input type="hidden" value="n" name="sess">
	<button>세션삭제</button>
	<!-- default type이 submit -->
	</form>


profile
아자아자 화이팅

0개의 댓글