请求参数的绑定

请求参数的绑定

1.1 绑定的机制
1.表单提交的数据都是k=v格式的 username=Adair &password=123456
2.SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的
3.要求:提交表单的name和参数的名称是相同的。
代码如图所示:在这里插入图片描述
请求参数绑定的处理类的代码如下:

package com.txw.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 *请求参数绑定的处理类
 * @author Adair
 */
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all")           // 注解警告信息
public class ParamController {
    
    
    /**
     * 请求参数绑定入门
     * @return
     */
    @RequestMapping(path = "testParam")
    public  String testParam(String userName,String passWord){
    
    
        System.out.println("请求参数绑定...");
        System.out.println("你的用户名:" + userName);
        System.out.println("你的密码:" + passWord);
        return "success";
    }
}

使用TomCat运行如图所示:在这里插入图片描述
通过浏览器访问http://localhost:8080/params.jsp如图所示:在这里插入图片描述
点击请求参数会跳到如图所示的界面:在这里插入图片描述
控制台打印结果如图所示:在这里插入图片描述
1.2 请求参数绑定实体类型
1.基本数据类型和字符串类型。
2.实体类型(JavaBean)。
步骤如下:
1).在pom.xml导入如下的jar包:

 <!--导入lombok的依赖jar包-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.12</version>
    </dependency>

2).创建账户的实体类代码如下:

package com.txw.domain;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
 * 账户的实体类
 * @author Adair
 */
@Data         // 自动生成set和get方法
@ToString     // 重写toString方法
@SuppressWarnings("all")           // 注解警告信息
public class Account implements Serializable {
    
    
    private String userName;        // 账户的用户名
    private String passWord;        // 账户的密码
    private Double money;           // 账户的金额
}

3).在params.jsp文件的代码如下:

<%--
  Created by IntelliJ IDEA.
  User: AdAir
  Date: 2020/7/1 0001
  Time: 9:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求参数绑定</title>
</head>
<body>
   <form action="param/saveAccount" method="post">
       姓名: <input type="text" name="userName"/></br>
       密码: <input type="text" name="passWord"/></br>
       金额: <input type="text" name="money"/></br>
       <input type="submit" value="提交"/> </br>
   </form>
</body>
</html>

4).创建请求参数绑定的处理类的代码如下:

package com.txw.controller;

import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 *请求参数绑定的处理类
 * @author Adair
 */
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all")           // 注解警告信息
public class ParamController {
    
    
     /**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping(path = "saveAccount")
    public String saveAccount(Account account){
    
    
        System.out.println("方法执行了...");
        System.out.println(account);
        return "success";
    }
}

5).使用Tomcat运行结果如图所示:在这里插入图片描述
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:在这里插入图片描述
7).填写如图所示相应的信息,并点击提交。在这里插入图片描述
8).控制台打印结果如图所示:在这里插入图片描述
9).控制台打印结果如图所示:在这里插入图片描述
引用类实现的方式如下:
1).创建用户的实体类的代码如下:

package com.txw.domain;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
 * 用户的实体类
 * @author Adair
 */
@Data         // 自动生成set和get方法
@ToString     // 重写toString方法
@SuppressWarnings("all")           // 注解警告信息
public class User  implements Serializable {
    
    
    private String uname;      // 用户的姓名
    private  Integer age;      // 用户的年龄
}

2).创建引用类的代码如下:

package com.txw.domain;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
 * 账户的实体类
 * @author Adair
 */
@Data         // 自动生成set和get方法
@ToString     // 重写toString方法
@SuppressWarnings("all")           // 注解警告信息
public class Account implements Serializable {
    
    
    private String userName;        // 账户的用户名
    private String passWord;        // 账户的密码
    private Double money;           // 账户的金额
    private User user;       // 引用类
}

3.在params.jsp的代码如下:

<%--
  Created by IntelliJ IDEA.
  User: AdAir
  Date: 2020/7/1 0001
  Time: 9:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求参数绑定</title>
</head>
<body>
      <form action="param/saveAccount" method="post">
       姓名: <input type="text" name="userName"/></br>
       密码: <input type="text" name="passWord"/></br>
       金额: <input type="text" name="money"/></br>
       用户的姓名: <input type="text" name="user.uname"/></br>
       用户的年龄: <input type="text" name="user.age"/></br>
       <input type="submit" value="提交"/> </br>
   </form>
</body>
</html>

4).在处理器类的代码如下:

package com.txw.controller;

import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 *请求参数绑定的处理类
 * @author Adair
 */
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all")           // 注解警告信息
public class ParamController {
    
    
        /**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping(path = "saveAccount")
    public String saveAccount(Account account){
    
    
        System.out.println("方法执行了...");
        System.out.println(account);
        return "success";
    }
}

5).使用TomCat运行结果如图:
在这里插入图片描述
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:在这里插入图片描述
7).填写如图所示相应的信息,并点击提交。在这里插入图片描述
8).控制台打印结果如图所示:在这里插入图片描述
9).控制台打印结果如图所示:在这里插入图片描述
3.集合数据类型(List、map集合等)
1).创建用户的实体类的实体类代码如下:

package com.txw.domain;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
/**
 * 用户的实体类
 * @author Adair
 */
@Data         // 自动生成set和get方法
@ToString     // 重写toString方法
@SuppressWarnings("all")           // 注解警告信息
public class User  implements Serializable {
    
    
    private String uname;      // 用户的姓名
    private  Integer age;      // 用户的年龄
}

2).账户的实体类代码如下:

package com.txw.domain;

import lombok.Data;
import lombok.ToString;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
 * 账户的实体类
 * @author Adair
 */
@Data         // 自动生成set和get方法
@ToString     // 重写toString方法
@SuppressWarnings("all")           // 注解警告信息
public class Account implements Serializable {
    
    
    private String userName;        // 账户的用户名
    private String passWord;        // 账户的密码
    private Double money;           // 账户的金额
    private List<User> list;      // list集合
    private Map<String,User> map;    // map集合
}

3).在params.Jsp的代码如下:

<%--
  Created by IntelliJ IDEA.
  User: AdAir
  Date: 2020/7/1 0001
  Time: 9:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>请求参数绑定</title>
</head>
<body>
   <%-- 把数据封装Account类中,类中存在list和map的集合--%>
        <form action="param/saveAccount" method="post">
            姓名:<input type="text" name="userName" /><br/>
            密码:<input type="text" name="passWord" /><br/>
            金额:<input type="text" name="money" /><br/>
            用户姓名:<input type="text" name="list[0].uname" /><br/>
            用户年龄:<input type="text" name="list[0].age" /><br/>
            用户姓名:<input type="text" name="map['one'].uname" /><br/>
            用户年龄:<input type="text" name="map['one'].age" /><br/>
            <input type="submit" value="提交" />
        </form>
</body>
</html>

4.创建请求参数绑定的处理类代码如下:

package com.txw.controller;

import com.txw.domain.Account;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
 *请求参数绑定的处理类
 * @author Adair
 */
@Controller
@RequestMapping(value = "/param")
@SuppressWarnings("all")           // 注解警告信息
public class ParamController {
    
    
    /**
     * 请求参数绑定把数据封装到JavaBean的类中
     * @return
     */
    @RequestMapping(path = "saveAccount")
    public String saveAccount(Account account){
    
    
        System.out.println("方法执行了...");
        System.out.println(account);
        return "success";
    }
}

5).使用TomCat运行结果如图:在这里插入图片描述
6).通过浏览器访问http://localhost:8080/params.jsp结果如图所示:在这里插入图片描述7).填写如图所示相应的信息,并点击提交。在这里插入图片描述
8).控制台打印结果如图所示::在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40055163/article/details/109217514
今日推荐