로그아웃 기능을 만들다가 사용자에게 알람 띄우고 메인화면으로 돌아가게 하는 과정에서 response is not defined가 발생했다

발생한 이유는 JavaScript 코드 내에서 response라는 객체를 찾을 수 없기 때문에 발생한 것이다
즉 response.sendRedirect() 코드를 <script> 태그 안에 넣었기 때문에 에러가 발생한 것
<script>
// 사용자에게 로그아웃 성공 알림창 띄우기
alert("성공적으로 로그아웃 되었습니다")
// 메인으로 돌아가기
response.sendRedirect("controller.jsp?command=MAINPAGE");
</script>
수정을 위해 response.sendRedirect()를 스크립트 밖으로 뺏으나 이번에는 알림창이 뜨지 않고 바로 메인페이지로 돌아가는 이슈가 발생했다
제미나이에게 물어본 결과 알림창이 뜨지 않은 이유는 페이지를 실행하게 되면 JSP 파일이 서버에서 HTML을 생성한다
그 다음서버가 <%response.sendRedirect(...)%> 코드를 만나자마자, 생성 중이던 모든 HTML 응답을 취소하고, 브라우저에게 "새로운 주소로 즉시 이동하라"는 명령을 보낸다.따라서 브라우저는 즉시 메인페이지로 이동하게 된다
즉 리다이렉트 명령이 너무 빨라서, 브라우저가 <script> 태그를 읽고 alert()를 실행할 기회조차 얻지 못햇기때문이다
그래서 리다이렉트대신 window.location.href을 사용해야한다
완성
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- 로그아웃을 시킬려면 메인에서 로그아웃을 눌렀을때 로그아웃이 진행이 되어야함
그럴려면 일단 로그아웃으로 연결되는 페이지가 있어야하고
그 페이지에서 알람을 띄운 다음에 다시 메인으로 가야함 -->
<%
//세션에 저장된 정보를 비워야함
session.invalidate();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그아웃</title>
</head>
<body>
<script>
// 사용자에게 로그아웃 성공 알림창 띄우기
alert("성공적으로 로그아웃 되었습니다");
//메인으로 돌아가기
<%--response.sendRedirect("controller.jsp?command=MAINPAGE"); --%>
//스크립트 밖으로 response.sendredirect를 사용하려고 했으나 alert가 뜨지 않고 바로 메인페이지로 넘어감....
window.location.href="controller.jsp?command=MAINPAGE";
</script>
</body>
</html>
✔️session.invalidate();
invalidate의 역할
session.invalidate();는 이 세션 저장 공간 자체를 파괴하고 삭제하는 메서드다
이 코드가 실행되면, 세션에 저장되어 있던 모든 정보(예: userInfo, 장바구니 데이터 등)가 서버 메모리에서 완전히 사라진다
이후 해당 세션 객체를 사용하려 한다면 새로운 세션이 생성된다. invalidate()로 세션을 삭제한다면 해당 삭제한 세션을 사용할 수 없다.
주로 로그아웃 시 세션을 완전히 종료할 때 사용하거나 회원 탈퇴를 할 때도 사용 할수 있다
session.invalidate(); = 세션 자체를 파괴(무효화)한다
session.removeAttribute("userInfo"); = 세션은 유지한채 특정 값만 제거한다 따라서 세션의 특정값만 없어진 것이므로 세션의 재사용이 가능하다
'🐢🐢꼬부기 LV.2 | 실습•에러 > 🛡️껍질에 숨기(에러해결)' 카테고리의 다른 글
| JSP 파일 생성시 <%@ 지시어 에러 해결 (0) | 2025.11.25 |
|---|---|
| ORA-02264: 같은 이름의 제약조건이 이미 존재한다 에러 해결방법 (0) | 2025.11.24 |
| ORA-00936: missing expression 에러해결 (0) | 2025.11.14 |
| 오라클 ORA-02289: sequence does not exist 에러 해결 (0) | 2025.11.08 |
| ORA-01017: invalid username/password; logon denied 에러해결 방법 (0) | 2025.11.03 |