Cookie
Cookie란
: 우리가 흔히 인터넷 사용기록에서 볼 수 있는 Cookie 이름의 뜻이 실제로 우리가 먹는 쿠키랑 연관이 있는지 몰랐다.
쿠키를 먹을때 부스러기가 남아 쿠키를 먹은 흔적이 생기듯이, 클라이언트와 서버가 연결했었던 흔적을 브라우저에 저장하는게 비슷하여 쿠키라고 부른다고 한다 ㅎㅎ
브라우저가 자체적으로만든 쿠키
login.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();
System.out.println("cookies : "+cookies);
if(cookies != null){
for(Cookie c:cookies){
if(c.getName().equals("memberId")){
response.sendRedirect("loginOk.jsp");
//쿠키 유효기간안에 다시 로그인을 한다면 로그인 할 필요 없이 바로 넘어감
}
}
}
%>
<%-- 로그인 형식 --%>
<form action="loginCon" method="post">
ID : <input type="text" name="mID" ><br>
PW : <input type="text" name="mPW" ><br>
<input type="submit" value="login">
</form>
</body>
</html>
loginCon.java (Servlet)
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
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("/loginCon")
public class loginCon extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
String mId = request.getParameter("mID");
String mPw = request.getParameter("mPW");
out.println("mID:"+mId);
out.println("mPW:"+mPw);
Cookie[] cookies = request.getCookies(); //쿠키는 클라이언트에 저장이 됨 , 클라이언트의 요청에 저장
Cookie cookie = null;
for(Cookie c: cookies)
{
System.out.println("이름:"+c.getName()+"값:"+c.getValue());
if(c.getName().equals("memberId"))
{
cookie = c;
}
}
if(cookie ==null) {
System.out.println("쿠키가 없습니다.");
cookie = new Cookie("memberId",mId);
}
response.addCookie(cookie);
cookie.setMaxAge(60*60); //시간을 설정 쿠키 유효 만료 기간 1시간
response.sendRedirect("loginOk.jsp");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
로그인이 완료되면 저장된 쿠키를 보여줌!
loginOk.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();
for(Cookie c : cookies)
{
out.println("name: "+c.getName()+"<br>");
out.println("value: "+c.getValue()+"<br>");
out.println("-----------------------------<br>");
}
%>
</body>
</html>
코드를 돌려보는중 , login 창에서 서블릿으로 넘어가는데 자꾸 404 에러가 떴다 ㅠ 제대로 쓴거같은데 계속 에러가 뜨길래 다른 서블릿도 실행해봤는데 잘 나왔다. 구글링해보다가 해결책을 찾았다.
톰캣이 설치된 경로에 생성되어있는 work 폴더를 삭제 후 다시 서버를 껐다 키니까 제대로 동작했다.
Comments