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

网站开发案例详解太原seo外包平台

网站开发案例详解,太原seo外包平台,优化网站的软件,宁波网站推广规划拦截器(Interceptor)是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截,并在请求进入控制器(Controller)之前、控制器处理完请求后、甚至是渲染视图后,执行一些指定的操作。 在 Spring MV…

拦截器(Interceptor)是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截,并在请求进入控制器(Controller)之前、控制器处理完请求后、甚至是渲染视图后,执行一些指定的操作。

在 Spring MVC 中,拦截器的作用与 Servlet 中的过滤器类似,它主要用于拦截用户请求并做相应的处理,例如通过拦截器,我们可以执行权限验证、记录请求信息日志、判断用户是否已登录等操作。

Spring MVC 拦截器使用的是可插拔式的设计,如果我们需要某一拦截器,只需在配置文件中启用该拦截器即可;如果不需要这个拦截器,则只要在配置文件中取消应用该拦截器即可。

定义拦截器

想要在 Spring MVC 项目中使用拦截器,第一步就是要对拦截器类进行定义。

Spring MVC 在 org.springframework.web.servlet 包中提供了一个 HandlerInterceptor 接口,该接口包含 3 个方法,如下表。

方法名返回值说明
preHandle () boolean该方法在控制器方法之前执行,其返回值用来表示是否中断后续操作。
  • 返回值为 true 时,表示继续向下执行;
  • 返回值为 false 时,表示中断后续的操作。
postHandle ()void该方法会在控制器方法调用之后,解析式图之前执行。我们可以通过此方法对请求域中的模型(Model)数据和视图做出进一步的修改。
afterCompletion ()void该方法会在整个请求完成后,即视图渲染结束之后执行。我们可以通过该方法实现资源清理、日志记录等工作。

通过实现 HandlerInterceptor 接口,重写其方法,来实现对拦截器类的定义,示例代码如下。


public class MyInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("preHandle 执行");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle 执行");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion 执行");}
}

配置拦截器

在定义完拦截器后,我们还需要在 Spring MVC 的配置文件中使用 <mvc:interceptors> 标签及其子标签对拦截器进行配置,这样这个拦截器才会生效。

在 Spring MVC 的配置文件中,<mvc:interceptors> 标签用于定义一组拦截器,其包含多个常用的子标签,具体说明如下表。

标签一级子标签二级子标签说明
<mvc:interceptors><bean>-<mvc:interceptors> 标签的子标签,用于定义一个全局拦截器,对所有的请求进行拦截。
<ref>-<mvc:interceptors> 标签的子标签,用于定义一个全局拦截器的引用,对所有的请求进行拦截。

<mvc:interceptors> 标签的 <ref> 子标签不能单独使用,它需要与 <bean> 标签(<mvc:interceptors> 标签内或 <mvc:interceptors>标签外)或 @Component 等注解配合使用,以保证<ref> 标签配置的拦截器是 Spring IOC 容器中的一个组件。
<mvc:interceptor> <mvc:mapping><mvc:interceptor> 标签用于定义一个指定拦截路径的拦截器。

<mvc:mapping> 标签则是<mvc:interceptor> 的子标签,用来配置拦截器拦截的路径,该路径则是通过其属性“path”中定义的。例如,path 的属性值为“/**”时,表示拦截所有请求;而“/hello”则表示拦截路径为“/hello”的请求。
<mvc:exclude-mapping><mvc:exclude-mapping> 为<mvc:interceptor> 的子标签,用来配置不需要被拦截器拦截的路径。
<bean><bean> 为<mvc:interceptor> 的子标签,用来定义一个指定了拦截路径的拦截器。

1. 通过 <bean> 子标签配置全局拦截器

在 Spring MVC 的配置文件中,通过 <mvc:interceptors> 标签及其子标签 <bean> ,将我们自定义的拦截器配置成了一个全局拦截器。该拦截器会对项目内所有的请求进行拦截,配置代码如下。

<!--配置拦截器-->
<mvc:interceptors><bean class="com.cky.interceptor.MyInterceptor"></bean>
</mvc:interceptors>

2. 通过 <ref> 子标签配置全局拦截器

除了 <bean> 标签外,还可以在 <mvc:interceptors> 标签中通过子标签 <ref> 定义一个全局拦截器引用,对所有的请求进行拦截。

<!--将自定义的拦截器放到 ioc 容器中-->
<bean id="interceptor" class="com.cky.interceptor.MyInterceptor"></bean>
<!--配置拦截器-->
<mvc:interceptors><!--通过 ref 配置全局拦截器--><ref bean="interceptor"></ref>
</mvc:interceptors>

注意:<mvc:interceptors> 标签的 <ref> 子标签不能单独使用,它需要与 <bean> 标签(<mvc:interceptors> 标签内或<mvc:interceptors>标签外)或 @Component 等注解配合使用,以保证 <ref> 标签配置的拦截器是Spring IOC 容器中的组件。

3. 通过<mvc:interceptor>子标签对拦截路径进行配置

还可以在 Spring MVC 的配置文件中通过 <mvc:interceptors> 标签的子标签 <mvc:interceptor>,对拦截器拦截的请求路径进行配置,示例配置如下。

<!--配置拦截器-->
<mvc:interceptors><!--拦截器 1--><mvc:interceptor><!--配置拦截器拦截的请求路径--><mvc:mapping path="/**"/><!--配置拦截器不需要拦截的请求路径--><mvc:exclude-mapping path="/login"/><mvc:exclude-mapping path="/"/><!--定义在 <mvc:interceptors> 下,表示拦截器只对指定路径的请求进行拦截--><bean class="com.cky.interceptor.MyInterceptor"></bean></mvc:interceptor>
</mvc:interceptors>

需要注意的是,在 <mvc:interceptor> 中,子元素必须按照上述代码的配置顺序进行编写,即 <mvc:mapping> → <mvc:exclude-mapping> → <bean> 的顺序,否则就会报错。其次,以上这三种配置拦截器的方式,我们可以根据自身的需求以任意的组合方式进行配置,以实现在 <mvc:interceptors> 标签中定义多个拦截器的目的。

拦截器的执行流程

 拦截器的执行流程如下图所示。

 

拦截器处理流程的步骤如下:

  1. 当请求的路径与拦截器拦截的路径相匹配时,程序会先执行拦截器类(MyInterceptor)的 preHandl() 方法。若该方法返回值为 true,则继续向下执行 Controller(控制器)中的方法,否则将不再向下执行;
  2. 控制器方法对请求进行处理;
  3. 调用拦截器的 postHandl() 方法,此时我们可以对请求域中的模型(Model)数据和视图做出进一步的修改;
  4. 通过 DispatcherServlet 的 render() 方法对视图进行渲染;
  5. 调用拦截器的 afterCompletion () 方法,完成资源清理、日志记录等工作。

 

http://www.hrbkazy.com/news/45663.html

相关文章:

  • 网站视觉艺术设计及色彩搭配推广普通话图片
  • 网站怎么才能被百度收录创新营销方式有哪些
  • 麻涌镇网站仿做文案代写平台
  • 手机建网站花钱吗ip软件点击百度竞价推广
  • 网站建立后怎么做推广seo的公司排名
  • 公司网站建设亚运村有必要买优化大师会员吗
  • 免费送的广告怎么在网站上做如何建立独立网站
  • 湖北网站建设费用互联网行业都有哪些工作
  • 做网站怎么实现在线支付烟台seo快速排名
  • 简易手机站长沙专业seo优化公司
  • 聊城网站建设培训班无锡网络推广外包
  • 怀柔住房和城乡建设委员会网站网站推广的公司
  • 天元建设集团有限公司张桂玉丑闻事件seo服务深圳
  • 网站做qq登录界面营销引流都有什么方法
  • 网站seo关键词排名微信营销模式
  • 建设局网站授权委托书好口碑关键词优化
  • 最炫表白网站html5源码杭州seo 云优化科技
  • 刚做的网站上线后收不到了网络营销有哪些主要功能
  • 广州网站改版设计公司企业网站模板下载
  • 如何做动态网站的后台培训心得体会模板
  • 链接在线缩短宁波seo外包费用
  • 企业做网站的注意什么问题北京seo公司有哪些
  • 东莞做商城网站建设哪家好深圳外贸seo
  • 中国做外贸的网站长沙网站seo推广
  • 网站建设添加文件夹在哪企业官网seo
  • wordpress中国可以用吗网站搜索引擎优化工具
  • 网站301在哪里做企业培训系统
  • 天津市建设工程评标专家网站长沙seo优化公司
  • 电脑端网站一般做多宽最好网络营销优化培训
  • 安徽金开建设集团网站网站统计