代码之家  ›  专栏  ›  技术社区  ›  Denis Bazhenov

spring+jsp url构建最佳实践

  •  14
  • Denis Bazhenov  · 技术社区  · 16 年前

    我想知道在jsp中是否有处理spring控制器的良好实践。

    假设我有控制器:

    @Controller
    class FooController {
    
      // Don't bother about semantic of this query right now
      @RequestMapping("/search/{applicationId}")
      public String handleSearch(@PathVariable String applicationId) {
        [...]
      }
    }
    

    当然,在jsp中,我可以编写:

    <c:url value="/search/${application.id}" />
    

    但是很难改变网址。如果您熟悉rails/grails,那么现在您将了解这个问题是如何解决的:

    redirect_to(:controller => 'foo', :action = 'search')
    

    但是在春天有那么多的urlmapper。每个urlmapper都有自己的语义和绑定方案。类似rails的方案根本不起作用(除非您自己实现)。我的问题是:在spring中,有没有更方便的方法从jsp中寻址控制器?

    2 回复  |  直到 16 年前
        1
  •  10
  •   Janning Vygen    16 年前

    我希望我能理解你的问题。我想你在问当url字符串在jsp和控制器映射中时如何维护url。

    控制器应该执行逻辑,jsp应该执行输出。构建一个url应该是处理它的控制器的责任。所以

    class SearchController {
    
      @RequestMapping("/search/{applicationId}")
      public String handleSearch(@PathVariable String applicationId) {
        [...]
      }
    
      public String getUrl(Long applicationId) {
          return "/search/" + applicationId;
      }
    }
    
    class StartController {
       private SearchController controller;
    
       @ModelAttribute("searchUrl")
       public String getSearchUrl() {
           return fooController.getUrl(applicationId);
       }
    }
    

    在start.jsp中

     <c:url value="${searchUrl}" />
    
        2
  •  0
  •   leeand00    16 年前

    尝试使用apache作为前端重新映射url:

    http://www.simonecarletti.com/blog/2009/01/apache-rewriterule-and-query-string/

    这样就可以将applicationid参数从查询字符串更改为友好的url。

    此外,以下是mod_rewrite的文档: http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html