美文网首页
Spring HTTP请求过程

Spring HTTP请求过程

作者: Johar77 | 来源:发表于2020-08-15 23:19 被阅读0次

1.Spring Http请求全过程

http请求过程

(1)浏览器的http请求,被Tomcat容器的监听器监听到

(2)请求通过Filter链,到达前置分发器DispatcherServlet

(3)前置分发器DispatcherServlet接收到HTTP请求之后,通过解析HTTP请求的URL获取URI,根据URI从处理器映射HandlerMappings当中获取请求对应的处理器Handler和处理器拦截器HandlerInterceptor

(4)前置分发器DispatcherServlet根据获取得到的Handler选择合适的适配器HandlerAdapter。如果成功获取适配器HandlerAdapter,先调用HandlerInterceptor#preHandler,然后调用处理器Handler,也就是Controller方法

(5)Controller Handler调用Service的业务处理方法

(6)Service调用DAO的数据处理方法

(7)最后依次返回结果

2.过滤器(Filter)

Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,在HttpSerlvetRequest到底Servlet之前,拦截HttpServletRequest,根据需要检查HttpServletRequest,也可以修改HttpServletRequest Header和数据。主要的用途是设置字符集、控制权限、控制转向、做一些业务逻辑判断等。

Filter接口

自定义Filter,可以继承该Filter接口或者OncePerRequestFilter接口,然后在接口上面添加@Order(过滤器的顺序)、@WebFilter(过滤器,主要的参数是:filterName 为过滤器名字,urlPatterns 为过滤器的范围,initParams 为过滤器初始化参数)注解。最后在启动类增加注解,自动注册Filter。

自定义Filter

Spring结构中主要在ApplicationFilterChain中,进行做Filter循环调用,最后调用到DispatcherServlet#service的方法。

ApplicationFilterChain#doFilter ApplicationFilterChain#internalDoFilter

3.HandlerInteceptor

HandlerInterceptor中有三个接口,如下所示

HandlerInterceptor接口

preHandler方法在调用Controller方法之前,根据返回的值,判断是否调用Controller方法

postHandler方法在调用Controller方法之后调用

afterCompletion方法,在request 调用返回之后回调

DispatcherServlet#doService DispatcherServlet#doDispacth

processDispatchResult中回调afterCompletion

DispatcherServlet#proccessDispatchResult triggerAfterCompletion

4.Filter vs HandlerInterceptor

filter vs HandlerInterceptor

相关文章

  • Spring HTTP请求过程

    1.Spring Http请求全过程 (1)浏览器的http请求,被Tomcat容器的监听器监听到 (2)请求通过...

  • HTTP请求过程

    一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服...

  • HTTP请求过程

    这篇文章简单描述一下HTTP请求的过程。 当我们在浏览器输入网址之后都发生了什么呢? 以访问http://www....

  • http请求过程

    http协议即为超文本传输协议,http协议建立在tcp之上,tcp为传输层协议,而http则为应用层协议。 ht...

  • HTTP请求过程

    关键词:HTTP HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延...

  • HTTP请求过程

    请求过程 一个HTTP请求,从浏览器中输入网址到浏览器显示内容,一共会有这么几个过程: DNS解析 建立连接 发送...

  • http请求过程

    第一步:浏览器生成http请求信息(第五层) 1.分解url 当用户输入网址时,浏览器会以一定的规则分解网址, 以...

  • 使用Spring的RestTemplate发送Http请求

    使用Spring的RestTemplate发送Http请求 1,Spring的RestTemplate 1.1 基...

  • spring cloud gateway 2 深入了解 - fi

    简述 spring cloud gateway 路由过滤器修改传入的HTTP请求或传出的HTTP响应 spring...

  • Spring模拟HTTP请求

    最近做mina相关的项目,服务端使用mina作为中转服务器,需要将设备端发起的tcp请求中转到后端HttpServ...

网友评论

      本文标题:Spring HTTP请求过程

      本文链接:https://www.haomeiwen.com/subject/xauzdktx.html