springmvc的拦截器

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

1. 拦截器的介绍

  1. 拦截请求,与servlet的拦截器
  2. 主要拦截springmvc框架的controller中的方法
  3. 静态js等等的资源不拦截

2. 异常处理器。

各个层出现的异常,往上抛的时候,最终最好是交给DispatcherServlet去处理。
DispatcherServlet会调用HandlerExceptionResolver去处理异常。
如何使用springmvc的异常处理器?

  1. 首先定义我们自己的异常类
  2. 自定义异常处理器的类,继承HandlerExceptionResolver,
    实现未实现的resolveException方法,方法中的参数request、response、handler、ex。其中ex是异常类型,可以向下转为自定义的异常类。
    resolveException这个方法的返回值是一个ModelAndView对象,也就是说,可以设置跳转页面。
  3. 在spring容器中配置好异常处理器的类,就像配一个平常的bean
自定义的异常类
/**
 * user的异常类
 */
public class UserException extends Exception{
    private String message;
    public UserException(){

    }
    public UserException(String message){
        this.message = message;
    }
    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}
异常管理类
public class UserExceptionAction implements HandlerExceptionResolver {
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        UserException ue = new UserException();
        //注意:这一段代码需要我们抛出的异常是UserException。
        if (ue instanceof Exception){
            ue = (UserException) e;
            ue.setMessage("UserExcpetion!");
        }
        ModelAndView mv = new ModelAndView();
        mv.setViewName("error");
        ModelMap modelMap = mv.getModelMap();
        modelMap.addAttribute("error",ue.getMessage());
        return mv;
    }
}
bean.xml
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

3.拦截器

  1. 写一个普通的类实现HandlerInterceptor接口,这个接口里面有三个方法。
  2. 第一个preHandle,这玩意类似spring中的前置通知,返回值为布尔类型,返回true放行,执行controller方法
  3. 第二个postHandle,后置通知
  4. 第三个afterCompletion,最终通知
  5. 将拦截器配置到spring容器中
bean.xml
<!-- 配置拦截器 --> 
<mvc:interceptors> 
	<mvc:interceptor> 
		<mvc:mapping path="/**"/><!-- 配置拦截什么请求 --> 
<!--   <mvc:exclude-mapping path="/user/test01"/>不拦截什么请求-->
		<bean id="handlerInterceptorDemo1" class="com.itheima.web.interceptor.HandlerInterceptorDemo1"></bean>
	</mvc:interceptor>
</mvc:interceptors>
SpringMVC 拦截器的使用 SpringMVC 拦截器的使用1. 拦截器作用2. 单个拦截器3. 多个拦截器 参考资料:https://spring-mvc.linesh.tw/ 1. 拦截器作用 SpringMVC 框架中的拦截器用于对处理器进行预处理和后处理的技术。 可以定义拦截器链,连接器链就是将拦截器按着顺序结成一条链,在访问被拦截的方法时,拦截器链中的拦截器会按着定义的顺序执行。 拦截器和过滤器的功能比较类似,有以下区别: 过滤器是 Servlet 规范的一部分,任何框架都可以使用过滤器技术; 拦截器SpringM 阅读详情

相关推荐

12_SpringMVC_拦截器

在之前学习JAVAWEB 的时候,我们学习了过滤器的知识。过滤器的作用是保护请求的服务器资源,在请求资源被执行之前,如果请求地址符合拦截范围,则会先执行过滤器。过滤器的执行时机,是在Servlet之前执行的。但是在使用了SpringMVC后,Servlet只有一个了,也就是DisptcherServlet。那么,如果我们仍然使用过滤器来完成请求的拦截,因为过滤器是在Servlet之前执行的,就会造成,过滤器会拦截DispatcherServlet所有的请求。那么,如果我们有部分请求不想被拦截,怎么办?

booker009的博客 781

Spring-拦截器

拦截器spring架构的一个概念,拦截器是在action请求到Controller之前所进行的操作。其实拦截器是有三个方法,分别在进入Controller之前,return前,return后执行。之前没有接触到spring的时候,总是习惯用过滤器做这些事情;当然了过滤器和拦截器是有区别的,两者的实现原理是不同的,并且执行的时间也是不同的,拦截器是使用了aop(面向切面编程)的原理,至于详细的区别...

sinat_27143551的博客 350

springBoot添加自定义拦截器

1.我的项目环境:springboot2.0.0+thymeleaf 2.添加自定义拦截器的目的:项目在本地运行正常,发布到云服务器后前端页面js、css文件大量报错。为了使引入的静态文件路径正确,所以添加拦截器,将项目路径放到request域中供前端页面使用。 3.工程目录如下,其中框出来的文件是自定义拦截器需要的文件: 4.自定义拦截器,标注@Component注解,将该拦截器放入到...

qq_29644709的博客 5660

springmvc拦截器

SpringMVC中的interceptor拦截器,它主要的作用是拦截指定的用户请求,并进行相应的预处理与后处理。其拦截的时间点在“处理器映射器根据用户提交的请求映射出了所要执行的处理器类,并且也找到了要执行该处理器类的处理器适配器,在处理器适配器执行处理器之前。”当然处理器映射器映射出所要执行的处理器类时,已经将拦截器与处理器组合为了一个处理器执行链,并返回给了中央调度器。...

weixin_48826996的博客 8884

SpringMVC拦截器

拦截器是 `SpringMVC` 提供的一个组件,它允许我们在请求到达处理方法之前或之后,对请求拦截并进行预处理或后处理。拦截器可以帮助我们实现许多功能,如用户权限验证、记录日志、处理异常等。

是程序喵呀 2856

SpringMVC拦截器

一、什么是拦截器SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。依赖于web框架,在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种运用。由于拦截器是基于web框架的调用,因此可以使用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内可以多次调用。 二、拦截器与过滤器 2.1 什么是过滤器(Filter) 依赖于servlet容器。在实现上基于函数回调...

weixin_64987028的博客 7542

SpringMVC拦截器

什么是SpringMVC拦截器?它和过滤器有什么区别?以及拦截器的执行顺序,这篇文章主要针对这些问题进行实践解答。

你不来,再美的天地,都狼藉 ~ 3913

SpringMVC-拦截器

Spring MVC 中的拦截器(Interceptor)是一种强大的机制,用于拦截请求和响应。它允许开发者在请求处理的不同阶段执行预处理和后处理操作,比如日志记录、权限检查、国际化等。

时间如瑾 代码如诗 3627

SpringMVCSpringMVC拦截器

1.编写配置类。2.实现WebMvcConfigurer接口3.重写addInterceptors(InterceptorRegistry registry) 方法4.声明类注解为配置类:@Configuration5.编写拦截器6.在配置类中写入拦截器。在 Spring MVC 中,可以通过配置文件或者 Java 代码来注册拦截器。我们创建了一个名为 WebMvcConfig 的配置类,并实现了 WebMvcConfigurer 接口。

风浪很小 862

SpringMVC 拦截器

SpringMVC 拦截器

快乐的小三菊的博客 3596

SpringMVC中的拦截器

拦截器的作用 SpringMVC的处理器拦截器(Interceptor)类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理,用户可以自己定义一些拦截器来实现特定的功能。 而拦截器链就是将拦截器按一定的顺序联结成一条链【servlet中有过滤器链】。 拦截器和过滤器的区别:   过滤器是servlet规范中的一部分(sun公司定义的),任何java web工程都可以使...

全栈测试笔记 2459
上一篇: springmvc文件上传
下一篇: ssm的整合
RestartJava
博客等级 码龄6年 1粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值