728x90
쿠키(Cookie)란?
- 클라이언트가 서버에 정보를 요청할 때 생성되는 상태정보
- 클라이언트에 데이터 저장
LoginServlet.java
package com.servlet;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 로그인 폼에서 전송되는 아이디와 비밀번호 입력하기
String userid = request.getParameter("userid");
String passwd = request.getParameter("passwd");
// 2. DB에서 회원의 아이디 및 비밀번호 일치 여부 확인 (인증되었다고 가정)
// 3. 쿠키 생성 및 로그인 정보 저장
Cookie c = new Cookie("user", userid);
// 4. 쿠키 응답
response.addCookie(c);
// 5. 로그인 성공 후 응답처리
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><head>");
out.print("<meta charset=\"UTF-8\">");
out.print("<title>Insert title here</title>");
out.print("</head>");
out.print("<body>");
out.print("<h1>로그인성공</h1>");
out.print("안녕하세요. " + userid +"님");
out.print("<a href='mypage'>mypage</>");
out.print("</body></html>");
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
doGet(request, response);
}
}
MyPageServlet.java
package com.servlet;
@WebServlet("/mypage")
public class MyPageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 쿠키 얻기. (최대 300개)
Cookie[] cookies = request.getCookies();
String id = null;
Cookie xxx = null;
// 쿠키의 특정 회원 정보 얻기
for(Cookie c : cookies) {
if("user".equals(c.getName())) {
id = c.getValue();
xxx = c;
}
}
if(id != null) {
// 로그인 한 경우로서 응답처리
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
out.print("<html><head>");
out.print("<meta charset=\"UTF-8\">");
out.print("<title>Insert title here</title>");
out.print("</head>");
out.print("<body>");
out.print("<h1>mypage</h1>");
out.print("안녕하세요. " + id +"님");
out.print("<a href='logout'>로그아웃</>");
out.print("</body></html>");
}else {
// id값이 null이면 로그인을 안한 경우 또는 했는데 time-out
response.sendRedirect("loginForm.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
LogoutServlet.java
package com.servlet;
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//쿠키얻기 , 최대 300개
Cookie [] cookies = request.getCookies();
//로그인 정보 얻기
String id = null;
Cookie xxx = null;
for(Cookie c: cookies) {
if("user".equals(c.getName())) {
id = c.getValue();
xxx = c;
}
}
// 로그인 유무 확인
if(id!=null) {
xxx.setMaxAge(0); // 쿠키 삭제
response.addCookie(xxx);
// 로그아웃 이후의 화면 선택
response.sendRedirect("loginForm.jsp");
}else {
response.sendRedirect("loginForm.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
728x90
'WebServer > JSP&Servlet' 카테고리의 다른 글
[JSP&Servlet] JSP 태그 (0) | 2023.08.21 |
---|---|
[JSP&Servlet] 파일 업로드 (File upload) (0) | 2023.08.21 |
[JSP&Servlet] 세션을 활용한 간단한 로그인&로그아웃 (0) | 2023.08.21 |
[JSP&Servlet] 쿠키 관리 (Cookie) (0) | 2023.08.17 |
[JSP&Servlet] 세션 관리 (Session) (0) | 2023.08.17 |