当前位置: 首页 > 面试题库 >

SpringMVC可以配置为处理所有请求,但排除静态内容目录吗?

穆单鹗
2023-03-14
问题内容

如果我将spring应用程序映射为处理所有传入请求('/ *'),则对静态内容的请求将返回404。例如,即使当Spring拦截请求时资源存在,对“ myhost.com/css/global.css”的请求也将返回404。

替代方法是将SpringMVC映射到子目录(例如’/ home / ‘),但是在这种情况下,必须在应用程序内的所有链接中传递此目录。有没有一种方法可以将SpringMVC映射到’/ ‘,并从处理中排除一组目录?

我当前的web.xml配置是:

<servlet>
    <servlet-name>springApp</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>springApp</servlet-name>
    <url-pattern>/home/*</url-pattern>
</servlet-mapping>

从概念上讲,我希望映射如下所示:

 <servlet-mapping>
    <servlet-name>springApp</servlet-name>
    <url-pattern>/*</url-pattern>
    <exclude>/css/*,/js/*</exclude>
 </servlet-mapping>

这种事情有可能吗?


问题答案:

如果你只想使用Spring进行此操作,则可能会有些混乱:

  1. 你可能需要使用SimpleUrlHandlerMapping,你可以为其明确指定应映射到控制器的URL模式,或对其进行扩展以支持“忽略” URL(例如“ css / **”)。
  2. 你需要编写自己的HttpRequestHandler实现,该实现基本上由“ getServletContext()getRequestDsipatcher()include()”调用组成,以按原样返回所请求的资源。
  3. 你必须为上述SimpleUrlHandlerMapping将该处理程序注册为defaultHandler
    完成所有操作后,所有无法映射到控制器的请求将转发给你HttpRequestHandler,并“按原样”提供。


 类似资料:
  • 由于下面的回答,我有一个“请求前”功能,如果用户尚未登录,它会将用户重定向到“登录”: 请求前烧瓶-添加特定路线的例外情况 这是我的before_请求的副本: 但是,除非用户登录,否则不会提供静态目录中的文件。 在我的页面上,我正在从目录中获取一个css文件,但由于这个,它无法加载。 我已经使用apache部署了这个应用程序mod_wsgi在我的apache配置文件中,我甚至包含了目录作为站点的D

  • 我有一个使用Spring cloud config(--spring.profiles.active=native)的应用程序,并且还在同一应用程序中提供一些html页面。一切都很好,直到我引入静态资源(src/main/resources/css/bootstrap-switch.css)。对 http://localhost:8080/css/bootstrap-switch.css URL

  • 主要内容:1. 根目录和索引文件,2. 尝试几个选项,3. 优化NGINX服务内容的速度本节介绍如何使用NGINX来提供静态内容服务,定义搜索路径以查找请求的文件的方法,以及如何设置索引文件。 在这个部分,我们主要涉及以下几个方面的内容: 根目录和索引文件 尝试几个选项 优化NGINX服务内容的速度 1. 根目录和索引文件 root指令指定将用于搜索文件的根目录。 要获取请求文件的路径,NGINX将请求URI附加到指令指定的路径。 该指令可以放置在,或上下文中的任何级别上。 在下面的

  • 问题内容: 这似乎不起作用: 我本以为会。如果我将这些过滤器专门添加到我的AJAX调用中,那么它们将起作用。我想在全球范围内针对所有AJAX调用执行此操作。 问题答案: 我进行了一些其他测试,并且您发布的代码完美运行。如果您对如何设置参数有疑问,可以随时进行调用beforeSend并自行修改xml请求。

  • 我正在使用Spring-MVC4开发一个Web应用程序 ,我将我的调度程序服务器配置为处理所有对“/”的请求,如下所示(web.xml): 我的目录结构如下图所示:项目目录结构 我的jsp文件如下: 最后我的webapp配置是: 当我将我的http请求发送到服务器时,我可以在/资源/公共/菜单中加载jsp文件.jsp但我无法处理css文件!当我发送一个http请求来获取像这样的css文件 http