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

网络规划设计师希赛搜索引擎优化的方法包括

网络规划设计师希赛,搜索引擎优化的方法包括,北京平台网站建设公司,openwrt 网站开发一、什么是拦截器 拦截器是 SpringMVC 提供的一种可以在请求处理过程中对请求进行预处理或后处理的机制。简单来说,拦截器就像是一位“守门员”,它拦住所有进来的请求,根据设定的规则决定是否放行或者进行某些操作。 拦截器可以&#xff1a…

一、什么是拦截器

拦截器是 SpringMVC 提供的一种可以在请求处理过程中对请求进行预处理或后处理的机制。简单来说,拦截器就像是一位“守门员”,它拦住所有进来的请求,根据设定的规则决定是否放行或者进行某些操作。

拦截器可以:

  • 在请求进入 Controller 之前做一些操作(如权限检查、日志记录、性能监控等)。
  • 在请求返回前做一些操作(如对返回数据进行修改、记录日志等)。

二、拦截器和过滤器的区别

拦截器与过滤器(Filter)有许多相似之处,它们都可以对 HTTP 请求和响应进行拦截和处理。但是,它们的工作原理和应用场景有所不同。

特性

拦截器 (Interceptor)

过滤器 (Filter)

生命周期

只在 SpringMVC 生命周期内起作用

可以跨多个应用,通常与 Servlet 容器相关

适用范围

只适用于 SpringMVC 控制器的请求处理过程

可以处理所有类型的请求和响应

执行时机

在 Controller 方法调用之前和之后

在请求到达 Servlet 之前和响应返回之前

是否能够访问 SpringMVC 的功能

可以访问 SpringMVC 提供的各种功能

不能直接访问 SpringMVC 的功能

配置方式

配置在 Spring 配置文件中

配置在 web.xml 文件中

拦截器更贴近 SpringMVC 的请求处理机制,能与 Spring 提供的功能更加紧密地集成,而过滤器更多的是一种通用的 Web 组件,适用于不同类型的 Web 应用。

过滤器依赖于servlet,而拦截器技术属于SpringMVC

过滤器可对所有请求起作用,拦截器只对访问controller层的请求起作用。

过滤器会比拦截器先执行。拦截器(Interceptor)是在Servlet和Controller控制器之间执行;而过滤器(Filter)是在请求进入Tomcat容器之后 但是在请求进入Servlet之前执行。

 

三、拦截器的工作时机

1、三个阶段

预处理阶段:在请求到达 Controller 之前,拦截器的 preHandle() 方法会被执行。

后处理阶段:在 Controller 方法执行后,视图渲染之前,拦截器的 postHandle() 方法会被调用。

最终处理阶段:无论请求成功与否,拦截器的 afterCompletion() 方法都会在请求结束时执行。

2、三个常用方法

都在接口HandlerInterceptor中声明。

1.preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

在 Controller 方法执行之前调用。返回值是 boolean 类型,true 表示继续执行,false 表示请求被中止,后续的拦截器和 Controller 不会执行。

2. postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)

在 Controller 方法执行后,视图渲染前调用。可以对 ModelAndView 进行修改。

3. afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

在请求处理完成后(视图渲染后)调用,用于清理资源。

 

3、多个拦截器执行

1. 请求进入多个拦截器的 preHandle() 方法

请求会按照拦截器的配置顺序进入每个拦截器的 preHandle() 方法。

如果某个拦截器的 preHandle() 返回 false,那么请求会被中断,后续的拦截器和 Controller 方法都不会被执行。

2. 请求进入 Controller

如果所有拦截器的 preHandle() 都返回 true,请求会最终进入 Controller 的目标方法。

3. 多个拦截器的 postHandle() 方法

当 Controller 方法执行完毕后,拦截器的 postHandle() 方法会按配置顺序从后往前被调用。即,最后配置的拦截器的 postHandle() 会最先执行。

postHandle() 方法中的 ModelAndView 还没有被渲染,可以对它进行修改。

4. 多个拦截器的 afterCompletion() 方法

最后,拦截器的 afterCompletion() 方法会按配置顺序从前往后被调用,即,第一个配置的拦截器的 afterCompletion() 会最先执行。这个方法通常用于清理工作,比如日志记录或释放资源。

4、单个拦截器和多个拦截器执行顺序对比

阶段

单个拦截器执行顺序

多个拦截器执行顺序

preHandle()

按顺序执行,遇到

false

中断请求

按顺序执行,遇到

false

中断请求

Controller

执行 Controller 方法

执行 Controller 方法

postHandle()

按顺序执行(如果有多个拦截器,从前到后)

按配置顺序反向执行(从最后一个拦截器到第一个)

afterCompletion()

按顺序执行(从前到后)

按配置顺序正向执行(从第一个拦截器到最后一个)

四、单个拦截器示例

1、创建拦截器

package com.goose.config;import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 获取请求urlString url = request.getRequestURI();// 请求是否是登录相关的请求if(url.contains("login")){return true;}else{// 判断是否登录过if(request.getSession().getAttribute("user")!=null){return true;}else{// 重定向到login页面response.sendRedirect("/html/login.html");return false;}}}
}

2、配置拦截器

<!-- 配置拦截器 -->
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/> <!--表示拦截所有请求--><bean class="com.goose.config.LoginInterceptor" ></bean></mvc:interceptor>
</mvc:interceptors>

3、在Controller 中处理登录

package com.goose.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import javax.servlet.http.HttpSession;@Controller
@RequestMapping("/login")
public class LoginController {@RequestMapping("/toLogin")public String toLogin(){return "login";}@RequestMapping(value = "/login")public String login(String username, String password, HttpSession session){if(username.equals("张三") && password.equals("123")){System.out.println("用户登录成功");session.setAttribute("user","张三");return "A";}return "B";}
}

html界面略

http://www.dtcms.com/a/425258.html

相关文章:

  • 网站建设什么意思合肥学室内设计学校
  • 医疗网站前置审批什么公司可以做网站等级保护
  • 学网站开发首先学哪些基础wordpress自动添加视频教程
  • 网站 要强化内容建设做外贸没有网站需要
  • 济南做网站个人网站建设遇到的问题
  • 绿化公司和苗圃做网站网站内容更新外包
  • 社区网站源码小公司简介ppt介绍范本
  • 云南大学网站建设做美食网站的素材图片
  • 商城网站开发技术福建省住房城乡建设厅网站
  • wordpress网站换主题服务器网站打开慢
  • 东莞高明网站设计做网站公司排行榜
  • asp.net网站开发流程哈尔滨网站建设学校
  • 前端做网站维护7一12岁手工暗器
  • 自建营销型网站模板南京哪家网站建设好
  • 清美未来广告设计公司天津百度seo代理
  • 2017年免费建网站哪里有零基础网站建设教学培训
  • 诗敏家具网站是谁做的商标名称推荐
  • 百度提交网站入口网址海南网站建设多少钱
  • app加网站开发网站手机版跳转 seo
  • 怎么把网站排名排上去wordpress 批量加密
  • 宁夏建设厅网站免费搭建网站模板
  • 聊城做网站的公司价位查询房产信息个人的房产信息查询
  • 北京响应式网站设计怎么样优化关键词排名
  • 山西教育学会的网站建设设计制作散发寄递销售展示使用
  • 做百度网站排做类似淘宝的网站设计需要什么
  • 做导航网站有发展吗破解软件库合集资料网址大全
  • 站长查询站长工具天台县低价网站建设
  • 网站开发分为万网网站备案查询
  • 求个网站你懂我的意思吗wordpress 4.7优化精减
  • 做网站都需要什么步骤网站建设需要公司