2. 로그인 후, 게시판으로 이동
사용자가 게시판을 로그인 하지 않고 클릭 했을 때 로그인 후 홈화면 보다는 게시판을 보여주는 것이 좋다.
각 단계마다 어디서부터 오고 가야 하는지 저장되어 있다. LoginController에서 boardList로 넘어가기 위해서는 '/board/list' 주소가 LoginController에게 전달되어야 한다. 하지만 '/board/list'는 BoardController, loginForm에만 있기 때문에 이 정보를 LoginController에게 전달해야한다.
to 정보는 request.getRequestURL() 메서드를 사용하면 알 수 있고 from 정보는 request.getHeader("referer") 메서드를 이용하면 알 수 있다.
PerformanceFilter를 고쳐야 한다. 매개 변수가 HttpServletRequest가 아니기 때문에 형변환을 해야한다.
형변환 후 getHeader를 이용해서 어디서 온 페이지인지 알 수 있다.
코드를 수정하고 Home을 클릭하면 Home에서 Home으로 GET 요청한 것을 알 수 있다.
게시판을 클릭하면 Home에서 Board로 GET 요청한 것을 알 수 있다.
로그아웃하고 Home에서 게시판을 접근하면 redirect되어서 Home에서 login으로 GET 요청한 것을 알 수 있다.
다시 로그인하면 login에서 login으로 이동하는데 이전은 GET요청이고 뒤는 POST요청으로 다르다. id, pwd가 맞기 때문에 redirect로 Home으로 간다.
지금 하려는 것이 로그인 할경우 Home이 아니라 Board로 가게 만드는 것이다. 그러기 위해서는 requestURI를 login까지 전달해야 한다. 즉 '/board/list'에서 얻은 requestURI 정보를 loginForm, LoginController에 전달해야한다. 전달하는 방법은 GET, POST가 있는데 '/board/list'가 중요한 정보는 아니라 GET 요청을 이용한다.
"board/list"를 GET 요청으로 loginForm에게 전달하고 전달 받은 값은 loginForm에 <input> tag를 이용해서 LoginController에게 전달한다. LoginController 이 값으로 redirect하면 로그인시 Home이 아닌 Board로 이동하게된다.
BoardController에서 Query String으로 URL을 전달한다.
<input> 태그를 추가하고 값이 잘 가는지 확인한다.
값이 잘 가는 것을 확인할 수 있다.
값이 잘 찍히는지 확인했으면 text를 hidden으로 바꾼다.
아까와 다르게 보이지는 않지만 위에 URL은 찍힌다.
소스를 보면 값이 들어갔다.
LoginController에서 toURL을 받고 값이 없으면 Home으로, 값이 있으면 그 주소값으로 가게 만든다.
login하면 Home이 아니라 List로 가는 것을 볼 수 있다.
3. 세션을 시작할까?
세션은 Login 후에 필요하므로 앞에부터 생성될 필요가 없다. 세션은 서버에 부담이 많이 가므로 유지기간을 최소한으로 만든는 것이 중요하다. 이 때 사용하는 것이 session=false이다. 세션이 있을 때 true, false 둘 다 세션을 만들지 않는다. 하지만 세션이 없을 때 true는 세션을 만들지만 false는 세션을 만들지 않는다. default값이 true이다. 세션이 필요하지 않는 page에 false 값을 주면 세션의 유지기간을 줄일 수 있다.
session=false라고 해서 세션이 없어지는 것이 아니라 생성된 세션이 있으면 지속된다. 따라서 session=false를 세션을 시작하는지에 대한 답이라고 생각하면 편하다. 위를 보면 Home, Login에 session=false를 지정해도 BoardController에서 세션을 이미 만들었기 때문에 session=false를 만나도 세션이 계속 유지된다.
요약하자면
session="false"
1. 세션이 필요없는 JSP에 추가
2. 세션이 있는 기존 세션에는 영향X
loginForm, index에 session="false"를 추가한다.
Home에서 기존에 있던 쿠키를 삭제하고 새로고침해도 쿠키가 생성되지 않는다.
게시판을 누르면 쿠키가 생성된다.
매개 변수에 @CookieValue를 추가하면 cookie에 저장되어 있는 value값을 전부 가져올 수 있다.
'스프링의 정석 > Ch. 02 Spring MVC' 카테고리의 다른 글
29. DispatcherServlet 파헤치기 (0) | 2023.08.18 |
---|---|
27. 예외처리(1) - 실습 (0) | 2023.08.16 |
25. 세션(Session) - 실습(1) (0) | 2023.08.14 |
24. 세션(Session) - 이론 (0) | 2023.08.14 |
23. 쿠키(Cookie)란 (0) | 2023.08.13 |