我正在尝试在 Spring 中实现 SimpleUrlHandlerMapping
。我正在使用 Spring 4.2.5
版本。
以下是我的映射
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
.....
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello1.dsm">hc</prop>
</props>
</property>
</bean>
<bean id="hc" class="com.vaannila.HelloWorldController" >
<property name="message" value="Hello World!" />
</bean>
....
</beans>
当我运行 tomcat 时,我在控制台上收到信息消息
org.springframework.web.servlet.handler.AbstractUrlHandlerMapping registerHandler
INFO: Mapped URL path [/hello1.dsm] onto handler 'hc'
但是当我在浏览器中点击 url“http://localhost:8080/SpringExample5/hello1.dsm”时,我收到请求的资源不可用错误,即 404。
后来当我将 key 更改为“/hello1.htm”时,它与相应的 url 配合得很好。我想知道将 url 映射到 Controller 时是否有关于 url 扩展的规则。
最佳答案
在 web.xml 中,调度程序 servlet url 模式配置为 .htm 扩展名
<?xml version="1.0" encoding="UTF-8"?>
............
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>............
因此它对于“.htm”扩展名工作正常。
为了使其适用于其他扩展,我们需要在 web.xml 文件中设置相应的url-pattern
。
关于spring - SimpleUrlHandlerMapping 不适用于带有少量扩展名(如 dsm 或 ds)的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36098893/