본문 바로가기

자바 웹 개발자가 될거야/JSP

[JSP] session / 세션객체 / 세션값 생성 / 세션값 삭제 / 세션값 초기화 / 이클립스 에러페이지 만들기

 

 

< 세션 >

 

 

- 클라이언트와 서버의 관계(상태)를 유지하기 위해 제공되는 기능

 

 

① 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에러 페이지 만들기 >