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>