工作流程:

  1. Web中,无非是请求和响应;
  2. 在SpringMVC中,请求的第一站是DispatcherServlet,充当前端控制器角色;
  3. DispatcherServlet会查询一个或多个处理器映射(handler mapping)并根据请求所携带的URL信息进行决策,将请求发送给哪个SpringMVC控制器(controller);
  4. 控制器做两件事:一是将数据打包,二是定义逻辑视图名,然后返回给DispatcherServlet;
  5. DispatcherServlet通过视图解析器(view resolver)来将逻辑视图名匹配为一个特定的视图实现,它可能是也可能不是JSP;
  6. 交付数据模型,以视图形式响应给客户,整个请求流程完成。

web.xml

  1. <welcome-file-list>[欢迎页面,可定义多个,会依次查找可用视图]
  2. <listener>
    1. <listener-class>基本配置包含Log4jConfigListener和ContextLoaderListener,且log4j监听器在前,目前已废除log4j监听器,原因还在努力追问
  3. <context-param>指定上下文配置文件路径,基本配置包含log4j和Spring配置文件
    1. <param-name>指定上下文名称,一般为:名称+ConfigLocation后缀,如:contextConfigLocation,不可随意定义,否则指定的配置文件无法加载成功,实际上它是org.springframework.web.servlet.FrameworkServlet中的一个成员变量,而FrameworkServlet是DispatcherServlet的父类,log4jConfigLocation目前不得而知
    2. <param-value>指定上下文路径,如:classpath:applicationContext.xml
  4. <servlet>
    1. <servlet-name>Servlet名称,可以自定义,但是需要遵守规则:比如指定为Spring,那么最好在classpath路径中配置Spring-servlet.xml,否则需要在子元素<init-param>特别指出
    2. <servlet-class>因为要配置MVC,所以指定为:org.springframework.web.servlet.DispatcherServlet
    3. <init-param>[定义容器启动时初始化的配置文件,作用主要是指定自定义配置文件的路径,貌似可以指定多个]
      1. <param-name>[contextConfigLocation,不可更改,原因见3.1]
      2. <param-value>[可以自定义,如:classpath:spring-servlet.xml,如果不定义,那么默认为:classpath:${servlet-name}-servlet.xml,见4.1]
      3. <load-on-startup>[定义为1,表示启动等级,参考文章]
  5. <servlet-mapping>
    1. <servlet-name>与4.1保持一致
    2. <url-pattern>一般定义为“/”,表示所有请求都通过DispatcherServlet来处理
  6. <filter>[以字符集为例]
    1. <filter-name>[自行指定]
    2. <filter-class>[org.springframework.web.filter.CharacterEncodingFilter]
    3. <init-param>
      1. <param-name>[encoding,不可更改,它是CharacterEncodingFilter中定义的一个成员变量]
      2. <param-value>[UTF-8]
  7. <filter-mapping>
    1. <filter-name>[与6.1保持一致]
    2. <url-pattern>[/*表示所有请求都经过此过滤器过滤]

示例:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="3.0"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6 http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
7 <display-name></display-name>
8 <welcome-file-list>
9 <welcome-file>/WEB-INF/views/home.jsp</welcome-file>
10 </welcome-file-list>
11 <!-- 加载指定位置的上下文配置文件 -->
12 <context-param>
13 <param-name>contextConfigLocation</param-name>
14 <param-value>classpath:applicationContext.xml</param-value>
15 </context-param>
16 <context-param>
17 <param-name>log4jConfigLocation</param-name>
18 <param-value>classpath:log4j.properties</param-value>
19 </context-param>
20 <!-- 定义LOG4J监听器 -->
21 <listener>
22 <listener-class>
23 org.springframework.web.util.Log4jConfigListener
24 </listener-class>
25 </listener>
26 <listener>
27 <listener-class>
28 org.springframework.web.context.ContextLoaderListener
29 </listener-class>
30 </listener>
31 <servlet>
32 <servlet-name>Spring</servlet-name>
33 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
34 <!-- 表示启动容器时初始化该servlet -->
35 <init-param>
36 <param-name>contextConfigLocation</param-name>
37 <param-value>classpath:Spring-servlet.xml</param-value>
38 </init-param>
39 <load-on-startup>1</load-on-startup>
40 </servlet>
41 <servlet-mapping>
42 <servlet-name>Spring</servlet-name>
43 <!-- 表示哪些请求需要交给Spring Web MVC处理,/是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求 -->
44 <url-pattern>/</url-pattern>
45 </servlet-mapping>
46 <!-- 使用spring解决中文乱码 -->
47 <filter>
48 <filter-name>CharacterEncodingFilter</filter-name>
49 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
50 <init-param>
51 <param-name>encoding</param-name>
52 <param-value>utf-8</param-value>
53 </init-param>
54 </filter>
55
56 <filter-mapping>
57 <filter-name>CharacterEncodingFilter</filter-name>
58 <url-pattern>/*</url-pattern>
59 </filter-mapping>
60 </web-app>

SpringMVC-DispatcherServlet工作流程及web.xml配置的更多相关文章

  1. Maven-SSM项目pom.xml配置以及springmvc配置以及mybatis配置及web.xml配置

    一.Maven本地仓库的pom.xml配置 (全部是mysql数据库) <project xmlns="http://maven.apache.org/POM/4.0.0" ...

  2. springmvc web.xml配置之 -- SpringMVC IOC容器初始化

    SpringMVC IOC容器初始化 首先强调一下SpringMVC IOC容器初始化有些特别,在SpringMVC中除了生成一个全局的spring Ioc容器外,还会为DispatcherServl ...

  3. springmvc学习指南 之---第27篇 spring如何实现servlet3.0无web.xml 配置servlet对象的

    writedby 张艳涛 基于web.xml配置,有人说麻烦,tomcat给按照servlet3.0,实现了基于注解@WebServlet,有人说springmvc的springmvc.xml配置麻烦 ...

  4. springMVC WebApplicationInitializer 替代web.xml 配置Servlet 之原理

    Servlet 3.0之前 ,xml  配置 在过去搭建spring + springMCV ,首先第一步要做的是什么 ,就是要配置web.xml 文件 ,把springMVC 中的Servlet 加 ...

  5. Spring 及 SpringMVC的web.xml配置详解

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...

  6. SpringMvc web.xml配置详情

    出处http://blog.csdn.net/u010796790 1.spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在w ...

  7. ssm web.xml配置解析

    以下为web.xml的配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi=& ...

  8. ssm框架中,项目启动过程以及web.xml配置详解

    原文:https://blog.csdn.net/qq_35571554/article/details/82385838 本篇主要在基于SSM的框架,深入讲解web.xml的配置 web.xml   ...

  9. SpringMVC的工作流程?Mybatis和hibernate区别?

    SpringMVC的工作流程?1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求调用HandlerMapping处理器映射器.3. 处理器 ...

随机推荐

  1. [转]bitcoin API reference (JSON-RPC)

    本文转自:https://en.bitcoin.it/wiki/API_reference_%28JSON-RPC%29#Node.js API reference (JSON-RPC)     Co ...

  2. java面试教程视频

    java.从入门到精通.第28讲-面试题评讲:http://www.iqiyi.com/w_19rsdc9mu9.html java面试题 1.面试的整体流程:http://www.iqiyi.com ...

  3. C#基础知识总结(二)

    摘要 第二篇主要讲:变量.连接符占位符等.转义字符.数据的计算.数据的转换.try-catch的简单熟悉.复合运算符和自加自减 一.变量 1.数据存储在内存中:内存叫做RAM,内存被分隔为一小格一小格 ...

  4. Android开发过程中的坑及解决方法收录(一)

    之前使用了Android Studio的插件直接为button绑定了监听器,并实现onClick方法(我的onClick方法无论点击哪一个都是要实现setcontentview这个方法设置layout ...

  5. dubbo+zookeeper+springBoot框架整合与dubbo泛型调用演示

    dubbo + zookeeper + spring Boot框架整合与dubbo泛型调用演示   By:客 授客 QQ:1033553122  欢迎加入全国软件测试交流 QQ  群:7156436 ...

  6. adb命令笔记

    adb devices [-l]: 列出所有连接设备 l: 列出设备限定符 adb connect <host>[:<port>]: 通过ip连接到设备 host: IP po ...

  7. JS实现异步提交

    什么是XMLHttpRequest? XMLHttpRequest对象用于在后台与服务器交换数据 XMLHttpRequst的作用 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在 ...

  8. 我是这样搞懂一个神奇的BUG

    摘要: 通过分析用户的行为,才想得到为什么会出现这种情况! 前两天在BearyChat收到这样的一个报警消息: 409 ?Conflict ? 平时很少遇到这样的错误,貌似很严重的样子,吓得我赶紧查看 ...

  9. #WEB安全基础 : HTML/CSS | 0x1初识CSS

    "我受够这些难看的网页了,我怎么才能让它变得好看点?"你说. 我答道:"看来你得学点CSS了" 学习这些东西只有一个原则,就是用你的脑袋想,用你的眼睛看,用的你 ...

  10. 洛谷P3209 [HNOI2010]PLANAR(2-SAT)

    题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所 ...