Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring MVC; avoiding file extension in url?

I just started with Spring Web MVC. I'm trying to avoid file extenstions in the url. How can i do this? (I'm using Spring 2.5.x)

Bean:

<bean name="/hello.htm" class="springapp.web.HelloController"/>

I want it to be:

<bean name="/hello" class="springapp.web.HelloController"/>

I cannot get it to work. Any ideas?

Edit:

Url-mapping

<servlet-mapping>
    <servlet-name>springapp</servlet-name>
    <url-pattern>*.htm</url-pattern>
</servlet-mapping>

I have tried changing the url-pattern with no luck (* and /*).

like image 449
Ezombort Avatar asked Sep 09 '09 12:09

Ezombort


3 Answers

In 3.0, / seems to work. That is...

<url-pattern>/</url-pattern>
like image 153
ecdragon Avatar answered Nov 10 '22 21:11

ecdragon


As far as I know you can't do this if you're using JSP's as your view for controllers.

Because when you pass a model to a JSP, Spring MVC internally performs a 'forward' to the URL of the JSP. If you use <url-pattern>/*</url-pattern> then this forward will also be handled by your DispatcherServlet and not by your JSP view.

What you can do is use <url-pattern>/something</url-pattern> and have your JSP's in a different directory

like image 38
Tom van Zummeren Avatar answered Nov 10 '22 22:11

Tom van Zummeren


<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>

Then you need to register your urls to be handled by a particular controller. See the following

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

like image 6
Paul Whelan Avatar answered Nov 10 '22 21:11

Paul Whelan