SpringMVC接收表单参数

使用注解配置控制器和视图解析

定义一个模型和一个扩展类

public class User {
    private String username;
    private String password;
    private String gender;
    private int age;

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", age=" + age +
                ", birthday=" + birthday +
                ", hobbyIds=" + Arrays.toString(hobbyIds) +
                '}';
    }

    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;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String[] getHobbyIds() {
        return hobbyIds;
    }

    public void setHobbyIds(String[] hobbyIds) {
        this.hobbyIds = hobbyIds;
    }

    private Date birthday;
    private String[] hobbyIds;

   }


public class UserExt {
    private User user;

    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    private List<User> users=new ArrayList<User>();

    @Override
    public String toString() {
        return "UserExt{" +
                "user=" + user +
                '}';
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}

springMVC配置文件的内容

 <!--注解配置控制器扫描-->
    <!--1.配置扫描包
    它会扫描这个包下面的所有控制器的注解
    -->
    <context:component-scan base-package="com.szl.backoffice.web.controller"></context:component-scan>
    <!--2.配置注解处理映射-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    <!--3.配置适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
    <!--4.配置资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <!--前缀-->
    <property name="prefix" value="/WEB-INF/views/"></property>
    <!--后缀-->
    <property name="suffix" value=".jsp"></property>
    </bean>

控制器的内容


@Controller
@RequestMapping("/user")//根请求路径,如果这里写了,则请求时网址中也必须要写
public class UserController2 {
    @RequestMapping("/toRegister")
   public String toRegister(){
       return "user/register";
   }

    /**
     * 第一种接受表单参数的方法:参数逐一赋值
     * 默认日期格式是月。日。年
     * @return
     */
   @RequestMapping("/register")
   public String register(String username, String password,
                          String gender, int age, Date birthday,
                          String[] hobbyIds){
       System.out.println(username);
       System.out.println(password);
       System.out.println(gender);
       System.out.println(age);
       System.out.println(birthday);
       System.out.println(Arrays.toString(hobbyIds));
       return "user/info";//跳转之后info中是没有值的
    }

    /**
     * 第二种接受表单参数的方法:用模型接收,这时需要在表单数据的名字前面加上类名
     * 默认日期格式是月。日。年
     * @return
     */
    @RequestMapping("/register2")
    public String register2(User user){
        System.out.println(user);
        return "user/info";//跳转之后info是有值的
    }

    /**
     * 第三种接受表单参数的方法:包装类(模型里面有模型)
     * 默认日期格式是月。日。年
     * @return
     */
    @RequestMapping("/register3")
    public String register3(UserExt userExt){
        System.out.println(userExt);
        return "user/info";//跳转之后info是有没有值的
    }
}

表单提交内容

body>
<form action="${pageContext.request.contextPath}/user/register3.do" method="post">
<%--第一第二种--%>
    <%--用户名:<input type="text" name="username"><br>--%>
    <%--密码:<input type="text" name="password"><br>--%>
    <%--性别:<input type="text" name="gender"><br>--%>
    <%--年龄:<input type="text" name="age"><br>--%>
    <%--生日:<input type="text" name="birthday"><br>--%>
    <%--爱好:<input type="checkbox" name="hobbyIds" value="1">打球--%>
    <%--<input type="checkbox" name="hobbyIds" value="2">打人--%>
    <%--<input type="checkbox" name="hobbyIds" value="3">打架<br>--%>
    <%--<input type="submit"> <br>--%>

    <%--第三种接受表单数据方式--%>
        用户名:<input type="text" name="user.username"><br>
        密码:<input type="text" name="user.password"><br>
        性别:<input type="text" name="user.gender"><br>
        年龄:<input type="text" name="user.age"><br>
        生日:<input type="text" name="user.birthday"><br>
        爱好:<input type="checkbox" name="user.hobbyIds" value="1">打球
        <input type="checkbox" name="user.hobbyIds" value="2">打人
        <input type="checkbox" name="user.hobbyIds" value="3">打架<br>
        <input type="submit"> <br>


</form>
</body>

接收表单内容是list集合

在扩展类中定义一个集合,上边也有

  public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    private List<User> users=new ArrayList<User>();

控制器内容如下

 /**
     * 第四种接受表单参数的方法:map集合参数
     * 默认日期格式是月。日。年
     * @return
     */
    @RequestMapping("/register4")
    public String register4(UserExt userExt){
        System.out.println(userExt.getUsers());
        return "user/info";//
    }

表单中数据如下

  <%--第四种接受集合类型的参数--%>
        <form action="${pageContext.request.contextPath}/user/register4.do" method="post">

        用户名1:<input type="text" name="users[0].username"><br>
        密码1:<input type="text" name="users[0].password"><br>
            用户名2:<input type="text" name="users[1].username"><br>
            密码2:<input type="text" name="users[1].password"><br>
        <input type="submit" value="保存"> <br>


</form>

接收表单内容是map集合

扩展类添加如下内容


    public Map<String, Object> getInfos() {
        return infos;
    }

    public void setInfos(Map<String, Object> infos) {
        this.infos = infos;
    }

    private Map<String,Object> infos=new HashMap<>();

控制器添加如下内容

 /**
     * 第五种接受表单参数的方法:map集合参数
     * 默认日期格式是月。日。年
     * @return
     */
    @RequestMapping("/register5")
    public String register5(UserExt userExt){
        System.out.println(userExt.getInfos());
        return "user/info";//跳转之后info是有没有值的
    }

表单数据

<%--第五种接受map集合类型的参数--%>
<form action="${pageContext.request.contextPath}/user/register5.do" method="post">

    用户名:<input type="text" name="infos['username']"><br>
    密码:<input type="text" name="infos['password']"><br>
    性别:<input type="text" name="infos['gender']"><br>
    年龄:<input type="text" name="infos['age']"><br>
    <input type="submit" value="保存"> <br>


</form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值