SpringMVC扩展

本文详细介绍了SpringMVC中的拦截器配置与执行顺序,包括preHandle、postHandle和afterCompletion三个方法。此外,还讲解了异常处理器的配置与使用,以及如何通过注解配置SpringMVC,替代web.xml和传统配置文件。最后,概述了SpringMVC的执行流程,包括DispatcherServlet、HandlerMapping、HandlerAdapter、ViewResolver等组件的作用。
摘要由CSDN通过智能技术生成

一、拦截器

1、拦截器的配置

<mvc:interceptors>
        <ref bean="firstInterceptor" />
        <!--bean和ref标签所配置的拦截器默认对DispatcherServlet处理的所有的请求进行拦截-->
        <!--第一种-->
        <!--<bean class="com.mvc.interceptor.FirstInterceptor"/>-->
        <!--第二种-->
        <!--<ref bean="firstInterceptor" />-->
        <!--第三种-->
        <!--<mvc:interceptor>
            &lt;!&ndash;配置需要拦截的请求的请求路径,/**表示所有请求,/*表示一层路径的请求&ndash;&gt;
            <mvc:mapping path="/*"/>
            &lt;!&ndash;配置不需要拦截的请求的请求路径&ndash;&gt;
            <mvc:exclude-mapping path="/abc/"/>
            &lt;!&ndash;配置拦截器&ndash;&gt;
            <ref bean="firstInterceptor"/>
        </mvc:interceptor>-->
    </mvc:interceptors>

2、拦截器的三个抽象方法

拦截器的三个方法:
preHandle():在控制器方法执行之前执行,其返回值表示对控制器方法的拦截(false )或放行(true)
postHandle():在控制器方法执行之后执行
afterCompletion():在控制器方法执行之后,且渲染视图完毕之后执行

3、多个拦截器的执行顺序

①若每个拦截器的preHandle()都返回true
此时多个拦截器的执行顺序和拦截器在SpringMVC的配置文件的配置顺序有关:
preHandle()会按照配置的顺序执行,而postHandle()和afterCompletion()会按照配置的反序执行
②若某个拦截器的preHandle()返回了false
preHandle()返回false和它之前的拦截器的preHandle()都会执行,postHandle()都不执行,返回false的拦截器之前的拦截器的afterCompletion()会执行

二、异常处理器

1、基于配置的异常处理

SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和
SimpleMappingExceptionResolver
SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver,使用方式:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                &lt;!&ndash;key设置要处理的异常,value设置出现该异常时要跳转的页面所对应的逻辑视图&ndash;&gt;
                <prop key="java.lang.ArithmeticException">error</prop>
            </props>
        </property>
        &lt;!&ndash;设置共享在请求域中的异常信息的属性名&ndash;&gt;
        <property name="exceptionAttribute" value="ex"></property>
    </bean>

2、基于注解的异常处理

/@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {
   

    //@ExceptionHandler用于设置所标识方法处理的异常
    @ExceptionHandler(ArithmeticException.class)
    public String handleException
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
扩展Spring MVC可以通过添加自定义组件、拦截器、视图解析器等方式来增强框架的功能和灵活性。下面列举了一些扩展Spring MVC的常见方式: 1. 自定义注解:可以通过自定义注解来标记特定的Controller、方法或参数,以实现自定义的请求映射和处理逻辑。 2. 自定义拦截器:通过实现HandlerInterceptor接口来编写自定义拦截器,可以在请求处理前后进行一些预处理或后处理操作。 3. 自定义参数解析器:实现HandlerMethodArgumentResolver接口,可以将请求中的特定参数解析为自定义类型,可以用于处理特殊的参数绑定逻辑。 4. 自定义返回值处理器:实现HandlerMethodReturnValueHandler接口,可以将方法返回值转换为特定的响应格式,例如将返回值转换为JSON格式。 5. 自定义视图解析器:实现ViewResolver接口,可以根据请求的特定条件选择合适的视图进行渲染。 6. 自定义异常处理器:通过实现HandlerExceptionResolver接口,可以统一处理应用程序中的异常,并返回特定的错误响应。 7. 扩展数据绑定:通过实现WebDataBinder的CustomEditorConfigurer接口,可以扩展数据绑定功能,例如将特定的字符串格式转换为自定义类型。 8. 扩展消息转换器:通过实现HttpMessageConverter接口,可以自定义消息转换器,用于处理请求和响应的内容类型,例如将XML转换为对象或将对象转换为XML。 9. 扩展文件上传:通过MultipartResolver接口的实现类,可以扩展文件上传功能,例如限制上传文件的大小、类型等。 以上只是一些常见的扩展方式,实际上Spring MVC框架非常灵活,可以根据具体需求进行定制和扩展。通过理解框架的核心原理和接口,你可以根据自己的需求进行扩展,以满足项目的特定要求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值