WebServer/JSP&Servlet
[JSP&Servlet] 쿠키를 이용한 간단한 로그인&로그아웃
gangintheremark
2023. 8. 21. 18:02
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