博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC-DispatcherServlet工作流程及web.xml配置
阅读量:6966 次
发布时间:2019-06-27

本文共 3334 字,大约阅读时间需要 11 分钟。

工作流程:

  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监听器在前,
  3. <context-param>指定上下文配置文件路径,基本配置包含log4j和Spring配置文件
    1. <param-name>指定上下文名称,一般为:名称+ConfigLocation后缀,如:contextConfigLocation,不可随意定义,否则指定的配置文件无法加载成功,实际上它是org.springframework.web.servlet.FrameworkServlet中的一个成员变量,而FrameworkServlet是DispatcherServlet的父类,log4jConfigLocation目前不得而知
    2. <param-value>指定上下文路径,如::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 
2
7
8
9
/WEB-INF/views/home.jsp
10
11
12
13
contextConfigLocation
14
classpath:applicationContext.xml
15
16
17
log4jConfigLocation
18
classpath:log4j.properties
19
20
21
22
23 org.springframework.web.util.Log4jConfigListener 24
25
26
27
28 org.springframework.web.context.ContextLoaderListener 29
30
31
32
Spring
33
org.springframework.web.servlet.DispatcherServlet
34
35
36
contextConfigLocation
37
classpath:Spring-servlet.xml
38
39
1
40
41
42
Spring
43
44
/
45
46
47
48
CharacterEncodingFilter
49
org.springframework.web.filter.CharacterEncodingFilter
50
51
encoding
52
utf-8
53
54
55 56
57
CharacterEncodingFilter
58
/*
59
60

 

转载于:https://www.cnblogs.com/liuys635/p/10248311.html

你可能感兴趣的文章
leetcode29
查看>>
基于服务器的AAA作业(第二次)
查看>>
Objective-c——UI基础开发第十二天(相册展示)
查看>>
SQL中ISNULL的问题。
查看>>
利用map和stringstream数据流解题
查看>>
1.1.3 以类为单位的编程思想
查看>>
bzoj2440: [中山市选2011]完全平方数
查看>>
AC日记——中位数 洛谷 P1168
查看>>
Android 屏幕截图
查看>>
ubuntu 13.04 vim 的配置
查看>>
C++ 强制转换
查看>>
Python IDLE快捷键一览
查看>>
在通知栏上玩游戏,Steve iOS 游戏实现思路
查看>>
memcache---mongodb---redis比较
查看>>
C#之Action和Func的用法
查看>>
css transform旋转属性
查看>>
Python DB-API 2.0规范
查看>>
BOM
查看>>
模板方法模式理解
查看>>
eclipse加SDK加海马模拟器实现Android项目开发的配置及一个简单的实现案例
查看>>