백견불여일타 267쪽 도전해보세요.
loginForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="testLogin.jsp">
<label for="userid">아이디: </label>
<input type="text" name="id" id="userid"><br>
<label for="userpw">암 호: </label>
<input type="password" name="pw" id="userpw"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
testLogin.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//실제로는 DB에서 가져와야 하는 값
String id = "pinksung";
String pw = "1234";
String name = "성윤정";
if(id.equals(request.getParameter("id")) && pw.equals(request.getParameter("pw"))){
//id, pw 같을 때만 쿠키 생성하고 client에 추가
//1. cookie 객체 생성(username에 성윤정을 맵핑)
Cookie c = new Cookie("username", name);
//2. 속성 부여
response.addCookie(new Cookie("id", "pinksung"));
//3. 클라이언트에 전송
response.addCookie(c);
%>
<h2>성공적으로 로그인하셨습니다.</h2>
<p><a href="main.jsp">들어가기</a>
<%
}else {
%>
<h2>로그인에 실패했습니다.</h2>
<p><a href="loginForm.jsp">되돌아가기</a>
response.sendRedirect("260_loginForm.jsp");
<%
}
%>
main.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//Cookie에서 name과 value를 얻어와서 비교
Cookie ck[] = null;
//1. 클라이언트로부터 Cookie[]를 얻어온
ck = request.getCookies();
String name, username;
if(ck != null){
for(Cookie c : ck){
if(c.getName().equals("username")){
%>
<%=c.getValue()%>
님 안녕하세요!<br>
저희 홈페이지에 방문해 주셔서 감사합니다. <br>
즐거운 시간 되세요....
<form method="post" action="logout.jsp">
<input type="submit" value="로그아웃">
</form>
<%
}
}
}else {
%>
<h2>로그인에 실패했습니다.</h2>
<p> <a href="loginForm.jsp">되돌아가기</a>
<%
}
%>
</body>
</html>
logout.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
//전체 쿠키 얻어와 배열에 저장
Cookie[] cookies = request.getCookies() ;
if(cookies != null){
for(int i=0; i < cookies.length; i++){
//쿠키를 하나씩 꺼내와 유효기간을 만료시킴
cookies[i].setMaxAge(0) ;
//클라이언트에 해당 쿠키 정보를 전송 (response 객체 헤더에 추가)
response.addCookie(cookies[i]);
}
}
%>
<script>
alert("로그아웃되었습니다.");
location.href="loginForm.jsp";
</script>
</body>
</html>
testLogin.jsp
<body>
<%
String id="pinksung";
String pwd="1234";
String name="성윤정";
if(id.equals(request.getParameter("id"))&&
pwd.equals(request.getParameter("pwd"))){
Cookie c = new Cookie("username",URLEncoder.encode(name,"UTF-8"));
c.setMaxAge(365*24*60*60);
response.addCookie(c);
%>
<h2>성공적으로 로그인하셨습니다.</h2>
<p><a href="main.jsp">들어가기</a>
<%}else{ %>
<h2>로그인에 실패했습니다.</h2>
<p><a href="loginForm.jsp">돌아가기</a>
<%} %>
</body>
main.jsp
<body>
<%
Cookie []ck = request.getCookies();
String str= null;
if(ck != null){
for(Cookie c : ck)
{
str = URLDecoder.decode(c.getValue(),"UTF-8");
}
out.print(str);
%>
님 안녕하세요!<br>
저희 홈페이지에 방문해 주셔서 감사합니다.<br>
즐거운 시간되세요...<br>
<form method="post" action="logout.jsp">
<input type="submit" value="로그아웃">
</form>
<%} else { %>
<h2>로그인에 실패했습니다.</h2>
<p><a href="loginForm.jsp">돌아가기</a>
<%} %>
</body>
logout.jsp
<body>
<%
Cookie cookie = new Cookie("username","");
cookie.setMaxAge(0);
response.addCookie(cookie);
%>
<script>
alert("로그 아웃 되었습니다.");
location.href="loginForm.jsp";
</script>
</body>