2012-01-24 44 views
0

我使用spring mvc。我在我的网站3页(实际上是控制器处理这些请求):spring mvc url格式

localhost/post.html 
localhost/search.html 
localhost/list.html 

我想的网址是localhost/XXX/post.html其中XXX是将transffered作为参数传递给控制器​​方法的参数。例如,如果用户询问localhost/bla/post.html,则控制器方法/post将获得bla作为参数。

这是春季mvc可能吗?

回答

1

是的,而且很容易做到。当你定义了处理程序URL映射,你可以把一个变量到这样的路径:

@RequestMapping("/{blah}/post.html") 
public ModelAndView handleRequest(@PathVariable("blah") String blah) { 
    // 
} 

春天将设置字符串为您的值时,它调用的方法。 (尽管并非严格必要,在路径中为调度程序servlet创建一个子目录也是很正常的事情,将调度程序映射到根目录可能会很痛苦,例如建立静态资源访问,例如,本地主机(localhost)/本地主机MYAPP /胡说/ post.html)

+0

谢谢。我不明白你最后一次关于调度程序servlet的建议。我不希望我的网站的用户冲浪到域名/ myapp/post.html。我希望他们在web.xml中浏览domain/post.html(或domain/XXX/post.html) – Naor

+0

,避免将org.springframework.web.servlet.DispatcherServlet映射到/ *。随着应用程序的增长,事情会变得更加容易,如果你将它映射到/ app/*之类的东西。前端的Apache或IIS可以将相当公开的URL重写为任何内容。 – Affe

+0

但是,用户应该输入domain/app/post.html而不是domain/post.html。 – Naor

0

很容易可以使用注解来完成:

@Controller 
public class MyController 
{ 

    @RequestMapping(value = "/{id}/post", method = RequestMethod.POST) 
    public String post(@PathVariable("id") String id) 
    { 
    } 

    @RequestMapping(value = "/{id}/search", method = RequestMethod.GET) 
    public String search(@PathVariable("id") String id) 
    { 
    } 

    @RequestMapping(value = "/{id}/list", method = RequestMethod.GET) 
    public String list(@PathVariable("id") String id) 
    { 
    } 

}