문제
사진
'id 기억하기' 체크박스를 체크한 후 'Login'버튼을 클릭하면 입력했던
'ID'값을 쿠키에 저장하고, 쿠키에 'ID'값이 저장되어 있으면 현재 화면의
'ID'입력 창에 그 값이 출력되도록 하고, 체크박스도 체크가 된 상태로
유지 되도록 한다.
체크박스를 해제한 후 'Login'버튼을 클릭하면 쿠키에 저장된 'ID'값을 삭제하고
체크박스도 체크가 해제된 상태가 되도록 한다.
로그인 성공은 ID와 Password가 'test', '1234'이고, 로그인에 성공하면
'cookieMain.jsp'로 이동되도록 한다.
로그인에 실패하면 'cookieLogin.jsp'로 이동한다.
cookieMain.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>
<h3>Cookie 연습용 main페이지 입니다</h3>
<a href="<%=request.getContextPath()%>/cookie/cookieLogin.jsp">Login 창으로 이동</a><br><br>
</body>
</html>
cookieLogin.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>
<style>
label{
display: inline-block;
width: 50px;
}
input[type=submit]{
margin-left: 110px;
}
</style>
<%
String id = "";
String checked ="";
Cookie[] cookieArr = request.getCookies();
if(cookieArr==null || cookieArr.length==0) {
} else {
for(Cookie cookie : cookieArr) {
String name = cookie.getName(); // '쿠키이름' 구하기
if(name.equals("id")){ // 쿠키에 id값이 있는 지 확인
id = cookie.getValue(); // id값을 가져와서 input value에 값 대입
checked = "checked"; // 체크박스 체크 여부
break;
}
// 만약 값이 없다면 id="" checked=""이므로 id값과 체크박스가 비어있게됨
}
}
%>
</head>
<body>
<form action="<%=request.getContextPath() %>/cookieLoginServlet.do" method="post">
<label>ID : </label>
<input type="text" placeholder="ID 입력하세요." name="id" value="<%=id %>"><!-- id값 대입 -->
<br>
<label>PASS : </label>
<input type="password" placeholder="PassWord 입력하세요." name="password">
<br>
<input type="checkbox" name="idSave" value="save" <%=checked %>>id 기억하기 <!-- checked대입 -->
<br>
<input type="submit" value="Login">
</form>
</body>
</html>
CookieLoginServlet
package kr.or.ddit.cookie;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/cookieLoginServlet.do")
public class CookieLoginTest extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String id = request.getParameter("id");
String pw = request.getParameter("password");
// checkbox확인
String SaveChk = request.getParameter("idSave");
if(SaveChk!=null) { // 아이디 저장 체크가 되었는지 확인
// 저장되어있다면 id 쿠키 저장
Cookie idCookie = new Cookie("id", id);
response.addCookie(idCookie);
} else {
// 저장되어있지 않다면 쿠키 삭제
Cookie[] cookie = request.getCookies();
for(Cookie co : cookie) {
co.setMaxAge(0);
response.addCookie(co);
}
}
if(id.equals("test")&&pw.equals("1234")) { // 로그인 여부
// 성공시 Main화면
response.sendRedirect(request.getContextPath()+"/cookie/cookieMain.jsp");
return; // 종료
}
// 실패시 Login창
response.sendRedirect(request.getContextPath()+"/cookie/cookieLogin.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}