SpringMVC如何获取表单数据(radio和checkbox)

 更新时间:2021年7月6日 10:00  点击:2322

SpringMVC获取表单数据

1、实体类

package cn.hadron.bean;
import java.io.Serializable;
import java.util.Arrays;
/**
 * create table users(
     id int auto_increment primary key,
     username varchar(45),
     password varchar(45),
     age int default 0
   );
   insert into users(username,password,age) values('hadron','123',18);
 * @author chengyq
 *
 */
// 域对象,实现序列化接口
public class UserBean implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private String birthday;
    private Integer age;
    //测试单选按钮
    private String sex;
    //测试复选按钮
    private String[] favorite;
    public UserBean() {}
    public UserBean(String username, String password,int age) {
        this.username = username;
        this.password = password;
        this.age=age;
    }
    public UserBean(String username, String birthday,String sex) {
        this.username = username;
        this.birthday = birthday;
        this.sex=sex;
    }
    public Integer getId() {
        return id;
    }
    public String getUsername() {
        return username;
    }
    public String getPassword() {
        return password;
    }
    public Integer getAge() {
        return age;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public String[] getFavorite() {
        return favorite;
    }
    public void setFavorite(String[] favorite) {
        this.favorite = favorite;
    }
    public String getBirthday() {
        return birthday;
    }
    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
    @Override
    public String toString() {
        return "UserBean{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", birthday='" + birthday + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", favorite=" + Arrays.toString(favorite) +
                '}';
    }
}

2、控制器

package cn.hadron.controller;
import cn.hadron.bean.UserBean;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.ArrayList;
import java.util.List;
@Controller
@RequestMapping(value = "/f")
public class FormController {
    @RequestMapping(value="/getEditPage",method= RequestMethod.GET)
    public String getEditPage(Model model) {
        System.out.println("表单测试");
        UserBean user = new UserBean("jack","1997-7-1","女");
        // model中添加属性user,值是user对象
        model.addAttribute("user",user);
        //返回Edit.jsp页面
        return "edit";
    }
    @RequestMapping(value="/edit",method=RequestMethod.POST)
    public String edit(@ModelAttribute UserBean user,Model model) {
        System.out.println("获取表单数据:");
        //@ModelAttribute注解指示了参数应该从模型(这里所说的“模型”指 Model)中获取
        model.addAttribute("username", user.getUsername());
        model.addAttribute("birthday", user.getBirthday());
        model.addAttribute("sex", user.getSex());
        model.addAttribute("favorite", user.getFavorite());
        System.out.println("user="+user);
        //返回userPage.jsp页面
        return "userPage";
    }
    /**
     * 可以用@ModelAttribute注解的方法做一些初始化操作。
     * 当同一个controller中有多个方法被@ModelAttribute注解标记,
     * 所有被@ModelAttribute标记的方法均会被执行,按先后顺序执行,然后再进入请求的方法
     * @return
     */
    @ModelAttribute("webList")
    public List<String> getWebList() {
        List<String> webList = new ArrayList<String>();
        webList.add("SpringMVC");
        webList.add("SpringBoot");
        webList.add("SpringCloud");
        return webList;
    }
}

3、页面

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试form标签</title>
</head>
<body>
<h3>用户信息编辑页面</h3>
<form:form modelAttribute="user" method="post" action="/elastic/f/edit.do" >
    <table>
        <tr>
            <td>姓名:</td>
            <td><form:input path="username"/></td>
        </tr>
        <tr>
            <td>性别:</td>
            <td>
                <form:radiobutton path="sex" value="男" label="男" />
                <form:radiobutton path="sex" value="女" label="女" />
            </td>
        </tr>
        <tr>
            <td>生日:</td>
            <td><form:input path="birthday"/></td>
        </tr>
        <tr>
            <td>爱好:</td>
            <td><form:checkboxes items="${webList}" path="favorite" /></td>
        </tr>
        <tr>
            <td colspan="2">
                <input type="submit" value="提交变更"/>
            </td>
        </tr>
    </table>
</form:form>
</body>
</html>

这里写图片描述

<%--
  Created by IntelliJ IDEA.
  User: chengyq
  Date: 2018/9/3
  Time: 14:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>您提交的用户信息</h2>
<table>
    <tr>
        <td>Username</td>
        <td>${username}</td>
    </tr>
    <tr>
        <td>Birthday</td>
        <td>${birthday}</td>
    </tr>
    <tr>
        <td>Sex</td>
        <td>${sex}</td>
    </tr>
    <tr>
        <td>favorite</td>
        <td>
            <%
                String[] favorite = (String[])request.getAttribute("favorite");
                for(String f: favorite) {
                    out.println(f);
                }
            %>
        </td>
    </tr>
</table>
</body>
</html>

这里写图片描述

SpringMVC获取表单参数

以下几种方式只有在已搭好的SpringMVC环境中,才能执行成功!

一、首先,写一个登陆页面和一个Bean类

登陆页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>yyx博客后台登录</title>
</head>
<body>
    <form action="${pageContext.request.contextPath}/user/login.do"
        method="post">
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text"  name="userName"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password"  name="userPwd"></td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="登陆"></td>
            </tr>
        </table>
    </form>
</body>
</html>

java实体类

package com.yyx.model;
 
public class User{
    private String userName;
    private String userPwd;
 
    public String getUserName() {
        return userName;
    }
 
    public void setUserName(String userName) {
        this.userName = userName;
    }
 
    public String getUserPwd() {
        return userPwd;
    }
 
    public void setUserPwd(String userPwd) {
        this.userPwd = userPwd;
    }
}

二、获取表单数据的方法

1、直接把表单的参数写在Controller相应的方法的形参中

注意:控制器中方法的形参String userName,String userPwd名称必须和登陆页面的name="userName",name="userPwd"相同

package com.yyx.controller; 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; 
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String loginByUser(String userName, String userPwd) {
        System.out.println("userName is:" + userName);
        System.out.println("userPwd is:" + userPwd);
        return "success";
    }
}

2.通过HttpServletRequest接收

控制器中

String userName=request.getParameter("userName");
String userPwd=request.getParameter("userPwd");

的参数名称必须和登陆页面的name="userName",name="userPwd"相同

package com.yyx.controller; 
import javax.servlet.http.HttpServletRequest; 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String loginByUser(HttpServletRequest request) {
        String userName=request.getParameter("userName");
        String userPwd=request.getParameter("userPwd");
        System.out.println("userName is:" + userName);
        System.out.println("userPwd is:" + userPwd);
        return "success";
    }
}

3.通过一个bean来接收

登陆页面的name="userName",name="userPwd"必须和Bean类的属性名称相同

package com.yyx.controller; 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; 
import com.yyx.model.User;
 
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/login")
    public String loginByUser(User user) {
        System.out.println("userName is:" + user.getUserName());
        System.out.println("userPwd is:" + user.getUserPwd());
        return "success";
    }
}

4.利用js中ajax请求通过json数据接收

在页面中添加js代码

<script type="text/javascript"
    src="${pageContext.request.contextPath}/static/jquery-3.1.1.min.js"></script>  
<script type="text/javascript">
    $(document).ready(function() {
        $("#button_submit").click(function() {
            var name = $("#userName").val();
            var pwd = $("#userPwd").val();
            var user = {
                userName : name,
                userPwd : pwd
            };//拼装成json格式
            $.ajax({
                type : "POST",
                url : "${pageContext.request.contextPath}/user/login.do",
                data : user,
                success : function(data) {
                    alert("成功");
                },
                error : function(e) {
                    alert("出错:" + e);
                }
            });
        });
    });
</script>

控制器中的代码和方法3中的相同。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • php简单数据操作的实例

    最基础的对数据的增加删除修改操作实例,菜鸟们收了吧...2013-09-26
  • 解决Mybatis 大数据量的批量insert问题

    这篇文章主要介绍了解决Mybatis 大数据量的批量insert问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-01-09
  • Antd-vue Table组件添加Click事件,实现点击某行数据教程

    这篇文章主要介绍了Antd-vue Table组件添加Click事件,实现点击某行数据教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-17
  • 详解如何清理redis集群的所有数据

    这篇文章主要介绍了详解如何清理redis集群的所有数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-18
  • vue 获取到数据但却渲染不到页面上的解决方法

    这篇文章主要介绍了vue 获取到数据但却渲染不到页面上的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-11-19
  • mybatis-plus 处理大数据插入太慢的解决

    这篇文章主要介绍了mybatis-plus 处理大数据插入太慢的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-18
  • php把读取xml 文档并转换成json数据代码

    在php中解析xml文档用专门的函数domdocument来处理,把json在php中也有相关的处理函数,我们要把数据xml 数据存到一个数据再用json_encode直接换成json数据就OK了。...2016-11-25
  • postgresql数据添加两个字段联合唯一的操作

    这篇文章主要介绍了postgresql数据添加两个字段联合唯一的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
  • JS中artdialog弹出框控件之提交表单思路详解

    artDialog是一个基于javascript编写的对话框组件,它拥有精致的界面与友好的接口。本文给大家介绍JS中artdialog弹出框控件之提交表单思路详解,对本文感兴趣的朋友一起学习吧...2016-04-19
  • 使用JQuery实现Ctrl+Enter提交表单的方法

    有时候我们为了省事就操作键盘组合键去代替使用鼠标,我们今天就使用JQuery实现Ctrl+Enter提交表单。我们发帖时,在内容输入框中输入完内容后,可以点击“提交”按钮来发表内容。可是,如果你够“懒”,你可以不用动鼠标,只需按...2015-10-23
  • Vue生命周期activated之返回上一页不重新请求数据操作

    这篇文章主要介绍了Vue生命周期activated之返回上一页不重新请求数据操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-26
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • 基于JavaScript实现表单密码的隐藏和显示出来

    为了网站的安全性,很多朋友都把密码设的比较复杂,但是如何密码不能明显示,不知道输的是对是错,为了安全起见可以把密码显示的,那么基于js代码如何实现的呢?下面通过本文给大家介绍JavaScript实现表单密码的隐藏和显示,需要的朋友参考下...2016-03-03
  • vue 数据(data)赋值问题的解决方案

    这篇文章主要介绍了vue 数据(data)赋值问题的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • Python3 常用数据标准化方法详解

    这篇文章主要介绍了Python3 常用数据标准化方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-24
  • 解决vue watch数据的方法被调用了两次的问题

    这篇文章主要介绍了解决vue watch数据的方法被调用了两次的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-11-07
  • node.js从数据库获取数据

    这篇文章主要为大家详细介绍了node.js从数据库获取数据的具体代码,nodejs可以获取具体某张数据表信息,感兴趣的朋友可以参考一下...2016-05-09
  • react使用antd表单赋值,用于修改弹框的操作

    这篇文章主要介绍了react使用antd表单赋值,用于修改弹框的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-10-29
  • 分享MYSQL插入数据时忽略重复数据的方法

    使用下以两种方法时必须把字段设为”主键(PRIMARY KEY”或”唯一约束(UNIQUE)”。1:使用REPLACE INTO (此种方法是利用替换的方法,有点似类于先删除再插入) 复制代码 代码如下:REPLACE INTO Syntax REPLACE [LOW_PRIO...2013-10-04