启动tomcat服务器后,借助springMVC框架,我们可以很方便高效控制客户端发出的各种请求。分析请求执行流程前,我们需要了解一下服务器启动时,都做了什么。

  • tomcat服务器启动加载项

加载web.xml文件
这一点大家应该都熟知了,不多赘述。
加载Servlet
我们不妨回忆一下web.xml的部分内容。

<servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

<load-on-startup>1</load-on-startup>会让该DispatcherServlet在tomcat启动时就进行加载,并且/会让所有请求都先经过该DispatcherServlet。
springmvc.xml加载
在web.xml配置DispatcherServlet中配置了init-param初始化参数,即springmvc配置文件的信息,所以该文件连同该servlet会一同在tomcat启动时加载。
看一下springmvc.xml配置文件的部分内容。

        <context:component-scan base-package="com.wuwl.handler"></context:component-scan><bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/views/"></property><property name="suffix" value=".jsp"></property></bean><mvc:annotation-driven></mvc:annotation-driven>

首先,配置了自定义扫描的包,需要先进行扫描。与此同时,类如HelloController等标注了@Controller注解的类,会创建成对象,加入ioc容器中,默认单例。紧接着bean标签配置的视图解析器,也会加载InternalResourceViewResolver对象到ioc容器中。

  • springMVC控制器对请求的控制细节
    借助mvc流程图来理解一下。
    ①客户端发出类如:<a href="hello">hello world</a>这样的请求。
    ②控制器层,也就是此处的DispatcherServlet接收到请求后,负责控制和指挥,根据请求路径匹配RequestMapping映射的地址,将请求分发给HelloController对象执行其helloHandler方法。
    ③模型层执行调度结束后,返回字符串“success”给控制器。
    ④控制器将结果交由InternalResourceViewResolver视图解析器,后者拼接出形如/WEB-INF/views/success.jsp的视图地址,返回给控制器。
    ⑤控制器将渲染后的最终结果返回给用户。

springMVC从发送hello请求到响应的执行流程分析相关推荐

  1. 应用服务器与WSGI协议以及flask后端框架总结(后端接收请求返回响应的整个流程)...

    上次遗留了两个问题,先说一下自己的看法 问题: 1.明明一个线程只能处理一个请求,那么栈里的元素永远是在栈顶,那为什么需要用栈这个结构?用普通变量不行吗. 2._request_ctx_stack和_ ...

  2. OkHttp3 HTTP请求执行流程分析

    OkHttp3的基本用法 使用OkHttp3发送Http请求并获得响应的过程大体为: 创建OkHttpClient对象.OkHttpClient为网络请求执行的一个中心,它会管理连接池,缓存,Sock ...

  3. springcloud gateway 请求执行流程分析

    一.示例 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...

  4. 关于uniapp发送post请求无响应的问题

    先上结论 uniapp中的POST请求,设置请求头为:header: {'content-type': 'application/json;charset:utf-8' },可以解决post请求发不出 ...

  5. SpringMVC执行流程分析

    1. 用户通过url发起请求,请求送到前置控制器(DispatcherServlet).2. 前置控制器是整个SpringMVC的控制中心,当接收到用户的请求之后, 根据请求传来的 url 去 处理器 ...

  6. python的Web框架,Django框架中的请求与响应

    请求与响应 简单流程图 我们先来了解一个请求与响应的大概流程 视图函数接受到的request到底是个什么对象呢? 服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第 ...

  7. 户频繁点击发送ajax请求

    如果用户频繁点击ajax请求,有两个问题: 如果连续点击了5个ajax请求,前4个其实是无效的,趁早结束节省资源. 更严重的问题是:最后一个发送的请求,响应未必是最后一个,有可能造成混乱.还需要一个队 ...

  8. jmeter测试TCP服务器/模拟发送TCP请求

    jmeter测试TCP服务器,使用TCP采样器模拟发送TCP请求. TCP采样器:打开一个到指定服务器的TCP / IP连接,然后发送指定文本并等待响应. jmeter模拟发送TCP请求的方法: 1. ...

  9. Fiddler监听手机端请求和响应。

    1.官方网站:https://www.telerik.com/fiddler/fiddler-classichttps://www.telerik.com/fiddler/fiddler-classi ...

最新文章

  1. 如何使用HTML5,CSS3和PHP创建一个联系表格
  2. 最大子段和 分治与动态规划
  3. JavaScript 设计模式之构造函数模式
  4. 2019计算机应用基础期末考试试题,2019-2020年度公共课计算机应用基础考试试题附答案...
  5. 水文特点是什么意思_自动气象站应建在什么地方?
  6. IE6下使用jquery.bgiframe.js插件解决下拉框覆盖浮动层、Dialog的问题
  7. TensorFlow推出命令式、可定义的运行接口Eager Execution
  8. UVA11556 Best Compression Ever【位运算】
  9. A股数据采集、策略制定
  10. Vue入门之常用指令
  11. java 前端及后台轮询方法总结
  12. 推荐5款心仪的电脑软件
  13. 通达OA——前台任意用户伪造登录
  14. 感性电路电流计算_如何计算电机的电流?跟转速有关系吗?附案例分析
  15. uniapp app微信授权登录
  16. windows聚焦壁纸不更新_win10系统锁屏壁纸聚焦不更新的解决方法
  17. 【基于 STM32CubeMX + PWM + DMA驱动SW2812b全彩RGB灯】
  18. 232电平和TTL电平
  19. 微信公众号笔记(二)
  20. MySQL 内核原理分析(一)

热门文章

  1. 使用节点或Express返回JSON的正确方法
  2. 如何撤消与冲突的git合并
  3. win11虚拟机如何安装 Windows11虚拟机安装步骤教程
  4. 图像转svg,及绘制svg图像
  5. java vo转map_Java后端必备的开发规范
  6. python有关迭代器和生成器的面试题_python面试题之生成器迭代器
  7. linux mysql ssh通道_通过SSH通道来访问MySQL
  8. 力扣——搜索旋转排序数组
  9. AWT_事件监听2(Java)
  10. Javascript 清空input type=file 的值方法