[spring 팀프로젝트] - 웹사이트 제작 6.인터셉터 설정

JINI·2022년 12월 8일
0
post-thumbnail

로그인이 필요한 페이지는 인터셉터를 적용해 로그인 사용자만 이용가능하도록 처리한다.
인터셉터는 컨트롤러 전에 미리 처리해서 실행되는 코드로 컨트롤러로 가지않고 미리 처리하기 때문에 단계 간소화로 메모리 낭비를 줄일 수 있다.


🧩인터셉터 설정

1.📕Interceptor

1. Alt+Shift+S ➡️ Override/Implements Methods 클릭
2. preHandle() 체크 ➡️ OK

public class memberInterceptor extends HandlerInterceptorAdapter implements memberLoginSession{

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {

		HttpSession session = request.getSession(); //세션 얻어오기
		if(session.getAttribute(LOGIN) == null) {//여기서 미리 작성
			response.setContentType("text/html; charset=utf-8");
			PrintWriter out = response.getWriter();
			out.print("<script>alert('로그인 후 이용가능합니다.'); "
					+ "location.href ='"+request.getContextPath() +"/member/login';</script>"); 
			return false;  //해당 redirect
		}
		System.out.println("인터셉터실행");
		return true;  
	}
}

세션을 얻어오고 로그인이 되있지 않다면 경고창이 뜨면서 로그인 페이지로 이동한다.

return true는 ㅎ해당 사용자가 요청한 경로가 들어가고 인터셉터가 끝나면 컨트롤러가 실행된다.


2.📕servlet-context.xml

url을 servlet-context.xml에 설정한다.

1. 빈만들기
2. 인터셉터 설정

3. 경로 설정

<!-- 빈만들기 class= "자료형" id = "변수명" -->
<beans:bean id ="변수명" class="자료형"/>
		<!-- 인터셉터 설정 -->
		<interceptors>
			<interceptor>
				<mapping path="경로설정"/>
				<beans:ref bean = ""/> 
			</interceptor>
 		</interceptors>
 </beans:beans>

<beans:bean id ="memberInterceptor" 
class="com.care.root.member.interceptor.memberInterceptor"/>
  <interceptors>
          <interceptor>
              <mapping path="/board/reviewWrite" />
              <mapping path="/board/reviewDetail" />
              <mapping path="/booking/booking" />
              <beans:ref bean="memberInterceptor" />
          </interceptor>
  </interceptors>
</beans:beans>

글 작성, 이용 후기조회, 예약하기를 인터셉터로 적용했다.


profile
꾸준히 성장하는 개발자

0개의 댓글