当前位置: 首页 > wzjs >正文

做一个营销型网站seo站长综合查询

做一个营销型网站,seo站长综合查询,网站开发网页设计游戏设计,百度网盟推广费用投入SpringMVC拦截器 什么是拦截器拦截器和过滤器的区别SpringMVC 拦截器的工作原理拦截器的配置拦截器的配置主要有两种方式XML 配置方式Java配置方式 创建一个拦截器拦截器的应用场景拦截器的执行顺序 什么是拦截器 SpringMVC 的拦截器(Interceptor)是指在…

SpringMVC拦截器

  • 什么是拦截器
  • 拦截器和过滤器的区别
  • SpringMVC 拦截器的工作原理
  • 拦截器的配置
    • 拦截器的配置主要有两种方式
      • XML 配置方式
      • Java配置方式
  • 创建一个拦截器
  • 拦截器的应用场景
  • 拦截器的执行顺序

什么是拦截器

SpringMVC 的拦截器(Interceptor)是指在请求处理的不同阶段执行的自定义逻辑。它的作用类似于 Servlet 的过滤器(Filter),但拦截器比过滤器提供了更多的灵活性和控制,可以在请求的不同生命周期内进行拦截。
用于拦截用户的请求并作出相应的处理,比如通过拦截器来进行用户权限验证或者用来判断用户是否登录。SpringMVC拦截器是可插拔式的设计,需要某一功能拦截器,就需要在配置文件中应用拦截器即可;如果不需要这个功能拦截器,只需要在配置文件中取消该拦截器即可。

拦截器和过滤器的区别

  1. 过滤器依赖于servlet,而拦截器技术属于SpringMVC
  2. 过滤器可对所有请求起作用,拦截器只对访问controller层的请求起作用。
  3. 过滤器会比拦截器先执行。拦截器(Interceptor)是在Servlet和Controller控制器之间执行;而过滤器(Filter)是在请求进入Tomcat容器之后 但是在请求进入Servlet之前执行。

SpringMVC 拦截器的工作原理

SpringMVC 拦截器是通过实现 HandlerInterceptor 接口来定义的,通常有三个方法:

  1. preHandle(HttpServletRequest request, HttpServletResponse response, Object handler):在请求处理前执行。可以用来进行身份验证、权限检查等操作。如果返回 false,请求会被拦截,不会继续向下执行(即请求不会传递给 Controller 和后续的视图解析过程);如果返回 true,请求会继续传递到 Controller 中。

  2. postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView):在请求处理后,视图渲染前执行。可以用来修改 ModelAndView,即在 Controller 执行后,但还未渲染视图时进行操作。

  3. afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex):在请求处理完毕后执行,通常用于资源清理工作。即使请求处理过程中出现了异常,afterCompletion 也会被调用。可以在这里做日志记录等操作。

拦截器的配置

拦截器的配置主要有两种方式

基于 XML 配置和基于 Java 配置

XML 配置方式

在 spring-mvc.xml 中配置拦截器。例如,定义一个拦截器并将其应用到特定的 URL 路径上。

<mvc:interceptors><bean class="com.example.interceptor.MyInterceptor"><!-- 这里可以配置拦截器的属性 --></bean>
</mvc:interceptors>

Java配置方式

在 Spring 配置类中配置拦截器。需要实现 WebMvcConfigurer 接口,并重写 addInterceptors 方法。

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**")  // 拦截所有请求.excludePathPatterns("/login", "/register");  // 排除特定的请求}
}

创建一个拦截器

拦截器需要实现 HandlerInterceptor 接口,重写其中的三个方法:preHandle、postHandle 和 afterCompletion。

public class MyInterceptor implements HandlerInterceptor {// 在请求处理前执行@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle: 请求即将开始处理");// 可以进行权限校验、日志记录等操作// 如果返回 false,表示拦截该请求,不会继续向下执行return true;  // 返回 true 继续执行,返回 false 拦截请求}// 在请求处理后,视图渲染前执行@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle: 请求处理后,但视图渲染前");// 可以修改 ModelAndView,添加额外的模型数据}// 在整个请求完成后执行(即视图渲染完成后)@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion: 请求处理完毕,视图渲染完成");// 可以用来做日志记录、清理资源等操作}
}

拦截器的应用场景

在这里插入图片描述

拦截器的执行顺序

拦截器的执行顺序是按其在 InterceptorRegistry 中配置的顺序执行的。preHandle 在请求到达 Controller 之前执行,postHandle 在 Controller 执行后但视图渲染前执行,afterCompletion 在视图渲染完成后执行。

!!! 多个拦截器的执行流程:当多个拦截器同时工作时,它们的preHandle()方法会按照配置文件中拦截器的配置顺序执行,而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序执行。

http://www.dtcms.com/wzjs/522894.html

相关文章:

  • 荆州做网站的公司营销推广方法有哪些
  • 个人可以建设网站吗不备案百度竞价托管代运营
  • 百度收录网站收费吗怎样策划一个营销型网站
  • 包头正大光电 做网站怎么营销推广
  • 做网站一般按什么报价今日舆情热点
  • 企业做网站的目的是什么百度关键词排名怎么靠前
  • 代理记账公司排名前十强网站seo运营
  • 在网站上如何做天气预报栏网络运营工作内容
  • 企业网站设计网站产品网络推广的方法有哪些
  • 编程培训心得体会网站推广优化外包公司
  • 外贸免费建设网站制作如何给自己的公司建网站
  • 合肥哪家网站公司好重庆网站seo推广公司
  • 网站建设长春阿里云域名
  • 商城网站建设开发公司优化排名软件
  • 智能建站网站磁力搜索器 磁力猫
  • 江门网站快速排名优化微信营销平台哪个好
  • 河北邯郸网站建设公司免费做网站自助建站
  • 池州哪家做网站点金推广优化公司
  • 哪个网站可以做微信头图百度广告投放代理商
  • 网站建设的发票怎么做会计分录大数据分析培训机构
  • 电商运营方案计划书seo排名怎样
  • 天津 公司网站建设微信推广
  • 海口建网站 模板纹身网站设计
  • 天水网站seo2022十大热点事件及评析
  • 如何用WordPress建小说站什么叫seo优化
  • 医院科室网站建设网页制作学习
  • 广州网站建设多少钱中国经济网人事
  • 单页设计风格排名怎么优化快
  • 网站建设开发计入二级科目明细上海专业seo公司
  • 男的直接做的视频网站上海做关键词推广企业