web.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 自定义springmvc读取配置文件的位置 -->
<init-param>
<!-- springmvc的配置文件的位置的属性 -->
<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>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 过滤器 解决乱码问题 -->
<filter>
<!-- 随便命名 -->
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!-- /*:表示强制所有的请求先通过过滤器处理 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
注册中央调度器
该中央调度器为一个 Servlet,名称为 DispatcherServlet ,中央调度器的全限定性类名在 导入的 Jar文件 spring-webmvc-5.2.5.RELEASE.jar 的第一个包 org.springframework.web.servlet 下可找到。
<servlet>
<servlet-name>mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 自定义springmvc读取配置文件的位置 -->
<init-param>
<!-- springmvc的配置文件的位置的属性 -->
<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>mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
web.xml学习 ,核心对象DispatherServlet,需要在tomcat服务器启动后,就创建DispatcherServlet对象实例
为什么要创建DispatcherServlet对象实例?
因为DispatcherServlet在他创建过程中,会同时创建springmvc容器对象,读取springmvc的配置文件,把这个配置文件中的对象都创建好,当用户发起请求
就类似一下情况
DispatherServlet在init()中{
//创建容器,读取配置文件
WebApplicationContext ac = new ClassPathXmlApplicationContext("springmvc.xml");
//把容器对象放入ServletContext中
getServletContext().setAttribute(key,ac);
}
1) <load-on-startup/>
在tomcat启动后,创建servlet对象
load-on-startup:表示tomcat启动后创建对象的顺序,它的值是整数,数值越小,tomcat创建对象的时间越早
在<servlet/>中添加<load-on-startup/>的作用是,标记是否在Web服务器(这里是Tomcat) 启动时会创建这个 Servlet 实例
<load-on-startup>1</load-on-startup>
2) <url-pattern/>
对于<url-pattern/>,可以写为 / ,建议写为*.do 的形式。
3)配置文件位置与名称
注册完毕后,可直接在服务器上发布运行。此时,访问浏览器页面,控制台均会抛出 FileNotFoundException 异常。即默认要从项目根下的WEB-INF目录下找名称为Servlet 名称servlet.xml 的配置文件。这里的“Servlet 名称”指的是注册中央调度器<servlet-name/>标签 中指定的 Servlet 的 name 值
post是有乱码问题解决
在web.xml中进行配置
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>