세션을 이용한 로그인 정보 바인딩 실습
1. 실습하기 전에 해야할 일이 있습니다. 톰캣이 종료된 후에도 세션이 메모리에서 삭제되지 않는 경우가 있으므로 톰캣 설정 파일인 context.xml을 열어 <Manager pathname="" /> 태그의 주석을 해제해야 합니다.

2. 다음과 같이 실습 파일을 준비합니다.

3. 로그인창에서 ID와 비밀번호를 입력한 후 서블릿으로 전송할 수 있도록 login2.html 파일을 작성합니다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form name="frmLogin" method="post" action="login" encType="UTF-8">
아이디 :<input type="text" name="user_id"><br>
비밀번호:<input type="password" name="user_pw"><br>
<input type="submit" value="로그인">
<input type="reset" value="다시입력">
</form>
</body>
</html>
4. SessionTest4 클래스를 다음과 같이 작성합니다. 로그인창에서 로그인할 경우 ID와 비밀번호를 가져오고, 최초 요청 시 세션에 setAttribute() 메서드를 이용해 user_id로 사용자 ID를 바인딩하도록 구현합니다. <a> 태그를 이용해 재요청하고 세션의 getSttribute() 메서드를 이용하여 user_id 값을 가져와 로그인 여부를 확인합니다.
package sec03.ex04;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
@WebServlet("/login")
public class SessionTest4 extends HttpServlet {
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String user_id = request.getParameter("user_id");
String user_pw = request.getParameter("user_pw");
if (session.isNew()) {
if (user_id != null) {
session.setAttribute("user_id", user_id);
out.println("<a href='login'>로그인 상태 확인</a>");
} else {
out.print("<a href='login2.html'>다시 로그인 하세요!!</a>");
session.invalidate();
}
} else {
user_id = (String) session.getAttribute("user_id");
if (user_id != null && user_id.length() != 0) {
out.print("안녕하세요 " + user_id + "님!!!");
} else {
out.print("<a href='login2.html'>다시 로그인 하세요!!</a>");
session.invalidate();
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
}
5. 로그인창 요청 후 ID와 비밀번호를 입력하고 전송합니다.

6. 최초 로그인 시 세션에 ID를 바인딩합니다.

7. 다시 로그인 상태 확인을 클릭해 /login으로 재요청하면 현재 로그인 상태를 출력합니다.

8. 톰캣 재실행 후 로그인창으로 거치지 않고 바로 /login으로 요청하면 세션에 ID가 없으므로 "다시 로그인 하세요!!"라는 메시지 가 출력됩니다.

'프로그래밍 언어 > 자바 웹' 카테고리의 다른 글
| 세션을 이용한 로그인 예제 (0) | 2025.08.23 |
|---|---|
| encodeURL() 사용법 (0) | 2025.08.20 |
| 다른 브라우저에서 새 세션 만들기 (3) | 2025.08.14 |
| 서블릿에서 세션 API 이용하기 (2) | 2025.08.11 |
| 세션 API의 특징과 기능 (1) | 2025.08.11 |