SpringMVC可以配置为处理所有请求,但排除静态内容目录吗?
如果我将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进行此操作,则可能会有些混乱:
- 你可能需要使用
SimpleUrlHandlerMapping
,你可以为其明确指定应映射到控制器的URL模式,或对其进行扩展以支持“忽略” URL(例如“ css / **”
)。 - 你需要编写自己的HttpRequestHandler实现,该实现基本上由“
getServletContext()
。getRequestDsipatcher()
。include()
”调用组成,以按原样返回所请求的资源。 - 你必须为上述
SimpleUrlHandlerMapping
将该处理程序注册为defaultHandler
。完成所有操作后,所有无法映射到控制器的请求将转发给你
HttpRequestHandler
,并“按原样”提供。
以上是 SpringMVC可以配置为处理所有请求,但排除静态内容目录吗? 的全部内容, 来源链接: utcz.com/qa/405048.html