백엔드/웹개발
[이클립스/웹개발] 브라우저 쿠키 차단된 경우 encodeURL() 사용
김곰댕
2022. 2. 24. 12:37
728x90
브라우저에서 쿠키 기능을 사용할 수 없도록 설정해놓았다면 쿠키 기능은 물론 세션기능도 사용할 수 없다. 이런 경우에는 encodeURL()메서드를 이용해 직접 서버에서 브라우저로 응답을 먼저 보낸 후 URL Rewriting 방법을 이용해 jsessionID를 서버로 전송하여 세션 기능을 사용하면 된다.
1. 다음과 같이 SessionTest5와 login2.html파일을 만든다.
2. SessionTest5에 아래와 같은 코드를 입력한다.
다시 /login으로 요청해 jsessionId를 URL rewriting 방식으로 가져온 후 세션에 접근하여 로그인 상태 유무를 판단하도록 구현
package sec04.ex01;
import java.io.IOException;
import java.io.PrintWriter;
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;
@WebServlet("/login4")
public class SessionTest5 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doHandle(request, response);
}
@Override
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;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);
String url=response.encodeURL("login4");
out.println("<a href="+url+">로그인 상태 확인</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();
}
}
}
}
3. login2.html에 아래와 같은 코드를 입력한다.
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인창</title>
</head>
<body>
<form name="frmLogin" method="post" action="login4" 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. 로그인창에서 ID와 비밀번호를 입력하고 로그인
5. 로그인 상태 확인을 클릭
6. 서블릿에 jessionID 쿠키 값을 전송해 로그인 상태 유지
728x90