Spring @RequestMapping

时间:2017-07-14 09:20:06

标签: java spring spring-mvc

我对Spring MVC RequestMapping注释有疑问。需要你的帮助。

我创建了一个IPSLcontroller,我希望IPSLcontroller能够处理所有请求url.i已在此控制器中创建了两个方法。

1)handleLogoutRequest: - 此方法应在下面的url上调用。

2)handleRequest: - 此方法应该在注销时调用所有请求URL。

http://localhost:9086/webapp/login 要么 的 http://localhost:9086/webapp/add 要么 的 http://localhost:9086/webapp/remove

这是我的示例代码。但它没有按预期工作。

@Controller
public class IPSLController {

    @RequestMapping(value={"/logout/*"},method = RequestMethod.POST)
    protected void handleLogoutRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        System.out
                .println("........................IPSLController logout request.......................................");

    }


    @RequestMapping(method = RequestMethod.POST,value={"/*"})
    protected void handleRequest(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        System.out
                .println("........................IPSLController all request Post.......................................");

    }
    }

2 个答案:

答案 0 :(得分:0)

它正在以它应有的方式运作。您有/*/logout/*的映射。因此,当您发布到/logout时,它会调用/*的方法。我怀疑如果你发帖到/logout/something,它会调用你的注销处理程序。

如果希望它起作用,则不能为第二种方法设置通配符映射。至少使用/something/*以便spring可以对映射做出正确的决定。

答案 1 :(得分:0)

您应该为您使用的每个控制器使用通用前缀,这样您可以更好地区分它们。对于这样的电话,你也不需要任何“/”。

@Controller
@RequestMapping("ispl")
public class IPSLController {

@RequestMapping(value={"logout"},method = RequestMethod.POST)
protected void handleLogoutRequest(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    System.out
            .println("........................IPSLController logout request.......................................");

}


@RequestMapping(method = RequestMethod.POST,value={"hello"})
protected void handleRequest(HttpServletRequest request,
        HttpServletResponse response) throws Exception {
    System.out
            .println("........................IPSLController all request Post.......................................");

 }
}

如果您现在想要通过ServletRequest或使用restService或类似的东西来调用它们,您应该像这样声明它们

@GET   
@Path("ispl/logout")
public void Method (HttpServletResponse ...)