좋아요! 올려주신 두 개의 서블릿(LoginCheckServlet.java, LogoutServlet.java)은 현재 구조도 없이 막 복붙된 상태라 컴파일도 되지 않고 실행도 안 될 상태예요. 이걸 세션 저장/조회/삭제 흐름이 잘 작동하도록 다음과 같이 정리하고 설명도 달아드릴게요.
userId, userName, 로그인 시간)를 세션에 저장LoginOK.jsp로 리디렉트alert() 띄우고 뒤로 가기LoginCheckServlet.javapackage auth.servlet;
import java.io.IOException;
import java.util.Date;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
public class LoginCheckServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 1. 사용자 입력값 받기
String userId = request.getParameter("userId");
String userPwd = request.getParameter("userPwd");
String userName = request.getParameter("userName");
// 2. (예시) DB에서 가져온 계정 정보라고 가정
String dbId = "jang";
String dbPwd = "1234";
// 3. 로그인 성공 여부 확인
if (dbId.equals(userId) && dbPwd.equals(userPwd)) {
// 3-1. 세션 생성 및 정보 저장
HttpSession session = request.getSession();
session.setAttribute("userId", userId);
session.setAttribute("userName", userName); // name도 저장
session.setAttribute("loginTime", new Date()); // 로그인 시간 저장
// 3-2. 성공 시 리디렉트 방식 이동 (새 request/response)
response.sendRedirect("LoginOK.jsp");
} else {
// 4. 로그인 실패 시 alert 띄우고 뒤로가기
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("<script>");
response.getWriter().println("alert('아이디나 비밀번호가 틀렸습니다');");
response.getWriter().println("history.back();");
response.getWriter().println("</script>");
}
}
}
LogoutServlet.javapackage auth.servlet;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
public class LogoutServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 세션 무효화 (접속 기록 삭제)
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
// 로그아웃 후 메인페이지 또는 로그인 페이지로 이동
response.sendRedirect("LoginForm.jsp");
}
}
LoginOK.jsp 예시로그인 성공 후 정보를 확인할 페이지에서 다음처럼 출력할 수 있어요:
<%@ page import="java.util.Date" %>
<%@ page session="true" %>
<%
String userId = (String) session.getAttribute("userId");
String userName = (String) session.getAttribute("userName");
Date loginTime = (Date) session.getAttribute("loginTime");
%>
<h2>로그인 완료!</h2>
<p>아이디: <%= userId %></p>
<p>이름: <%= userName %></p>
<p>로그인 시간: <%= loginTime %></p>
<a href="LogoutServlet">로그아웃</a>
필요하시면 로그인 상태 확인 필터나 세션 유지 시간 타이머도 추가해드릴 수 있어요!
👉 어떤 흐름으로 확장하고 싶은지 말해줘요~