springmvc請求參數(shù)獲取的幾種方法

1、直接把表單的參數(shù)寫在Controller相應(yīng)的方法的形參中,適用于get方式提交,不適用于post方式提交。
/**
?????* 1.直接把表單的參數(shù)寫在Controller相應(yīng)的方法的形參中
??????* @param username
?????* @param password
?????* @return
?????*/
????@RequestMapping("/addUser1")
????public?String?addUser1(String?username,String?password) {
????????System.out.println("username is:"+username);
????????System.out.println("password is:"+password);
????????return?"demo/index";
????}url形式:http://localhost/SSMDemo/demo/addUser1?username=lixiaoxi&password=111111?提交的參數(shù)需要和Controller方法中的入?yún)⒚Q一致。
2、通過HttpServletRequest接收,post方式和get方式都可以。
/**
?????* 2、通過HttpServletRequest接收
??????* @param request
?????* @return
?????*/
????@RequestMapping("/addUser2")
????public?String?addUser2(HttpServletRequest request) {
????????String?username=request.getParameter("username");
????????String?password=request.getParameter("password");
????????System.out.println("username is:"+username);
????????System.out.println("password is:"+password);
????????return?"demo/index";
????}3、通過一個bean來接收,post方式和get方式都可以。
(1)建立一個和表單中參數(shù)對應(yīng)的bean
package demo.model;
public?class?UserModel {
????
????private?String?username;
????private?String?password;
????public?String?getUsername() {
????????return?username;
????}
????public?void?setUsername(String?username) {
????????this.username = username;
????}
????public?String?getPassword() {
????????return?password;
????}
????public?void?setPassword(String?password) {
????????this.password = password;
????}
????
}(2)用這個bean來封裝接收的參數(shù)
/**
?????* 3、通過一個bean來接收
??????* @param user
?????* @return
?????*/
????@RequestMapping("/addUser3")
????public?String addUser3(UserModel user) {
????????System.out.println("username is:"+user.getUsername());
????????System.out.println("password is:"+user.getPassword());
????????return?"demo/index";
????}4、通過@PathVariable獲取路徑中的參數(shù)
/**
?????* 4、通過@PathVariable獲取路徑中的參數(shù)
??????* @param username
?????* @param password
?????* @return
?????*/
????@RequestMapping(value="/addUser4/{username}/{password}",method=RequestMethod.GET)public?String?addUser4(@PathVariable?String?username,@PathVariable?String?password) {
????????System.out.println("username is:"+username);
????????System.out.println("password is:"+password);
????????return?"demo/index";
????}例如,訪問http://localhost/SSMDemo/demo/addUser4/lixiaoxi/111111?路徑時,則自動將URL中模板變量{username}和{password}綁定到通過@PathVariable注解的同名參數(shù)上,即入?yún)⒑髐sername=lixiaoxi、password=111111。
5、使用@ModelAttribute注解獲取POST請求的FORM表單數(shù)據(jù)
Jsp表單如下:
Java Controller如下:
/**
?????* 5、使用@ModelAttribute注解獲取POST請求的FORM表單數(shù)據(jù)
??????* @param user
?????* @return
?????*/
????@RequestMapping(value="/addUser5",method=RequestMethod.POST)
????public?String addUser5(@ModelAttribute("user") UserModel user) {
????????System.out.println("username is:"+user.getUsername());
????????System.out.println("password is:"+user.getPassword());
????????return?"demo/index";
????}6、用注解@RequestParam綁定請求參數(shù)到方法入?yún)?/strong>
當(dāng)請求參數(shù)username不存在時會有異常發(fā)生,可以通過設(shè)置屬性required=false解決,例如: @RequestParam(value="username", required=false)
/**
?????* 6、用注解@RequestParam綁定請求參數(shù)到方法入?yún)?br mpa-from-tpl="t">??????* @param username
?????* @param password
?????* @return
?????*/
????@RequestMapping(value="/addUser6",method=RequestMethod.GET)
????public?String?addUser6(@RequestParam("username") String?username,@RequestParam("password") String?password) {
????????System.out.println("username is:"+username);
????????System.out.println("password is:"+password);
????????return?"demo/index";
????}原文鏈接:https://www.cnblogs.com/xiaoxi/p/5695783.html
