Spring MVC; 避免url中的文件扩展名?

Ezo*_*ort 7 java spring jsp spring-mvc

我刚开始使用Spring Web MVC.我正试图避免网址中的文件扩展.我怎样才能做到这一点?(我使用的是Spring 2.5.x)

豆:

<bean name="/hello.htm" class="springapp.web.HelloController"/>
Run Code Online (Sandbox Code Playgroud)

我希望它是:

<bean name="/hello" class="springapp.web.HelloController"/>
Run Code Online (Sandbox Code Playgroud)

我无法让它发挥作用.有任何想法吗?

编辑:

网址映射

<servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我试过没有运气(*和/*)更改url-pattern.

小智 10

在3.0中,/似乎有效.那是...

<url-pattern>/</url-pattern>
Run Code Online (Sandbox Code Playgroud)


Tom*_*ren 8

据我所知,如果您使用JSP作为控制器的视图,则无法执行此操作.

因为当您将模型传递给JSP时,Spring MVC会在内部执行JSP的URL"转发".如果您使用,<url-pattern>/*</url-pattern>那么此转发也将由您的DispatcherServlet处理,而不是由您的JSP视图处理.

您可以做的是使用<url-pattern>/something</url-pattern>JSP并将其放在不同的目录中


Pau*_*lan 6

<servlet>
    <servlet-name>spring-mvc</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>spring-mvc</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

然后,您需要注册您的网址以由特定控制器处理.请参阅以下内容

http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

  • 为什么这是公认的答案?这是行不通的. (3认同)