index.jsp에서 Board를 누르면 BoardController에서 로그인 유무 확인.
로그인 되어 있으면 boardList.jsp로 이동.
로그인 안되어있으면 loginForm.jsp로 리다이렉트.
loginForm.jsp에서 입력한 id, pw를 LoginController에서 확인.
id, pwd 가 일치하면 boardList.jsp로 이동.
일치하지 않으면 loginForm.jsp로 리다이렉트.
loginForm.jsp에서 boardList.jsp로 이동하려면 "/board/list"를 BoardController에서 가져와야 함.
URL을 얻는 방법은 request.getRequestURL(), request.getHeader("refer")가 있음.
받아온 값을 input태크에 hidden타입으로 저장해서 보냄.
redirect할 때 URL을 추가해서 보냄.
@Controller
@RequestMapping("/board")
public class BoardController {
@GetMapping("/list")
public String list(HttpServletRequest request) {
if(!loginCheck(request))
return "redirect:/login/login?toURL="+request.getRequestURL(); //로그인을 안했으면 로그인 화면으로 이동
return "boardList"; //로그인을 한 상태면, 게시판 화면으로 이동
}
input태그에 URL을 hidden타입으로 받음.
<input type="hidden" name="toURL" value="${param.toURL }">
매개변수로 String toURL을 추가해서 loginForm.jsp에서 toURL을 받음.
@PostMapping("/login")
public String login(String id, String pwd, String toURL, boolean rememberId,
HttpServletRequest request, HttpServletResponse response) throws Exception {
toURL이 null이면 홈으로, 아니면 toURL로 리다이렉트.
toURL = toURL==null || toURL.equals("") ? "/" : toURL;
return "redirect:"+toURL;
세션은 서버에 부담이 많이 됨. --> 세션 유지기간이 가능한 짧아야 함.
세션이 없을 때 true(디폴트)는 세션 생성, false는 생성 안함.
세션이 있을 때 true, false 둘 다 세션 생성 안함.
(세션이 있을 때(세션이 시작한 이후)는 true, false 똑같음.)
즉, true, false는 세션을 "시작"할까? 라는 뜻.