프로그래밍 언어/자바 웹

encodeURL() 사용법

· 코딩마이데이

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

실습 파일

 

2. SessionTest5 클래스를 다음과 같이 작성합니다. 다시 /login으로 요청해 jsessionId를 URL rewriting 방식으로 가져온 후 세션에 접근하여 로그인 상태 유무를 판단하도록 구현합니다.

package sec04.ex01;

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;


@WebServlet("/login")
public class SessionTest5 extends HttpServlet {
	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);
	}
	
	private void doHandle(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;chatset=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();
			}
		}
	}
}

 

3. 로그인창에서 ID와 비밀번호를 입력하고 로그인합니다.

로그인창에서 로그인

 

4. 로그인 상태 확인을 클릭합니다.

로그인 상태 확인 클릭

 

5. 서블릿에 jsessionId 쿠키 값을 전송해 로그인 상태를 유지합니다.

서블릿에 jsessionId 쿠키 값 전송

 

대부분의 브라우저는 쿠키 사용을 기본으로 설정하고 있지만 쿠키를 사용할 수 없을 경우에는 이렇게 encodeURL() 메서드를 이용해 세션 기능을 사용할 수 있습니다.