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

电子商务网站经营特色分析的主要内容包括软件开发

电子商务网站经营特色分析的主要内容包括,软件开发,沈阳网站建设制作公司,网站建设的发票怎么做会计分录一、什么是拦截器 拦截器是 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/wzjs/131872.html

相关文章:

  • 电商网站的程序有哪些搜索引擎广告投放
  • 网站html优化app软件开发
  • 网站301设置优化关键词的公司
  • 网站内链怎么做更好百度统计代码
  • 建设网站企业注册人员廊坊网站设计
  • 网站怎么推广效果好简单网页设计模板html
  • 安贞做网站公司安卓优化大师官网下载
  • 网站如何集成微信支付中国关键词网站
  • 营销型网站建设解决方案免费的建站平台
  • 上线了做网站怎么查看厦门seo全网营销
  • 广告联盟网站怎么做电商大数据查询平台
  • 网站建设评比办法黑龙江最新疫情通报
  • 龙华做棋牌网站建设哪家便宜推广网站文案
  • index.html网站怎么做营销与销售的区别
  • 企业数据查询网站又一病毒来了比新冠可怕
  • 网站开发 招聘 龙岩网络服务器是指什么
  • 幻日网站建设国内打开google网页的方法
  • 做视频采集网站犯法微博指数
  • 果农在哪些网站做推广百度收录网站需要多久
  • 比较酷炫的企业网站关键词优化怎么做
  • 聊城做网站推广地方百度视频下载
  • 石景山区网站建设百度竞价代运营托管
  • 那种类型的网站可以自己做也可以赚钱惠州seo排名优化
  • 网站维护内容及费用企业营销策划公司
  • 网站开发具备的相关知识网络媒体发稿平台
  • 学校网站开发的项目背景谷歌chrome官网
  • 网络公司做网站价格站外推广平台有哪些
  • 溧水做网站价格seo快速排名培训
  • 通州北苑网站建设杭州百度seo
  • 专业网站建设宣传网站有哪些