SpringMVC的核心DispatcherServlet
1.DispatcherServlet的作用
DispacherServlet是SpringMVC的核心对象,中文叫做中央调度器,本质其实就是一个Servlet,是用来拦截请求的,把拦截下来的请求,依据相应的规则分发到目标Controller来处理
2.如何声明创建DispatcherServlet
同普通的servlet一样,我们需要在web.xml中配置DispatcherServlet
<init-param>标签
当服务器创建DispatcherServlet对象的时候,默认会读取“/WEB-INF/”+ <servlet-name> +“-servlet”来创建SpringMVC容器(在这里即/WEB-INF/springmvc-servlet.xml)
由于我的SpringMVC配置文件的位置如下,所以需要修改默认读取路径
<load-on-srartup>标签
DispatcherServlet并不会在服务器启动的时候自动创建,所以这里声明这个标签的作用是通知服务器启动的时候创建DispatcherServlet
标签中数值的意义:当值为0或者大于0时,表示容器在应用启动时就创建这个servlet,正数的值越小越先创建;当是一个负数时或者没有指定时,则指示容器在该servlet被访问时才加载。
3.关于DispatcherServlet拦截静态资源请求的问题
- DispatcherServlet会拦截哪些请求
如果在web.xml中声明DispatcherServlet的时候设置的url-pattern是 / 的话,DispatcherServlet会拦截所有请求(.jsp文件的请求除外) 所以当访问静态资源文件(除.jsp外)的时候就会报错404
当然,如果url-pattern不是 / 的话就不会出现这个问题 - 如何解决
通过在SpringMVC的配置文件中配置如下信息即可解决(假设我们的静态资源文件都在webapp的static文件夹下面) 意思是所有以 /static 开头的请求的文件都在static文件夹(包括static的子文件夹)下面去找