< 세션 >
- 클라이언트와 서버의 관계(상태)를 유지하기 위해 제공되는 기능
① session 객체
- 웹 서버의 상태를 유지하기위해서 사용하는 값
- 웹 브라우저당 1개씩 생성 (서버에서 관리)
② 세션값 생성하기
- session.setAttribute(args0, args1)
- session.getAttribute(args) : 세션값 가져오기
※ args1 형식에 따라 차이 생김
- session.setAttribute("id","inputID"); → 세션 이름은 id이고 "inputID"라는 문자 자체를 id에 저장
- session.setAttribute("id",inputID); → 세션 이름은id이고 inputID안에 저장된 값을 id에 저장
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name");
%>
<h3> 세션값 : <%=name %> </h3>
<!-- Set.jsp 페이지로 이동 -->
<input type="button" value="세션값 생성!" onclick="location.href='sessionSet.jsp';">
</body>
</html>
//sessionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.setAttribute("name", "GOOGLE!");
%>
<!-- 페이지 이동 sessionTest.jsp -->
<script type="text/javascript">
alert('세션값 생성완료');
location.href='sessionTest.jsp';
</script>
</body>
</html>
//sessionSet.jsp
③ 세션값 삭제하기
- session.removeAttribute(args);
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name");
String tel = (String)session.getAttribute("tel");
// 세션값이 없을경우 null대신에 "세션값 없음!"
if(name==null){
name="세션값 없음 !";
}
if(tel==null){
tel="세션값 없음 !";
}
%>
<h3> 세션값 : <%=name %> </h3>
<h3> 세션값2 : <%=tel %> </h3>
<input type="button" value="세션값 생성!" onclick="location.href='sessionSet.jsp';">
<input type="button" value="세션값 삭제!" onclick="location.href='sessionDel.jsp';">
</body>
</html>
//sessionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// 세션값 tel 삭제
session.removeAttribute("tel");
%>
<!-- 페이지 이동(sessionTest.jsp) -->
<script type="text/javascript">
alert('세션값 삭제 !');
location.href='sessionTest.jsp';
</script>
</body>
</html>
//sessionDel.jsp
- 이름, 전화번호 세션값을 생성한 뒤 전화번호 세션값만 삭제
④ 세션값 초기화하기
- session.invalidate();
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name = (String)session.getAttribute("name");
String tel = (String)session.getAttribute("tel");
// 세션값이 없을경우 null대신에 "세션값 없음!"
if(name==null){
name="세션값 없음 !";
}
if(tel==null){
tel="세션값 없음 !";
}
%>
<h3> 세션값 : <%=name %> </h3>
<h3> 세션값2 : <%=tel %> </h3>
<input type="button" value="세션값 생성!" onclick="location.href='sessionSet.jsp';">
<input type="button" value="세션값 삭제!" onclick="location.href='sessionDel.jsp';">
<input type="button" value="세션값 초기화!" onclick="location.href='sessionInval.jsp';">
</body>
</html>
//sessionTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
session.invalidate();
%>
<!-- 페이지 이동 sessionTest.jsp -->
<script type="text/javascript">
alert('전체 초기화 !');
location.href='sessionTest.jsp';
</script>
</body>
</html>
//sessionInval.jsp
- 이름, 전화번호 모두 초기화
< 로그인 페이지 만들어보기 >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/jsp3/sessionLoginForm.jsp </h1>
<fieldset>
<legend>로그인 페이지</legend>
<form action="sessionLoginPro.jsp" name="fr" method="post">
아이디 : <input type="text" name="id"><br>
비밀번호 : <input type="password" name="pw"><br>
<input type="submit" value="로그인">
</form>
</fieldset>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/jsp3/sessionLoginPro.jsp </h1>
<h2> 로그인 체크 페이지 (pro)</h2>
<%
String sysID = "admin";
String sysPW = "1234";
// 전달된 파라메터값 저장
String inputID = request.getParameter("id");
String inputPW = request.getParameter("pw");
// 파라메터값이랑 기존의 시스템 정보랑 같은지 다른지 체크
if(sysID.equals(inputID)){
//아이디가 있는 경우
if(sysPW.equals(inputPW)){
// 아이디가 있으면서, 비밀번호 맞음 => 본인
System.out.println("로그인 성공! 메인페이지로 이동");
// 아이디 정보를 세션객체에 저장해서 전달
session.setAttribute("id",inputID);
// 페이지 이동
response.sendRedirect("sessionMain.jsp");
}else{
// 아이디가 있으면서 비밀번호 틀림
System.out.println("로그인 실패! 비밀번호 오류 발생");
System.out.println("사용자의 아이디 혹은 비밀번호 오류");
response.sendRedirect("sessionLoginForm.jsp");
}
}else{
//아이디가 없는 경우
System.out.println("로그인 실패 ! 아이디 없음");
response.sendRedirect("sessionLoginForm.jsp");
}
%>
</body>
</html>
- 아이디 정보를 세션객체에 저장하는 이유는 메인페이지에서 로그인여부를 확인하기 위함
- response.sendRedirect ( ) : 아이디, 패스워드 틀리면 로그인화면으로 돌아감
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/jsp3/sessionMain.jsp </h1>
<%
// 전달받은 로그인정보를 사용해서 로그인여부 체크
String id = (String)session.getAttribute("id");
if( id == null){
// 세션정보가 없음 => 로그인 안했다는 의미로 로그인페이지로 보냄
response.sendRedirect("sessionLoginForm.jsp");
}
%>
<h2><%=id %>님 환영합니다 ~</h2>
<!-- 로그아웃 버튼 생성 -->
<input type="button" value="로그아웃" onclick="location.href='sessionLogout.jsp';">
</body>
</html>
- 로그인페이지를 거쳐서 메인페이지로 들어온게 아니라 바로 메인페이지로 들어오지 못하게 로그인 여부를 확인
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>WebContent/jsp3/sessionLogout.jsp </h1>
<%
session.invalidate();
%>
<!-- 페이지 이동 -->
<script type="text/javascript">
alert('로그아웃합니다.');
location.href='sessionLoginForm.jsp';
</script>
</body>
</html>
- 아이디와 패스워드 세션정보 초기화시켜서 로그아웃시킴
< 이클립스 Class File Editor >
F3 누르기 - 상단의 Attach Source 클릭 - External location 선택 - External File - Java 폴더까지 올라가기 - jdk 폴더 - src.zip 추가
< 404에러 페이지 만들기 >