gpt4 book ai didi

spring - instead of path relative to mapping of spring servlet 中的绝对路径

转载 作者:行者123 更新时间:2023-12-02 23:08:09 25 4
gpt4 key购买 nike

我正在尝试将请求映射到 Spring 环境中的静态资源。我的应用程序服务器是 Jetty。

在 web.xml 中,我将各种 url 模式映射到我的 spring servlet:

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>/otherpath/*</url-pattern>
</servlet-mapping>
[many more mappings...]

请注意,“/”未映射到我的 spring servlet。

在 spring-servlet.xml 中,我使用 mvc:resources 标记将 url 映射到包含静态内容的目录:

<mvc:resources mapping="/static/**" location="/WEB-INF/static/" />

这并不像我预期的那样工作。而不是映射

/static/ to /WEB-INF/static/,

它映射

/static/static/ to /WEB-INF/static

原因是“mvc:resources”中给出的映射似乎不是相对于/而是相对于映射到spring servlet的路径。

有没有办法考虑相对于/的映射的完整路径,而不是相对于 servlet 映射的路径?

最佳答案

解决方案是不使用 mvc:resources 标签,而是使用 bean 和 URLHandlerMapping 配置相应的处理程序:

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true"/>
<property name="mappings">
<props>
<prop key="/static/*">staticResources</prop>
</props>
</property>
</bean>

<bean id="staticResources" class="org.springframework.web.servlet.resource.ResourceHttpRequestHandler">
<property name="locations">
<list>
<value>/WEB-INF/static/</value>
</list>
</property>
</bean>

SimpleUrlHandlerMapping 及其alwaysUseFullPath 属性确实允许对映射进行更细粒度的控制。

关于spring - <mvc :resources/> instead of path relative to mapping of spring servlet 中的绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com