개발자입니다
IT BANK) JSP 11일차 - JSP(세션) 본문
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");
%>
'JSP > IT BANK - JSP' 카테고리의 다른 글
IT BANK) JSP 13일차 - JSP(Oracle 설치, 명령어) (0) | 2022.09.23 |
---|---|
IT BANK) JSP 12일차 - JSP(회원관리 페이지) (0) | 2022.09.22 |
IT BANK) JSP 10일차 - JSP(쿠키) (0) | 2022.09.20 |
IT BANK) JSP 9일차 - JSP(form, result, 응답) (0) | 2022.09.20 |
IT BANK) JSP 8일차 - JSP(내장 객체) (0) | 2022.09.16 |