暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SpringMVC 05 再解<url pattern/>

敲代码的人 2019-09-24
304

在之前的案列中,对于web.xml的<url pattern/>都配置为/

    <!--对所有请求都拦截-->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping
复制

它是是对所有的请求都会拦截,这样做有什么后果呢??

案例说明:

修改index.jsp

<body>
请求地址springmvc_test1.do<a href="springmvc_test.do">发起请求</a>
<!-- http://localhost:8080/springMVC/springmvc_test.do -->
<img src="images/p1.jpg" alt="图片不能正常显示">
</body>
复制

图片位置

测试结果:


在框架中,url-pattern使用    /   的方式会倒是静态资源也被拦截,资料资源包括(css,js,html,各种格式的图片)


一帮有两种方式

1.扩展名  *.xxx    xxx是自定义扩展名,列如*.do,*.action,*.mvc等等,但是*.jsp是不行的

2.就是 / ,会对所有资源拦截


修改web.xml的url-pattern

<url-pattern>*.do</url-pattern>
复制


测试,图片正常显示



解决方法:

  1. 控制url_parttern的写法,对静态资源不进行拦截

  2. 使用 <mvc:default servlet handler/>

  3. 使用 <mvc:resources/>


使用 <mvc:default servlet handler/>

在springmvc的配置文件中加入 <mvc:default-servlet-handler>这个标签加入后,springmvc框架会调用服务器(Tomcat)中的名字叫“default”的servlet处理静态资源的访问。

在springMVC.xml的服务器中添加

    <!--交给各自的服务器默认的处理静态资源的servlet-->
<mvc:default-servlet-handler/>
复制


说明:

在Tomcat 中,有一个专门用于处理静态资源访问的 Servlet DefaultServlet 。其<servlet name/> 为 default 。可以处理各种静态资源访问请求。该 Servlet 注册在 Tomcat 服务器的 web.xml 中。在 Tomcat 安装目录 /conf/web.xml 。


注意:

<mvc:defaultservlet handler/> 表示使用 DefaultServletHttpRequestHandler 处理器 对象。而该处理器调用了 Tomcat 的 DefaultServlet 来处理静态资源的访问请求。如果默认的 servlet名称不是 default, 需要使用属性 default servlet name 指定 servlet 的名称,

例如::<mvc:default servlet handler default servlet name= servlet 名称>


Tomcat,Jetty 默认 Servlet 的名字 -- "default"

WebLogic默认 Servlet 的名字 --- "FileServlet"

WebSphere默认 Servlet 的名字 -- "SimpleFileServlet"


使用 <mvc:resources/>

在Spring3.0.4 版本后, Spring 中定义了专门用于处理静态资源访问请求的处理器ResourceHttpRequestHandler 。并且 添加了 <mvc: 标签,专门用于解决静态资源无法访问问题。需要在 springmvc.xml 中添加如下形式的配置

<mvc:resources mapping="/images/**" location="/images/"/>
复制

location:表示资源所在的目录

mapping:表示对该资源的请求 以 / 开始的请求,如 /image/beauty.jpg ,

/images/car.png 等 。 


注意:后面两个星号**,表示images目录及子目录下的所有资源


喜欢转发

明天见

SpringMVC 04 执行流程的简单原码分析分析

SpringMVC 03 视图解析器及简述执行流程

SpringMVC 02 概述及配置式入门

SpringMVC 01 前述 三层架构和MVC设计模式

文章转载自敲代码的人,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论