我对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.......................................");
}
}
答案 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 ...)