Java 为控制器spring mvc3定义默认url

Java 为控制器spring mvc3定义默认url,java,spring-mvc,request,url-mapping,Java,Spring Mvc,Request,Url Mapping,我是SpringMVC3开发的新手,曾经面临过一个小问题(ASP.NETMVC3没有遇到这个问题)。我想知道为控制器定义默认(或登录)URL的过程 我有一个账户管理员,负责所有与账户管理相关的工作。因此,我的所有URL都映射到此控制器。我想知道如何将我的“/accounts”url请求映射到hitopenAccountsDashboard方法 代码- .... imports... @Controller @RequestMapping(value = "/accounts/*") publi

我是SpringMVC3开发的新手,曾经面临过一个小问题(ASP.NETMVC3没有遇到这个问题)。我想知道为控制器定义默认(或登录)URL的过程

我有一个账户管理员,负责所有与账户管理相关的工作。因此,我的所有URL都映射到此控制器。我想知道如何将我的“/accounts”url请求映射到hit
openAccountsDashboard
方法

代码-

.... imports...

@Controller
@RequestMapping(value = "/accounts/*")
public class AccountController {

      @RequestMapping( value = "/", method = RequestMethod.GET)
      public ModelAndView openAccountsDashboard(HttpServletRequest request) {
           .....
           return new ModelAndView("accounts/landing");
      }

      @RequestMapping( value = "/change-password", method = RequestMethod.GET)
      public ModelAndView openPasswordChangePage(HttpServletRequest request) {
           .....
           return new ModelAndView("accounts/passwordChange");
      }
... other actions...

}
任何帮助都会很好


谢谢

试试这样的方法:

    .... imports...

@Controller
@RequestMapping(value = "/accounts/")
public class AccountController {

      @RequestMapping( value = "", method = RequestMethod.GET)
      public ModelAndView openAccountsDashboard(HttpServletRequest request) {
           .....
           return new ModelAndView("accounts/landing");
      }

      @RequestMapping( value = "/change-password", method = RequestMethod.GET)
      public ModelAndView openPasswordChangePage(HttpServletRequest request) {
           .....
           return new ModelAndView("accounts/passwordChange");
      }
... other actions...

}
然后您可以像这样使用url:

http://localhost:8080/yourwebapp/accounts/
点击openAccountsDashboard方法。 当做
Arek

当您删除openAccountsDashboard的attr值时会发生什么?它会命中该方法,但仅当我使用url-“/accounts/”而不是“/accounts”(404)时才会命中该方法那么为什么不删除/*并在类级别使用/accounts,在方法级别添加自定义路径,如/change password呢?我想通过使用/*将所有与帐户相关的方法包含到此控制器。但是如果我在类级别使用/帐户和方法级的自定义路径,那么这种情况不会发生。。。对吗?它应该可以工作,请参见13.11.3,它会命中该方法,但只有在我使用url-'/accounts/'而不是'/accounts'(给出404)时才可以。请参见13.11.3 static.springsource.org/spring/docs/2.5.4/reference/mvc.htmlb,但url的问题是否以'/'结尾?我认为这是合乎逻辑的,我们有一些特定控制器的url前缀,如果您想从这个控制器中点击方法,您应该使用整个前缀。如果你想通过传递像“localhost:8080/youtwebapp/accounts”这样的url来点击这个方法,那么你应该将整个控制器映射到“/”,然后将方法openAccountsDashboard映射到“accounts”,这在我看来并不优雅,因为这种方法会生成控制器逻辑的混乱。如果将整个控制器映射到/所有url都将映射到此控制器,这在类级别上是不必要的,您可以只定义/account,然后在方法级别定义类的相对url,如/password,以便将/account/password映射到方法。请参见此@srikanthyaradla-谢谢。这对我来说是有效的:)如果我不在方法级别提供requestmapping value属性并将类级别的映射定义为/accounts,那么/accounts和/accounts/都有效