Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java springmvc防止直接访问的一种方法_Java_Spring_Spring Mvc_Data Access - Fatal编程技术网

Java springmvc防止直接访问的一种方法

Java springmvc防止直接访问的一种方法,java,spring,spring-mvc,data-access,Java,Spring,Spring Mvc,Data Access,我刚开始学习SpringMVC3。我发现一个小问题,我的控制器将处理post请求(注册表)。但如果在地址栏中键入映射值(bla3/save.html),它将执行不应该执行的方法。这就是为什么我需要一个解决方案,如果有人直接键入地址,它应该重定向到其他页面,而不是试图添加新用户 @RequestMapping(value = "/save", method = RequestMethod.POST) //save new user public ModelAndView saveUser(@Mod

我刚开始学习SpringMVC3。我发现一个小问题,我的控制器将处理post请求(注册表)。但如果在地址栏中键入映射值(bla3/save.html),它将执行不应该执行的方法。这就是为什么我需要一个解决方案,如果有人直接键入地址,它应该重定向到其他页面,而不是试图添加新用户

@RequestMapping(value = "/save", method = RequestMethod.POST) //save new user
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
    return new ModelAndView("redirect:/users.html");
}

只有当存在如下代码所示的特定头时,才能执行该方法

 @RequestMapping(value = "/save", method = RequestMethod.POST, headers="X-Requested-With=XMLHttpRequest")
在这种情况下,只有当该方法是jquery ajax请求时,才会执行该方法(jquery自动添加头)


当然,它只是一种Poka-yoke

方法,只有在有如下代码这样的特定头的情况下,才可以执行该方法

 @RequestMapping(value = "/save", method = RequestMethod.POST, headers="X-Requested-With=XMLHttpRequest")
在这种情况下,只有当该方法是jquery ajax请求时,才会执行该方法(jquery自动添加头)


当然,这只是一种POKY-YOKE < /P> < P>如果地址栏中直接有URL,它将是一个GET请求,您可以处理它的不同行为,例如GET禁止这个URL,或者在提交POST方法时提交用户的空白表单。

@RequestMapping(value = "/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  

}

如果您在地址栏中有URL,它将是一个GET请求,您可以处理它的不同行为,例如GET禁止这个URL,或者在提交POST方法时提交用户的空白表单。

@RequestMapping(value = "/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  

}

在控制器类中添加此方法

@RequestMapping(value = "bla3/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
...
return new ModelAndView("redirect:/users.html");
}

如果在地址栏中键入映射值(bla3/save.html)。将执行此方法。

在控制器类中添加此方法

@RequestMapping(value = "bla3/save", method = RequestMethod.GET)
public ModelAndView saveUser(@ModelAttribute("user") User user, BindingResult result){
    userService.addUser(user);  
...
return new ModelAndView("redirect:/users.html");
}

如果在地址栏中键入映射值(bla3/save.html)。这个方法将执行。

好的,所以基本上我要做的就是创建另一个方法来处理GET请求。我明天试试,因为这个项目在我的办公室电脑里。。只要有一个控制器方法来处理HTTP GET请求OK,所以基本上我所要做的就是创建另一个方法来处理GET请求。我明天试试,因为这个项目在我的办公室电脑里。。只要有一个控制器方法来处理HTTP GET请求