SpringMVC之再解url-pattern
配置详解
web.xml的写法
<!-- 注册中央调度器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 指定springmvc配置文件的位置及文件名 --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!-- 在Tomcat启动时直接创建当前servlet,此处值越小,优先级越高(大于0的整数) --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
①、【/】:它会拦截所有的url,如:/test,/test1.html,/1.jpg……,但不拦截 .jsp等动态资源请求,不会交给前端控制器,为了实现restFul风格。
②、【/*】:他是包含【/】的,可以多拦截以*.jsp结尾的url。
所有的请求都会经过前端控制器,DispatcherServlet会将请求作为映射路径到Controller控制器中去匹配目标类和目标方法。
假设此时访问的是一个jsp视图:http:localhost:8080/springMvc01/index.jsp ,这无疑是找不到控制器的,所以会报错。
③、【*.xxx】:这个拦截固定结尾的url请求,常见的有*.do,*.json,*.action
静态资源访问
<url -pattern>的值并不是说写成/后,静态资源就无法访问了。经过一些配置后,该问题也是可以解决的。
(1)使用Tomcat中名为default的Servlet
在Tomcat中,有一个专门用于处理静态资源访问的Servlet-DefaultServlet。其<servlet -name>为default。可以处理各种静态资源访问请求。该Servlet注册在Tomcat服务器的web.xml中。在Tomcat安装目录/conf/web.xml。
我们要做的就是直接使用它即可,即直接在web.xml中注册<servlet -mapping>即可。
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
此时如果再访问
<img alt="pics" src="images/1.jpg">
将会正常显示图片
(2)使用<mvc:default-servlet-handler/>
只需在springmvc.xml中添加<mvc:default -servlet-handler>标签即可。
<mvc:default-servlet-handler/>
<mvc:default -servlet-handler>会将对静态资源的访问请求添加到SimpleUrlHandlerMapping的urlMap中,key就是请求的URI,而value则为默认servlet请求处理器DefaultServletHttpRequestHandler对象。而该处理器调用了Tomcat的DefaultServlet来处理静态资源的访问请求 当然了,要想使用<mvc:.../>标签,需要引入mvc约束。
(3)使用<mvc:resources/>
在Spring3.04版本后,Spring中专门定义了用于处理静态资源访问请求的处理器ResourceHttpRequestHandler。并且添加了标签,专门用于解决静态资源无法访问问题。需要在springmvc中添加如下形式的配置:
<mvc:resources location="/images/" mapping="/images/**"/>
location表示静态资源所在目录。当然,这里的目录包含/WEB-INF/目录及其子目录。 mapping表示对该静态资源的请求。注意,后面的两个**。 该配置会把对该静态资源的访问请求添加到SimpleUrlHandlerMapping的urlMap中,key就是真正与mapping的URI匹配的URI,而value则为静态资源处理器对象ResourceHttpRequestHandler。
只输入IP就跳转到首页
web.xml


springmvc.xml

Controller

当输入url为http://localhost:8080时就会跳转到index.xml文件
过程:
输入:http://localhost:8080后到web.xml中找到
<welcome-file>index.html</welcome-file>
这时:url变为http://localhost:8080/index.html
因为没有index.html页面,所以被springmvc拦截进入Controller跳转到index.jsp页面

浙公网安备 33010602011771号