此配置指示POST 此控制器的hander 方法仅支持。14 个 Spring MVC 顶级技巧( 二 )。" />

14 个 Spring MVC 顶级技巧( 二 )


<bean name="/big" class="net.codejava.spring.BigController">    <property name="supportedMethods" value=https://www.isolves.com/it/cxkf/yy/JAVA/2020-03-11/"POST"/>此配置指示POST 此控制器的hander 方法仅支持该方法 。
Spring MVC还提供了几种针对特定目的而设计的控制器类,包括:

  • AbstractUrlViewController
  • MultiActionController
  • ParameterizableViewController
  • ServletForwardingController
  • ServletWrappingController
  • UrlFilenameViewController
4.为处理程序方法指定URL映射这是编码控制器类时必须执行的强制性任务,该控制器类旨在处理一个或多个特定请求 。Spring MVC提供了@RequestMapping 注释,该注解用于指定URL映射 。例如:
@RequestMapping("/login")这映射了/login 要由带注解的方法或类处理的URL模式 。当在类级别使用此注解时,该类将成为单动作控制器 。例如:
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Controller@RequestMapping("/hello")public class SingleActionController {    @RequestMapping(method = RequestMethod.GET)    public String sayHello() {        return "hello";    }}当@RequestMapping 注解在方法级别使用的,你可以有一个多动作控制器 。例如:
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class UserController {    @RequestMapping("/listUsers")    public String listUsers() {        return "ListUsers";    }    @RequestMapping("/saveUser")    public String saveUser() {        return "EditUser";    }    @RequestMapping("/deleteUser")    public String deleteUser() {        return "DeleteUser";    }}@RequestMapping注释还可以用于指定一个方法要处理的多个URL模式 。例如:
@RequestMapping({"/hello", "/hi", "/greetings"})此外,此注解还具有在某些情况下可能有用的其他属性,例如method 。
5.为处理程序方法指定HTTP请求方法可以使用 注解的method 属性 指定处理程序方法支持哪种HTTP方法(GET,POST,PUT等) @RequestMapping 。这是一个例子:
import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;@Controllerpublic class LoginController {    @RequestMapping(value = "/login", method = RequestMethod.GET)    public String viewLogin() {        return "LoginForm";    }    @RequestMapping(value = "/login", method = RequestMethod.POST)    public String doLogin() {        return "Home";    }}此控制器有两个处理相同URL模式的方法/login,但前者用于 GET 方法,而后者用于 POST 方法 。有关使用@RequestMapping 注解的更多信息,请参见 @RequestMapping注解 。更多注解,参考:必须要掌握的几类Spring注解
6.将请求参数映射到处理程序方法Spring MVC的很酷的功能之一是,您可以使用@RequestParam 注解将请求参数作为处理程序方法的常规参数进行检索 。这是将控制器HttpServletRequest 与Servlet API 的接口分离的好方法 。
@RequestMapping(value = "/login", method = RequestMethod.POST)public String doLogin(@RequestParam String username,                      @RequestParam String password) {}Spring将方法参数用户名和密码绑定到具有相同名称的HTTP请求参数 。这意味着您可以按以下方式调用URL(如果请求方法是GET):


推荐阅读