Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

IT BANK) JSP 11일차 - JSP(세션) 본문

JSP/IT BANK - JSP

IT BANK) JSP 11일차 - JSP(세션)

끈기JK 2022. 9. 21. 15:25

220921

 

 

session 폴더 생성

 

■ 세션

: session : 네트워크를 통해 두 대의 시스템 간의 활성화된 접속을 의미

session cookie라고도 보면 된다.

 

WEB session 
 - TCP에서 지속적인 연결의 개념을 사용하게 되면 서버에 부하가 발생한다.
 - 비 연속적으로 서버에 접근하는 웹 클라이언트를 구분하기 위해 WEB Session을 사용한다.
 - 인증하기 위한 정보
 - 웹 브라우저가 맨 처음 웹 서버에 접근 시 세션을 웹서버가 생성하여 웹브라우저로 전달
 - 웹 브라우저는 앞으로 웹서버에 접근 시마다 웹서버가 전달해준 세션을 담아서 요청한다.
 - 웹 서버는 웹 브라우저의 요청에 담겨 있는 세션을 확인하여 여러 웹 브라우저를 식별한다.

 

 

-세션 저장, 가져오기, 세션 유효시간, 삭제

 

*세션에 데이터를 저장할 때 사용하는 메서드
session.setAttribute("속성이름", "데이터");

*세션에 저장된 데이터를 이름을 이용해서 갖고 오는 메서드
session.getAttribute("속성이름");

*세션에 저장하는 데이터에 배열도 가능

getAttribute() 로 자료 가져오는 자료형은 Object형

*기본 유효시간 : 1800초(30분)
session.setMaxInactiveInterval(초);

*한 개의 세션 속성 : 데이터 삭제
session.removeAttribute("id");
*특정 클라이언트의 모든 세션 속성 삭제
session.invalidate();

<title>ex2</title>
</head>
<body>
<%
	/*
		세션에 데이터를 저장할 때 사용하는 메서드
		session.setAttribute("속성이름", "데이터");
	*/
	session.setAttribute("id", "admin");
	session.setAttribute("hobbys", new String[]{"멍때리기", "잠자기"});
	
	/*
		세션에 저장된 데이터를 이름을 이용해서 갖고 오는 메서드
		session.getAttribute("속성이름");
	*/
	
	String id = (String)session.getAttribute("id");
	String[] hobbys = (String[])session.getAttribute("hobbys");
	
	/*
		기본 유효시간 : 1800초(30분)
	session.setMaxInactiveInterval(초);
	*/
	session.setMaxInactiveInterval(60);  // 60초 동안 유지
%>
	<a href="ex2_check.jsp">세션 데이터 확인하러 가기</a>
</body>
<title>ex2_check</title>
</head>
<body>
	<%
		String id = (String)session.getAttribute("id");
		String[] hobbys = (String[])session.getAttribute("hobbys");
		out.print("아이디 : " + id + "<br>");
		out.print("아이디 : " + Arrays.toString(hobbys) + "<br>");
		
		int sessionTimeOut = session.getMaxInactiveInterval();
		out.print("<h3>세션 유효 시간 </h3>");
		out.print(session.getMaxInactiveInterval() + "초<br>");
		
		// 한 개의 세션 속성:데이터 삭제
		session.removeAttribute("id");
		
		// 특정 클라이언트의 모든 세션 속성 삭제
		session.invalidate();
	%>
</body>

 

 

-세션을 이용한 아이디 기억하기

0. ex3_login -> ex3_loginChk
1. 체크박스를 클릭하고 로그인 시 ID/PW가 일치하면 ex3_login.jsp 에서 아이디의 값을 출력해주세요.
2. 체크박스를 클릭하고 로그인 시 ID/PW가 틀리면 ex3_login.jsp 에서 아이디의 값을 출력하지 않아요.
3. 체크박스를 클릭하지 않고 로그인 성공/실패 두 경우 모두 ex3_login.jsp 에서 아이디의 값을 출력하지 않아요.

<title>ex3_login</title>
</head>
<body>
	<%
		String id = "";
		id = (String)session.getAttribute("id");
		if(id == null)
			id = "";
	%>
	<form action="ex3_loginChk.jsp" method="post">
		<input type="text" placeholder="아이디" name="id" value="<%=id %>"> <br>
		<input type="password" placeholder="비밀번호" name="pw"> <br>
		<input type="checkbox" value="true" name="remember"> 아이디 기억하기 <br>
		<input type="submit" value="로그인">
		<input type="reset" value="취소">
	</form>
</body>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");
	String remember = request.getParameter("remember");

	if("admin".equals(id) && "1234".equals(pw)){
		if(remember != null && remember.equals("true")){
			session.setAttribute("id", "admin");
		}
	}
	response.sendRedirect("ex3_login.jsp");
%>

*세션은 웹브라우저 종료시 삭제된다. sessionID가 바뀌므로

 

 

-로그인, 로그아웃 페이지 만들기

<title>ex4_login</title>
</head>
<body>
	<%
		String id = (String)session.getAttribute("id");
		if(id == null){
			id = "";
	%>
	<form action="ex4_loginChk.jsp" method="post">
		<input type="text" placeholder="아이디" name="id" value="<%=id %>"> <br>
		<input type="password" placeholder="비밀번호" name="pw"> <br>
		<input type="submit" value="로그인">
		<input type="reset" value="취소">
	</form>
	<%}else{ %>
		<%=id %>님 로그인 상태입니다. <br>
		<input type="button" value="index 페이지로 이동" onclick="location.href='ex4_index.jsp'">
	<%} %>
</body>
// ex4_loginChk
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	String id = request.getParameter("id");
	String pw = request.getParameter("pw");

	// 데이터베이스에서 아이디/패스워드 정보를 갖고 옴.
	
	if("admin".equals(id) && "1234".equals(pw)){
		// 로그인 성공
		session.setAttribute("id", "admin");
		session.setAttribute("name", "김변수");
		response.sendRedirect("ex4_index.jsp");
		return;
	}
	// 로그인 실패 시
%>
<script>location.href='ex4_login.jsp'</script>
<title>ex4_index</title>
</head>
<body>
	<h3>Index 페이지 입니다.</h3>
	<%
		String id = (String)session.getAttribute("id");
		if(id == null){
			out.print("<h4>로그인은 되어있지 않습니다.</h4>");
			out.print("<a href='ex4_login.jsp'>로그인 페이지로 이동합니다.</a>");
		}else{
	%>
		<%=id %>님 안녕하세요!<br>
		홈페이지에 방문해주셔서 감사합니다.<br>
		즐거운 시간되세요<br>
		<input type="button" value="로그아웃" onclick="location.href='ex4_logout.jsp'">
		<input type="button" value="로그인" onclick="location.href='ex4_login.jsp'">
	<%	} %>	
</body>
// ex4_logout
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
	session.invalidate();
	response.sendRedirect("ex4_index.jsp");
%>