`

SpringMVC中的mvc:interceptors标签配置拦截器

阅读更多

mvc:interceptors

这个标签用于注册一个自定义拦截器或者是WebRequestInterceptors.

可以通过定义URL来进行路径请求拦截,可以做到较为细粒度的拦截控制。

例如在配置文件加入

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

http://www.springframework.org/schema/mvc

http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

<!-- 以下配置将拦截所有的URL请求 -->

<mvc:interceptors>

<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />

</mvc:interceptors>

<!-- 以下配置将拦截特有的URL请求 -->

<mvc:interceptors>

<mvc:interceptor>

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

<bean class="org.example.SecurityInterceptor" />

</mvc:interceptor>

<mvc:interceptor>

<mvc:mapping path="/admin/*.do"/>

<bean class="org.example.admin.ControlInterceptor" />

</mvc:interceptor>

</mvc:interceptors>

</beans>
 
拦截器

Spring为我们提供了org.springframework.web.servlet.handler.HandlerInterceptorAdapter这个适配器,继承此类,可以非常方便的实现自己的拦截器。他有三个方法:

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)    
        throws Exception {    
        return true;    
    }    
    public void postHandle(    
            HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)    
            throws Exception {    
    }    
    public void afterCompletion(    
            HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)    
            throws Exception {    
    }  

 分别实现预处理、后处理(调用了Service并返回ModelAndView,但未进行页面渲染)、返回处理(已经渲染了页面)
在preHandle中,可以进行编码、安全控制等处理;
在postHandle中,有机会修改ModelAndView;
在afterCompletion中,可以根据ex是否为null判断是否发生了异常,进行日志记录。

如果基于xml配置使用Spring MVC,
可以利用SimpleUrlHandlerMapping、BeanNameUrlHandlerMapping进行Url映射(相当于struts的path映射)和拦截请求(注入interceptors),
如果基于注解使用Spring MVC,可以使用DefaultAnnotationHandlerMapping注入interceptors。
注意无论基于xml还是基于注解,HandlerMapping bean都是需要在xml中配置的。

 
分享到:
评论

相关推荐

    防止SpringMVC拦截器拦截js等静态资源文件的解决方法

    在SpringMVC的配置文件中(通常是spring-mvc.xml),可以通过配置&lt;mvc:interceptors&gt;元素来定义一个或多个拦截器。在定义拦截器时,可以使用&lt;mvc:exclude-mapping&gt;元素来指定不希望拦截器拦截的路径。这些路径包括...

    spring mvc xml配置拦截器

    在Spring MVC的配置文件(通常为`servlet-context.xml`)中,我们需要声明拦截器并将其添加到`&lt;mvc:interceptors&gt;`标签下。以下是一个示例配置: ```xml &lt;beans xmlns="http://...

    SpringMVC配置拦截器实现登录控制的方法

    2. 配置拦截器:在SpringMVC配置文件中需要声明拦截器。使用&lt;mvc:interceptors&gt;标签来定义一个或多个拦截器。可以使用&lt;mvc:interceptor&gt;标签来指定拦截器,并通过&lt;mvc:mapping&gt;来指定拦截器适用的URL模式。 3. ...

    SpringMVC-12 拦截器

    通过这个教程“SpringMVC-12-Interceptor”,你将能够掌握Spring MVC中拦截器的使用,包括创建自定义拦截器、配置拦截器以及理解多个拦截器的执行顺序。这将使你有能力在实际项目中灵活运用拦截器来实现各种业务需求...

    SpringMVC拦截器

    5. 在 SpringMVC 的配置文件中注册拦截器,通常是在 `&lt;mvc:interceptors&gt;` 标签内使用 `&lt;bean&gt;` 标签定义拦截器,并在 `&lt;mvc:mapping&gt;` 中指定拦截的路径。 例如,一个简单的权限验证拦截器可能如下所示: ```java...

    SpringMVC拦截器源码.rar

    在SpringMVC的配置中,我们可以通过`&lt;mvc:interceptors&gt;`标签来声明和配置拦截器。每个拦截器由`&lt;mvc:interceptor&gt;`标签定义,并通过`&lt;mvc:mapping&gt;`指定拦截的URL模式。例如: ```xml &lt;mvc:interceptors&gt; &lt;mvc:...

    基于springMVC的session拦截器

    在SpringMVC的配置文件中,我们需要将自定义的Session拦截器添加到拦截器链中。这通常通过`&lt;mvc:interceptors&gt;`标签和`&lt;mvc:interceptor&gt;`子标签完成。例如: ```xml &lt;mvc:interceptors&gt; &lt;mvc:interceptor&gt; ...

    SSM项目 拦截器(csdn)————程序.pdf

    可以在mvc:interceptors元素中配置拦截器,并指定其拦截的路径。 下面是配置拦截器的示例代码: ```xml &lt;mvc:interceptors&gt; &lt;mvc:interceptor&gt; &lt;!-- 拦截所有mvc控制器 --&gt; &lt;mvc:mapping path="/"/&gt; &lt;!-- 排除...

    springmvc(自定义拦截器的使用)

    在Spring MVC的配置文件中,你需要使用`&lt;mvc:interceptors&gt;`标签来定义拦截器集合。每个拦截器可以由`&lt;mvc:interceptor&gt;`标签定义,并通过`&lt;mvc:mapping&gt;`指定其匹配的URL路径。 ```xml &lt;mvc:interceptors&gt; &lt;!-- ...

    (代码)SpringMVC第11讲:拦截器

    在Spring MVC的配置文件中,我们可以通过`&lt;mvc:interceptors&gt;`标签来注册拦截器。每个`&lt;mvc:interceptor&gt;`子标签代表一个拦截器,其中`&lt;mvc:mapping&gt;`用于指定拦截的URL路径,`&lt;bean&gt;`标签则用于定义拦截器的Bean...

    SpringMVC 拦截器 实现 登录退出功能

    在SpringMVC框架中,拦截器(Interceptor)是一种非常重要的机制,它允许我们在请求被控制器处理之前或之后执行自定义逻辑。在本例中,我们将讨论如何使用拦截器来实现用户登录验证以及安全退出功能。 首先,我们...

    【SpringMVC】 4.3 拦截器(csdn)————程序.pdf

    在`&lt;mvc:interceptors&gt;`标签内添加`&lt;bean&gt;`标签,指定拦截器的bean名称。 ```xml &lt;mvc:interceptors&gt; &lt;mvc:interceptor&gt; &lt;mvc:mapping path="/**" /&gt; &lt;/mvc:interceptor&gt; &lt;/mvc:interceptors&gt; ``` 4.3.3 多个...

    SpringMVC拦截器的使用

    在Spring的XML配置文件中,可以通过`&lt;mvc:interceptors&gt;`标签来添加拦截器: ```xml &lt;mvc:interceptors&gt; &lt;mvc:interceptor&gt; &lt;mvc:mapping path="/**" /&gt; &lt;!-- 排除不需要拦截的URL --&gt; &lt;mvc:exclude-mapping ...

    Spring MVC 拦截器入门例子

    在Spring Boot应用中,可以使用`@Configuration`和`@EnableWebMvc`注解,然后在类中使用`@Bean`注解声明拦截器: ```java @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @...

    SpringMVC第三天.pdf

    3. **配置顺序的影响**:拦截器的执行顺序与在`springmvc.xml`中的配置顺序一致。 例如,如果配置了两个拦截器A和B,则执行顺序为: - preHandle(A) → preHandle(B) → 控制器方法 → postHandle(B) → ...

    SpringMVC(十)拦截器

    在Spring MVC中,可以通过以下两种方式配置拦截器: 1. 配置XML:在spring-mvc.xml配置文件中,使用&lt;mvc:interceptors&gt;标签来定义拦截器。每个&lt;mvc:interceptor&gt;标签代表一个拦截器,通过&lt;mvc:mapping&gt;指定拦截的...

    SpringMVC 中的拦截器与异常处理

    1. 拦截器的注册:拦截器需要在SpringMVC配置中进行注册,通过`&lt;mvc:interceptors&gt;`标签或者在Java配置中使用`addInterceptors()`方法添加到拦截器链中。每个拦截器都有`preHandle()`, `postHandle()` 和 `...

    SpringMVC拦截器配置及运行流程解析

    SpringMVC拦截器配置及运行流程解析 SpringMVC拦截器是指在SpringMVC框架中,用于拦截和处理请求的组件。拦截器可以在请求处理之前、之后或抛出异常时执行某些操作,例如身份验证、日志记录、异常处理等。SpringMVC...

    SpringMVC学习(十二)——SpringMVC中的拦截器

    然后在Java配置类中添加这个拦截器: ```java @Configuration @EnableWebMvc public class WebConfig implements WebMvcConfigurer { @Override public void addInterceptors(InterceptorRegistry registry) { ...

Global site tag (gtag.js) - Google Analytics