웹 개발 기초/자바 웹을 다루는 기술

encodeURL( ) 사용법

sungw00 2023. 2. 22. 14:15
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