[Web] encodeURL 사용
2024. 8. 19. 21:26ㆍ자바 웹 개발/세션 쿠키 필터 리스너
브라우저에서 쿠키 기능을 사용할 수 없게 설정했으면 encodeURL 메서드를 이용해야한다. \
@WebServlet("/login")
public class SessionTest5 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doHandle(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doHandle(req, resp);
}
private void doHandle(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
HttpSession session = req.getSession();
String user_id = req.getParameter("user_id");
String user_pw = req.getParameter("user_pw");
if(session.isNew()) {
if(user_id != null) {
session.setAttribute("user_id", user_id);
String url = resp.encodeUrl("login");
out.println("<a href=" + url + ">로그인 상태 확인</a>");
} else {
out.println("<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.println("<a href='login2.html'>다시 로그인하세요!!!</a>");
session.invalidate();
}
}
}
}
쿠키 설정이 되어 있으면 작동이 되지 않는다. 그래서 시크릿 모드로 실행하면 작동한다.
sessionID가 뒤에 추가된다.
더보기
JSESSIONID는 Java 웹 애플리케이션, 특히 서블릿을 사용하는 경우, 클라이언트(브라우저)와 서버 간의 세션을 유지하기 위해 사용되는 쿠키입니다. 사용자가 웹 애플리케이션에 접속할 때, 서버는 사용자 세션을 여러 요청 간에 식별하고 추적하기 위해 고유한 세션 ID(JSESSIONID)를 생성합니다.
왜 JSESSIONID가 나오는지
제공된 코드에서 세션 관리를 통해 사용자의 로그인 상태를 추적하고 있습니다. 이 과정에서 JSESSIONID가 어떻게 사용되는지 살펴보겠습니다:
- 세션 생성: 사용자가 처음으로 /login URL에 접근할 때, 서블릿은 req.getSession()을 사용해 세션이 존재하는지 확인합니다. 세션이 존재하지 않는 경우 새로운 세션이 생성되며, 서버는 이 세션에 고유한 세션 ID(즉, JSESSIONID)를 할당합니다.
- 세션 추적:
- 세션 ID(JSESSIONID)는 일반적으로 클라이언트 측에 쿠키로 저장됩니다. 브라우저는 이 쿠키를 이후의 모든 요청에 자동으로 포함하여 서버로 전송합니다.
- 서버는 이 세션 ID를 사용해 해당 사용자의 세션을 검색하고 추적합니다.
- 세션 유지: 기본적으로 JSESSIONID는 쿠키로 저장되지만, 클라이언트 측에서 쿠키가 비활성화된 경우 또는 URL 재작성을 통해 세션을 추적하도록 애플리케이션이 구성된 경우, JSESSIONID는 URL에 포함될 수 있습니다. 이것이 코드에서 resp.encodeUrl("login")을 사용하는 이유입니다.
JSESSIONID가 보이는 경우
- URL에 나타나는 경우: URL 재작성이 활성화되어 있거나 쿠키가 지원되지 않는 경우, 세션을 유지하기 위해 JSESSIONID가 URL에 나타날 수 있습니다.
- 쿠키로 저장되는 경우: 대부분의 경우 JSESSIONID는 쿠키로 저장되며, 브라우저가 이를 자동으로 관리하기 때문에 사용자가 직접 볼 일은 거의 없습니다.
'자바 웹 개발 > 세션 쿠키 필터 리스너' 카테고리의 다른 글
[Web] 서블릿 URL 패턴 (0) | 2024.08.21 |
---|---|
[Web] 서블릿 속성과 스코프 (0) | 2024.08.21 |
[Web] 세션을 이용한 로그인 정보 바인딩하기 (0) | 2024.08.19 |
[Web] 세션 유효 기간 설정 / 세션 삭제하기 (0) | 2024.08.19 |
[Web] 세션을 이용한 웹 페이지 연동 기능 (0) | 2024.08.19 |