관리 메뉴

tapito.tistory.com

JSP/PHP 세션 사용 예: 로그인/로그아웃 소스 #2 본문

Common Gateway Interface/Java Server Page

JSP/PHP 세션 사용 예: 로그인/로그아웃 소스 #2

Tapito 2014.10.06 16:17

login.jsp

 POST 방식으로 ID와 암호를 전송하여 로그인 작업을 수행합니다.


<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
	<head>
 		<meta charset="utf-8"> 
		<title>로그인</title>
	</head>
	<body>
		<form id="loginForm" method="post" action="process.jsp">
			<label>ID : <input type="text" name="member_id" /></label>
			<label>PW : <input type="password" name="member_password" /></label>
			<input type="submit" />
		</form>
	</body>
</html>

 

process.jsp

 ID와 암호를 검사하여 로그인을 위한 세션을 준비합니다. 세션에 값을 설정하는 방법은 session.setAttribute("변수명", "값"); 입니다. 파라미터를 입력받는 방법은 request.getParameter("이름"); 입니다. GET 방식으로 들어온 변수와 POST 방식으로 들어온 변수를 따로 구분하지 않습니다. 대신 request.getMethod().equals("POST") 또는 request.getMethod().equals("GET")을 통해 데이터가 GET 또는 POST 방식으로 들어왔는지를 검사할 수 있습니다.


<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<%!
	// PHP의 isset과 같은 기능을 합니다. 문자열이 null이거나 빈 문자열이면 false를 반환합니다. //
	boolean isset(String str)
	{
		if(str == null) return false;
		if(str.equals("")) return false;
		return true;
	}
%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>로그인 처리</title>
	</head>
	<body>
		<%
		if(!isset(request.getParameter("member_id")))
		{	 
			out.println("<p align=\"center\">ID가 입력되지 않았습니다.</p>");
			out.println("<p align=\"center\"><a href=\"membership.jsp\">로그인하기</a></p>");
			return;
		}

		if(!isset(request.getParameter("member_password")))
		{
			out.println("<p align=\"center\">암호가 입력되지 않았습니다.</p>");
			out.println("<p align=\"center\"><a href=\"membership.jsp\">로그인하기</a></p>");
			return;
		}

		// 미리 정의된 ID와 암호 //
		String member_id = "user";
		String member_password = "password";

		// ID 잘못 입력 시 //
		if (!request.getParameter("member_id").equals(member_id))
		{
			out.println("<p align=\"center\">ID가 일치하지 않습니다.</p>");
			out.println("<p align=\"center\"><a href=\"membership.jsp\">다시 로그인하기</a></p>");
			return;
		}
		// 암호 잘못 입력 시 //
		else if (!request.getParameter("member_password").equals(member_password))
		{
			out.println("<p align=\"center\">암호가 일치하지 않습니다.</p>");
			out.println("<p align=\"center\"><a href=\"membership.jsp\">다시 로그인하기</a></p>");
			return;
		}
		// 로그인 성공 //
		else 
		{
			out.println("<p align=\"center\">로그인 성공</p>");
			out.println("<p align=\"center\"><a href=\"page.jsp\">회원 페이지</a></p>");

			/* 세션에 로그인 ID와 암호를 기억시키고 세션 정보로서 사용 */
			session.setAttribute("member_id", request.getParameter("member_id"));
			session.setAttribute("member_password", request.getParameter("member_password"));
		}
		%>
	</body>
</html>

 

membership.jsp

 회원 페이지 역할을 하는 곳입니다. 세션을 검사하여 로그인 상태에서만 내용을 보입니다. JSP에서 세션의 데이터를 가져오는 방법은 session.getAttribute("변수명"); 입니다.


<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<%!
	boolean isset(String str)
	{
		if(str == null) return false;
		if(str.equals("")) return false;
		return true;
	}
%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>회원 페이지</title>
	</head>
	<body>
		<%
		if (!isset((String)session.getAttribute("member_id")) || !isset((String)session.getAttribute("member_password")))
		{
			out.println("<p align=\"center\">로그인되지 않았습니다.</p>");
			out.println("<p align=\"center\"><a href=\"membership.jsp\">로그인하기</a></p>");
		}
		else
		{
			out.println("<p align=\"center\">환영합니다. " + (String)session.getAttribute("member_id") + "님 - <a href=\"logout.jsp\">로그아웃</a></p>");
		}
		%>
	</body>
</html>

 

logout.jsp

 로그아웃 시 세션을 지우는 방법은 session.invalidate(); 를 호출하면 됩니다.


<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<%!
	boolean isset(String str)
	{
		if(str == null) return false;
		if(str.equals("")) return false;
		return true;
	}
%>
<html>
	<head>
		<meta charset="utf-8">
		<title>login</title>
	</head>
	<body>
		<% session.invalidate(); %>
		<p align="center">로그아웃 되었습니다.</p>
		<p align="center"><a href="membership.jsp">로그인 하기</a></p>
	</body>
</html>
저작자 표시 비영리 변경 금지
신고
Tag
,
공유하기 링크
9 Comments
댓글쓰기 폼