Cookie 를 이용한 login 처리

cookie01.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	Cookie[] cookies = request.getCookies();
	boolean found = false;
	if(cookies==null){
		found=false;
	}else{
	for(int i=0;i<cookies.length;i++){
		if(cookies[i].getName().equals("sampleCookie")){
			found = true;
			}
		}
	}
	String msg = null;
	if( ! found){
		Cookie cookie = new Cookie("sampleCookie","This is Sample Cookie");
		response.addCookie(cookie);
		msg = "발견된 쿠키가 없었기 때문에 새로 설정했습니다.";
	}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>쿠키 테스트</title>
</head>
<body>
<script type="text/javascript">
	var found = <%=found%>;
	if(!found){
		alert("<%=msg%>");
	}
</script>
</body>
</html>
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>로그인 폼</title>
</head>
<body>
<form action="loginProc.jsp" method="post">
<table>
<tr><th>아이디</th><td><input type="text" name="id"></td></tr>
<tr><th>비	번</th><td><input type="password" name="pwd"></td></tr>
<tr><td colspan="2"><input type="submit" value="로그인"></td></tr>
</table>
</form>
</body>
</html>
loginProc.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String id= request.getParameter("id");
	String pwd= request.getParameter("pwd");
	if(id.length()> 0&& pwd.length()>0){
		request.setAttribute("login", "pass");
	%>
		<jsp:forward page="loginSuccess.jsp"/>		
 <%}else{%>
		<jsp:forward page="loginFail.jsp"/>
<%}
%>

loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	if(request.getAttribute("login")!=null){
		Cookie cookie = new Cookie("login","pass");
		response.addCookie(cookie);
	}else{
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>로그인 성공</title>
</head>
<body>
<h1>로그인에 성공했습니다.</h1>
<%=request.getParameter("id") %><br/>
<%=request.getParameter("pwd") %><br/><p/>
<a href="service.jsp">서비스 이용하기</a>
</body>
</html>
service.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ include file="loginCheck.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>회원 이용가능 페이지</title>
</head>
<body><p/><p/><p/>
<h1>회원이므로 이 기능을 이용할 수 있습니다.</h1>
</body>
</html>
loginCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
Cookie[] cookies = request.getCookies();
	boolean pass = false;
	if(cookies!=null){
		for(int i=0;i<cookies.length;i++){
			if(cookies[i].getName().equals("login")){
				pass = true;
				break;
			}
		}
	}
	if(!pass){
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>






세션(session)이란

웹 컨테이너에서 클라이언트의 정보를 보관할 때 사용

오직 서버에서만 생성

클라이언트마다 세션이 생성





세션과 session 기본 객체

page 디렉티브의 session 속성 값을 true로 지정

-세션이 존재하지 않을 경우 세션이 생성되고, 세션이 존재할 경우 이미 생성된 세션을 사용

session 기본 객체를 이용해서 세션에 접근

-session의 기본 값은 true이므로 false로 하지 않는 이상 항상 세션 사용

<%@ page contentType = ... %>

<%@ page session = "true" %>

<%

    ...

    session.setAttribute("userInfo", userInfo);

    ...

%>

속성 이용해서 클라이언트 관련 정보 저장



Session을 이용한 login 처리

※위 cookie를 이용한 login 처리 예제와 소스 같고 아래만 소스바꿈

loginSuccess.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	if(request.getAttribute("login")!=null){
		/*상태 정보가 session으로 감  */
		session.setAttribute("login","pass");
	}else{
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>로그인 성공</title>
</head>
<body>
<h1>로그인에 성공했습니다.</h1>
<%=request.getParameter("id") %><br/>
<%=request.getParameter("pwd") %><br/><p/>
<a href="service.jsp">서비스 이용하기</a>
</body>
</html>
loginCheck.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String login = (String)session.getAttribute("login");
	if(login==null){
		response.sendRedirect("loginForm.jsp");
		return;
	}
%>


모든 페이지에서 로그인체크 해서 세션정보(아이디 비번)값이 없으면 경고 창 띄우고 loginForm으로 이동

loginCheck.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%
	String login = (String)session.getAttribute("login");
	boolean pass = false;
	if(login!=null){
		pass = true;
	}
	
%>	
<script type="text/javascript">
	var pass = <%=pass%>;
	if(!pass){
		alert("회원으로 로그인한 경우에만 사용할 수 있습니다.");
		location.href="loginForm.jsp";
	}
</script>




자바빈

Bean

-1.기본 생성자

-2.변수

-3.set,get

-4.public



자바빈(JavaBeans)


-자바빈 - 웹 프로그래밍에서 데이터의 표현을 목적으로 사용

-일반적인 구성

값을 저장하기 위한 필드

값을 수정하기 위한 setter

값을 읽기 위한 getter


public class BeanClassName {
    /* 값을 저장하는 필드 */
    private String value;
    
    /* BeanClassName의 기본 생성자 */
    public BeanClassName() {
    }
    
    /* 필드의 값을 읽어오는 값 */
    public String getValue() {
        return value;
    }

    /* 필드의 값을 변경하는 값 */
    public void setValue(String value) {
        this.value = value;
    }
}

<jsp:useBean> 태그

JSP에서 자바빈 객체를 생성할 때 사용

구문

-<jsp:useBean id="[빈이름]" class="[자바빈클래스이름]"    scope="[범위]" />

id - JSP 페이지에서 자바빈 객체에 접근할 때 사용할 이름

class - 패키지 이름을 포함한 자바빈 클래스의 완전한 이름

scope - 자바빈 객체가 저장될 영역을 지정한다. page, request, session, application 중 

하나를 값으로 갖는다. 기본값은 page.

-예

<jsp:useBean id="info" class="chap11.member.MemberInfo" scope="request" />
<%= info.getName() %>







+ Recent posts