티스토리 뷰
Session Login/Logout
1. 세션 객체
- 우리가 일반적으로 사용하는 회원 로그인등을 구현 할 때 많이 사용되는 것이 세션 객체이다.
- 사용자의 로그인 정보를 쿠키나 세션들에 저장하여 로그인 여부를 확인 할 수 있는데, 클라이언트에 저장되는 쿠키와는 달리 세션정보는 웹 서버에 저장되기 때문에 보안상 유리하다는 장점이 있다.
2. session 객체 메소드
- setAttribute(String name, Object value) : 세션 객체 생성
- getAttribute(String name) : 해당 세션 객체 가져옴
- getAttributeNames() : 해당 세션 이름 전체 가져옴
- setMaxInactiveInterval(int interval) : 세션 유지시간을 지정(초 단위)
- removeAttribute(String name) : 세션 객체 삭제
- getMaxInactiveInterval() : 세션 유지시간을 가져옴
- getId() : 세션 고유 ID를 가져옴
- invalidate() : 전체 세션을 무효화 시킴
3. 4개의 파일 생성
- form.jsp : 사용자 정보를 입력받는 로그인 페이지
- authentication.jsp : 사용자 정보를 받아 인증과정을 처리하는 페이지
- logout.jsp : 로그아웃을 처리하는 페이지
- welcome.jsp : 로그인 인증 성공 시 보여지는 페이지
4. session 처리
- session.setAttribute(String name, Object object) : session 등록
- session.getAttribute(String name) : session 가져오기
- session.invalidate() : 기존의 세션 값 초기화
5. response.sendRedirect()
- JSP 페이지에서 특정한 작업을 수행한 후 지정한 페이지를 이동하고 싶은 경우가 있다. 예를 들어, 게시판에 글을 저장한 후에 목록 페이지로 이동하는 경우를 말한다.
- 특정 조건일 때 지정한 페이지로 이동하고 싶은 경우 많이 사용하는 메서드이다.
- 여기서는 로그인시 등록되어 있는 session값이 일치 할 경우 welcome 페이지를 넘어가거나 logout시 session 값이 없을 경우에 login 페이지로 넘어가는데 사용이 되었다.
6. 코드
- form.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="authentication.jsp">
<h1 align="center">Login</h1>
<table align="center">
<tr>
<td>
<label> ID : </label>
<input name="name" type="text" placeholder="user_name" />
</td>
</tr>
<tr>
<td>
<label>PW : </label>
<input name="password" type="password" placeholder="password" />
</td>
</tr>
<tr>
<td align="center"><button type="submit" >로그인</button></td>
</tr>
</table>
</form>
</body>
</html>
- authentication.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 0: 인증 가능 사용자 및 비밀번호 목록.
String[] users = { "ninja", "knight", "elf" };
String[] passwords = { "ak74", "m4", "pgs11" };
// 1: form 으로부터 전달된 데이터를 변수에 저장.
// form.jsp의 form(input) 으로부터 전달된 데이터를 변수에 저장
String id = request.getParameter("name");
String pw = request.getParameter("password");
// 2: 사용자 인증
String redirectUrl = "form.jsp"; // 인증 실패시 재요청 될 url
for (int i = 0; i < users.length; i++) {
if (users[i].equals(id) && passwords[i].equals(pw)) {
// 세션 값 등록하기
session.setAttribute("signedUser", id); // 인증되었음 세션에 남김
// 인증에 성공되었기 때문에 welcome.jsp의 창을 띄우도록 함
redirectUrl = "welcome.jsp"; // 인증 성공 시 재요청 url
}
}
response.sendRedirect(redirectUrl);
%>
- logout.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 기존의 세션 데이터를 모두 삭제
session.invalidate(); // 세션 값 초기화하기
// 로그아웃을 했기 때문에 로그인 페이지로 이동하도록 한다.
response.sendRedirect("form.jsp");
%>
- welcome.jsp
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%
// 인증된 세션이 없는 경우에 해당페이지를 볼 수 없도록 한다.
// logout.jsp를 호출하여, 세션을 초기화하고 form.jsp를 띄우도록 한다.
// 세션 값 가져오기
if(session.getAttribute("signedUser") == null) {
response.sendRedirect("logout.jsp");
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body align="center">
<h1><%= session.getAttribute("signedUser") %></h1>
<h3>Login Success</h3><br/>
<button><a href="logout.jsp">로그아웃</a></button>
</body>
</html>
7. 실행결과
- form.jsp 실행
- Login 진행 (기존에 설정되어 있는 login 정보를 입력해서 login을 진행)
- Logout
8. VMware에 war 파일 배포시 tomcat root 경로 변경
- 프로젝트 파일의 WebContent -> WEB-INF -> web.xml 파일에서 다음과 같이 root로 설정할 jsp 파일을 추가해준다.
- tomcat -> conf 폴더에서 server.xml 파일을 다음과 같이 수정한다.
- docBase는 war 파일이 압축이 풀린 디렉토리명을 말하는 것이다.
- 위에서 ssss 디렉토리의 web.xml 파일에서 기본 실행을 form.jsp로 설정을 해 주었기 때문에 포트만 입력하면 자동으로 form.jsp 페이지가 출력된다.
2019.09.16(월)
Session Login/Logout
'JSP' 카테고리의 다른 글
[JSP] Session Login/Logout -2 (0) | 2019.09.17 |
---|
댓글