로그인 안했을 때 페이지 이동

·2024년 11월 5일

스프링

목록 보기
12/33

1. 새로운 interceptor 클래스 하나 생성해서 상속받기

2. 컨트롤누르고 핸들러 누르면 해당 클래스로 이동을 하는데, preHandle과 postHandle을 가져와서 재정의 할것이다.

	public void saveUrl(HttpServletRequest request) {
		
		String uri = request.getRequestURI();  // 전체경로 주소  
		String param = request.getQueryString(); // 파라미터를 가져온다. 
		
		if(param == null || param.equals("null") || param.equals("")) {
			param = "";
		}else {
			param = "?" +param;
		}
		
		// 이동할 페이지
		String locationUrl = uri+param;
		
		HttpSession session = request.getSession();
		if(request.getMethod().equals("GET")) { // 대문자 GET
			session.setAttribute("saveUrl",locationUrl);
		}
	}

3. AuthInterceptor클래스 맨 밑에다가 새로운 메소드 생성.
사용자가 특정 페이지를 방문할 때 그 페이지의 URL을 세션에 저장하는 기능을 구현한다.

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		// 가상경로에 해당 메소드 접근 전에 가로채기

		HttpSession session = request.getSession();
		
		if(session.getAttribute("midx") == null) {
			//로그인이 안되어있으면 이동하려고 하는 주소를 보관하고 
			//로그인 페이지로 보낸다.
			saveUrl(request); // 이동할 경로를 저장한다.
			
			response.sendRedirect(request.getContextPath()+"/member/memberLogin.aws");
			return false;
		}else {
		return true;
	}

4. preHandle구문 완성

  1. 서블릿 컨텍스트 xml에 가서 빈 등록해주기

0개의 댓글