2-26 세션(Session) - 실습(2)

서현우·2022년 5월 15일
0

스프링의정석

목록 보기
26/85

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타입으로 저장해서 보냄.

BoardController.java

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"; //로그인을 한 상태면, 게시판 화면으로 이동
	}

loginForm.jsp

input태그에 URL을 hidden타입으로 받음.

<input type="hidden" name="toURL" value="${param.toURL }">

LoginController.java

매개변수로 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;

세션을 시작할까?

session = "true" or session = "false"?

세션은 서버에 부담이 많이 됨. --> 세션 유지기간이 가능한 짧아야 함.

세션이 없을 때 true(디폴트)는 세션 생성, false는 생성 안함.
세션이 있을 때 true, false 둘 다 세션 생성 안함.
(세션이 있을 때(세션이 시작한 이후)는 true, false 똑같음.)
즉, true, false는 세션을 "시작"할까? 라는 뜻.

  1. 세션이 필요없는 JSP화면 session=false.
  2. session=false가 기존 세션에 영향 X.

profile
안녕하세요!!

0개의 댓글