인터셉터와 ViewResolver

2024. 6. 14. 14:48IT 개발 관련(Java, Spring, JavaScript)

 

인터셉터

Intercept의 뜻은 "낚아채다" 라는 의미가 있다. 컨트롤러의 핸들러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 일종의 필터이다.

ex) preHandle() / postHandle() / afterCompletion()

 

사용자의 요청에 의해 서버에 들어온 Request 객체를 컨트롤러 핸들러로 도달하기전에 개발자가 추가적인 작업을 한 후 핸들러로 보낼 수 있도록 해준다.

 

그렇다면 왜 사용하는걸까?

이유는 특정 url을 호출 하기전이나 후에 추가적인 작업을 원할때, 로그인 체크, 권한체크 등 이 필요할 때 이다.

 

 

참조 : https://kimvampa.tistory.com/127

 

사용법

아래 예시는 권한별로 메뉴를 나타내고 싶을때 사용하는 예시이다.

 

servlet-context.xml에 url을 설정해준다.

 

ex)

<mvc:interceptor>

<mvc:mapping path="/user/**"/>

<bean class= interceptor을 처리할 패키지 및 파일 명(test.java)>

 

test.java

 

public class test extends HandlerInterceptorAdapter {

 

   private final Logger log = LoggerFactory.getLogger(test.class);

 

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

 

   request.setAttribute("menu", "");

 

   //active 설정을 주게 되면 메뉴 글자가 빛남.

  request.setAttribute("menu2", "active");

.

.

.

.

return super.preHandle(request, response, handler);

 

 

View Resolver  

View Resolver 는 Spring MVC에서 사용자가 요청한 URL에 따라 어떤 뷰를 렌더링 할지 결정하는 역할을 한다.

 

ex) testController 

 

public ModelAndView hello() {

ModelAndView mav = new ModelAndView();

// 뷰이름

mav.setViewName("hello");// setViewName() 메서드를 이용하여 뷰 이름을 지정한 모습

mav.addObject("greeting", getGreeting());

return mav;

}

 

 

ex) servlet-context.xml 

 

 

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                           http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/mvc
                           http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- Enable Spring MVC -->
    <mvc:annotation-driven/>



    <!--  View Resolver Configuration -->

 

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="WEB-INF/view"/>

<property name="suffix" value=".jsp/>

// 이는 ViewResolver가 "WEB-INF/view/뷰이름.jsp"를 뷰 JSP로 사용한다는 것을 의미한다. 

// 즉, 앞의 예에서 HelloController는 뷰 이름으로 "hello"를 리턴하므로, 실제로 사용되는 뷰 파일은 "WEB-INF/view/hello.jsp"파일이 된다.

</bean>



</beans>

 

출처: https://devbox.tistory.com/entry/Spring-ViewResolver-설정

 

[Spring] ViewResolver 설정

ViewResolver 설정 뷰 영역 구현컨트롤러는 최종적으로 결과를 출력할 뷰와 뷰에 전달할 객체를 담고 있는 ModelAndView 객체를 리턴한다.DispatherServlet은 ViewResolver를 사용하여 결과를 출력할 View 객체를

devbox.tistory.com

 

 

 

'IT 개발 관련(Java, Spring, JavaScript)' 카테고리의 다른 글

CSRF 토큰  (0) 2024.06.14
Tiles  (0) 2024.06.14
<form:form>태그  (0) 2024.06.14
소스 반영  (1) 2024.06.14
MyBatis 2개이상 연결  (1) 2024.06.14