티스토리 뷰

JSP

[JSP] Session Login/Logout -1

Hwan'ss 2019. 9. 16. 09:04

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>&nbsp;&nbsp;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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/03   »
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 31
글 보관함