728x90
브라우저에서 쿠키 기능을 사용할 수 없게 설정했다면 쿠키 기능은 물론 세션 기능도 사용할 수 없음.
이럴 때는 encodeURL( ) 메서드를 이용해 직접 서버에서 브라우저로 응답을 먼저 보낸 후 URL Rewriting 방법을 이용해 jsessionId를 서버로 전송하여 세션 기능을 사용하면 됨
브라우저에서 쿠키 사용 금지하기
1. 브라우저 더보기 버튼 클릭 -> 설정 클릭
2. 개인 정보 보호 및 보안 -> 쿠키 및 기타 사이트 데이터 클릭
3. 모든 쿠키 차단(권장되지 않음) 클릭하면 쿠키 사용이 중지된다.
이 상태에서 encodeURL( ) 메서드를 이용한 세션 사용을 실습해보자.
세션 쿠키를 사용하지 않고 encodeURL( ) 메서드를 이용해 jsessionId의 세션 id를 브라우저에 응답으로 전송한 후 세션을 사용하는 방법
1. SessionTest5.java 클래스 파일 작성
// SessionTest5.java
package sec04.ex01;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet implementation class SessionTest5
*/
@WebServlet("/login")
public class SessionTest5 extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=utf-8");
request.setCharacterEncoding("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);
String url=response.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.print("<a href='login2.html'>다시 로그인 하세요!!</a>");
session.invalidate();
}
}
}
}
2. 로그인창에서 ID와 비밀번호를 입력하고 로그인, 로그인 상태 확인 클릭
3. 서블릿에 jsessionId 쿠키 값을 전송해 로그인 상태가 유지됨
대부분의 브라우저는 쿠키 사용을 기본으로 설정하지만, 쿠키를 사용할 수 없을 경우에는 이렇게 encodeURL( ) 메서드를 이용해 세션 기능을 사용할 수 있음
728x90
'웹 개발 기초 > 자바 웹을 다루는 기술' 카테고리의 다른 글
서블릿 속성과 스코프 (0) | 2023.02.22 |
---|---|
세션을 이용한 로그인 예제 (0) | 2023.02.22 |
세션을 이용한 로그인 정보 바인딩 실습 (0) | 2023.02.22 |
서블릿에서 세션 API 이용하기 (0) | 2023.02.22 |
세션 API의 특징과 기능 (0) | 2023.02.22 |