首页 > 其他分享 >springMVC-解读<url-pattern/>- 用 / 替换掉 *.xxx的报错解决办法

springMVC-解读<url-pattern/>- 用 / 替换掉 *.xxx的报错解决办法

时间:2022-11-16 13:35:04浏览次数:57  
标签:请求 访问 springMVC xxx 静态 mvc 报错 处理器 资源

2.4 解读

1 配置详解

1 *.do

在没有特殊要求的情况下,SpringMVC 的中央调度器 DispatcherServlet 的常使用后辍匹配方式,如写为*.do 或者 *.action, *.mvc 等。

2 /

可以写为/,因为 DispatcherServlet 会将向静态资源的获取请求,例如.css、.js、.jpg、.png等资源的获取请求,当作是一个普通的 Controller 请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然也是找不到的,所以在这种情况下,所有的静态资源获取请求也均会报 404 错误。

项目:url-pattern。在项目 primary-annotation 基础上进行修改。

需求:在 index.jsp 页面中存在一个访问图片的链接。该项目用于演示将写为*.do

可以访问到该图片,而写为/,则无法访问。

  • A 、 在项目中添加图片

在项目的 WebRoot 下添加一个目录 images,并在其中添加一张图片资源。

  • B 、 修改 index 页面

2. 静态资源访问

的值并不是说写为/后,静态资源就无法访问了。经过一些配置后,该问题也是可以解决的。

    1. 使用 mvc:default-servlet-handler/

      ​ 声 明 了 <mvc:default-servlet-handler /> 后 , springmvc 框 架 会 在 容 器 中 创 建DefaultServletHttpRequestHandler 处理器对象。它会像一个检查员,对进入 DispatcherServlet的 URL 进行筛查,如果发现是静态资源的请求,就将该请求转由 Web 应用服务器默认的Servlet 处理。一般的服务器都有默认的 Servlet。

      ​ 在 Tomcat 中,有一个专门用于处理静态资源访问的 Servlet 名叫 DefaultServlet。其Java 框架 SpringMVC5为 default。可以处理各种静态资源访问请求。该 Servlet 注册在 Tomcat 服务

      器的 web.xml 中。在 Tomcat 安装目录/conf/web.xml。

  • 解决办法:

  • 解释:

    mvc:default-servlet-handler/表示使用 DefaultServletHttpRequestHandler 处理器对象。而该处理器调用了 Tomcat 的 DefaultServlet 来处理静态资源的访问请求。当然了,要想使用<mvc: …/>标签,需要引入 mvc 约束

    该约束可从 Spring 帮助文档中搜索关键字 spring-mvc.xsd 即可获取:

    docs/spring-framework-reference/htmlsingle/index.html

  • 2 ) 使用 mvc:resources/ (掌握)

    在 Spring3.0 版本后,Spring 定义了专门用于处理静态资源访问请求的处理器

    ResourceHttpRequestHandler。并且添加了mvc:resources/标签,专门用于解决静态资源无Java 框架 SpringMVC5法访问问题。需要在 springmvc 配置文件中添加如下形式的配置:

    location 表示静态资源所在目录。当然,目录不要使用/WEB-INF/及其子目录。
    mapping 表 示 对 该 资 源 的 请 求 ( 以 /images/ 开 始 的 请 求 , 如 /image/beauty.jpg , 
    /images/car.png 等)。注意,后面是两个星号**。
    
    

标签:请求,访问,springMVC,xxx,静态,mvc,报错,处理器,资源
From: https://www.cnblogs.com/atao-BigData/p/16895568.html

相关文章