分布式项目开发-web.xml基础配置

时间:2022-07-05 16:42:26
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xmlns="http://java.sun.com/xml/ns/javaee"
 4     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
 5     id="WebApp_ID" version="3.0">
 6     <!-- web.xml的加载过程是context-param >> listener >> fileter >> servlet https://www.cnblogs.com/yaoyiyao/p/7198076.html -->
 7 
 8     <!-- 1.使用监听器加载spring的ioc容器 -->
 9     <context-param>
10         <param-name>contextConfigLocation</param-name>
11         <param-value>classpath:spring-*.xml</param-value>
12     </context-param>
13     <listener>
14         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
15     </listener>
16 
17     <!-- 2.加载springmvc DispatcherServlet(前端控制器,分发处理http请求) -->
18     <servlet>
19         <servlet-name>springmvc</servlet-name>
20         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
21         <!-- 初始参数 -->
22         <init-param>
23             <!-- 下文名称,一般为:名称+ConfigLocation后缀 -->
24             <param-name>contextConfigLocation</param-name>
25             <!-- 上下文路径 如:springmvc.xml-->
26             <param-value>classpath:springmvc.xml</param-value>
27         </init-param>
28         <!-- 
29             load-on-startup标记容器是否在启动的时候实例化并调用其init()方法的优先级。
30             它的值表示servlet应该被载入的顺序
31             当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;
32             如果值小于0或未指定时,则表示只有在第一次请求的容器才在该servlet调用初始化函数
33             正值越小,servlet的优先级越高,应用启动时就越先加载。
34             值相同时,容器就会自己选择顺序来加载。
35          -->
36         <load-on-startup>0</load-on-startup>
37     </servlet>
38     
39     <!-- 3.引用mvc -->
40     <!-- https://www.cnblogs.com/lexiaofei/p/7095805.html -->
41     <!-- 元素在Servlet和URL样式之间定义一个映射。它包含了两个子元素<servlet- name>和<url-pattern> -->
42     <servlet-mapping>
43         <!-- 元素给出的Servlet名字必须是 在<servlet>元素中声明过的Servlet的名字 -->
44         <servlet-name>springmvc</servlet-name>
45         <!-- 元素指定对应于Servlet的URL路 径,该路径是相对于Web应用程序上下文根的路径。 -->
46         <!-- 其中/和/*的区别:
47         < url-pattern > / </ url-pattern >   不会匹配到*.jsp,即:*.jsp不会进入spring的 DispatcherServlet类 。
48         < url-pattern > /* </ url-pattern > 会匹配*.jsp,会出现返回jsp视图时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。
49         总之,关于web.xml的url映射的小知识:
50         < url-pattern>/</url-pattern>  会匹配到/login这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
51         < url-pattern>/*</url-pattern> 会匹配所有url:路径型的和后缀型的url(包括/login,*.jsp,*.js和*.html等) -->
52         <url-pattern>/</url-pattern>
53     </servlet-mapping>
54 
55     <!-- 4.加载编码器 -->
56         <filter>
57         <filter-name>encoding</filter-name>
58         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
59         <init-param>
60             <param-name>encoding</param-name>
61             <param-value>utf-8</param-value>
62         </init-param>
63         <init-param>
64             <param-name>forceRequestEncoding</param-name>
65             <param-value>true</param-value>
66         </init-param>
67     </filter>
68     
69     <!-- 5.引用编码器  只对post 请求有效,get 无效-->
70     <filter-mapping>
71         <filter-name>encoding</filter-name>
72         <servlet-name>springmvc</servlet-name>
73     </filter-mapping>
74 
75     <!-- 6.欢迎页面 -->
76      <welcome-file-list>
77            <welcome-file>/WEB-INF/views/index.jsp</welcome-file>
78      </welcome-file-list>
79 
80 
81 </web-app>