void setAttribute(String name, Object value)
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> 세션 생성하기 </p>
<form method="post" action="1_session_process.jsp">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="password" name="pw">
<input type="submit" value="로그인">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> 세션 생성하기 - 서버쪽 코드 </p>
<%
String s_id = request.getParameter("id");
String s_pw = request.getParameter("pw");
if (s_id.equals("admin") && s_pw.equals("1234")){
session.setAttribute("userID", s_id);
session.setAttribute("userPW", s_pw);
out.print("세션 설정이 성공했습니다. <br>");
out.print(s_id+"님 환영합니다");
} else {
out.print("세션 설정이 실패했습니다. 다시 확인해주세요");
}
%>
</body>
</html>
설정하지 않은 값을 보내면
연결이 실패했다고 출력
설정한 값을 보내면
연결 성공
Object getAttribute(String name)
<body>
<p> 세션 생성하기 </p>
<form method="post" action="1_session_result.jsp">
<p> 아이디 : <input type="text" name="id">
<p> 비밀번호 : <input type="password" name="pw">
<input type="submit" value="로그인">
</form>
</body>
<body>
<%
String r_id = (String) session.getAttribute("userID");
String r_pw = (String) session.getAttribute("userPW");
out.print("설정된 세션의 속성 값[1] : " + r_id + "<br>");
out.print("설정된 세션의 속성 값[2] : " + r_pw);
%>
</body>
어떤 값을 입력해도 상관은 없다
로그인 값을 누르면 설정된 값이 나온다.
세션생성이 이미 된 상태라면 그냥 바로 process 파일을 실행해도 값이 똑 같이 나오긴 한다.
세션에 저장된 모든 속성 이름과 값을 가져와서 출력하기
<%@ page language="java" contentType="text/html; charset=utf-8"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<p> 세션에 저장된 여러 속성 이름과 값 가져와 출력하기 </p>
<%
Enumeration en = session.getAttributeNames();
int i=0;
// 세션의 개수 카운팅하기
while (en.hasMoreElements()){
i++;
String name = en.nextElement().toString();
String value = session.getAttribute(name).toString();
out.print("설정된 세션의 속성 이름[" + i + "] : " + name + "<br>");
out.print("설정된 세션의 속성 값[" + i + "] : " +value + "<br>");
}
%>
</body>
</html>
이런식으로 출력된다
<body>
<p> 세션 정보 지우기 </p>
<h4>----------세션 삭제하기 전----------</h4>
<%
String u_id = (String) session.getAttribute("userID");
String u_pw = (String) session.getAttribute("userPW");
out.print("설정된 세선 이름 userID : " + u_id + "<br>");
out.print("설정된 세션 값 userPW : " + u_pw + "<br>");
// 세션 삭제
session.removeAttribute("userID");
%>
<h4>----------세션 삭제한 후----------</h4>
<%
u_id = (String) session.getAttribute("userID");
u_pw = (String) session.getAttribute("userPW");
out.print("설정된 세선 이름 userID : " + u_id + "<br>");
out.print("설정된 세션 값 userPW : " + u_pw + "<br>");
%>
</body>
위에 했던 것처럼 while을 돌리며 삭제하기
<%
en = session.getAttrributeNames();
i=0;
while(en.hasMaorElements()) {
i++;
name = en.nextElement().toString();
value = session.getAttribute(name).toString();
out.print("설정된 세션 이름 [" + i + "] : " + name + "<br>");
out.print("설정된 세션 값 [" + i " "] : " + value + "<br>");
}
%>
세션에 저장된 모든 세션 속성명을 삭제하기
그냥 session.invalidate()
로 사용하면 된다.
session.setMaxInactiveInterval(60 * 60);
<p> 세션의 유효시간(설정된 기본값 얻기)<p>
<%
int time = session.getMaxInactiveInterval();
out.print("세션 기본 유효시간 : " + time +"초 = " + (time/60)+ "분");
%>
<hr>
<p> 세션의 유효시간 1분으로 줄이기 </p>
<%
session.setMaxInactiveInterval(1800);
time = session.getMaxInactiveInterval();
out.print("세션 유효시간 : " + time +"초 = " + (time/60)+ "분");
%>