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

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中的相同。

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

(0)

相关推荐

  • springmvc后台基于@ModelAttribute获取表单提交的数据

    1.通过注解ModelAttribute直接映射表单中的参数到POJO.在from中的action写提交的路径,在input的name写参数的名称. POJO package com.demo.model; public class user { private String username; private String password; private int nsex; public String getUsername() { return username; } public vo

  • SpringMVC接收页面表单参数

    1.直接把表单的参数写在Controller相应的方法的形参中 @RequestMapping("/addUser1") public String addUser1(String userName,String password) { System.out.println("userName is:"+userName); System.out.println("password is:"+password); return "/us

  • SpringMVC实现数据绑定及表单标签

    首先理解数据绑定 为什么要使用数据绑定 基于HTTP特性,所有的用户输入的请求参数类型都是String,比如下面表单: 但我们提交后,为了将请求信息映射到模型中,还需要手动进行格式转换,此外还借助了一个中转对象productForm,其字段名称和Product一模一样,只是类型为String. @RequestMapping(value = "/product_save",method = RequestMethod.POST) public String saveProduct(Pr

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

    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(userna

  • Javaweb获取表单数据的多种方式

    Javaweb获取表单数据的几种方式 一.通过键值对的形式获取表单数据 getParameter(String name):通过key,返回一个value. getParameterValues(String name):通过key返回一个string数组(多个值) getParameterNames():返回form表单中的所有key值. 下面介绍通过键值对获取form表单数据的数据的方法: @WebServlet({ "/FormServlet", "/form"

  • Servlet的5种方式实现表单提交(注册小功能),后台获取表单数据实例

    用servlet实现一个注册的小功能 ,后台获取数据. 注册页面: 注册页面代码 : <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="/RequestDemo/RequestDemo3"

  • Vue获取表单数据的方法

    目录 需求 获取数据并提交 模板过滤器 过滤器的使用场景 总结 需求 使用Vue收集如下用户数据: 获取数据并提交 代码实现: 将value的值与变量属性进行绑定 v-model.trim = 'username' ; 去除两端空格 v-model.number = 'age':将字符串转为数值 v-model.lazy = 'age' : 不是立即收集,而是切换焦点后收集 <!DOCTYPE html> <html lang="en"> <head>

  • Yii2基于Ajax自动获取表单数据的方法

    本文实例讲述了Yii2基于Ajax自动获取表单数据的方法.分享给大家供大家参考,具体如下: 这里有两张表,表结构如下,locations表存放的省份和邮编等信息,两张表的model和curd均使用gii生成 yii2advanced.customers表 customer_id:int(11) customer_name:varchar(100) zip_code:varchar(20) city:varchar(100) province:varchar(100) yii2advanced.l

  • nodejs获取表单数据的三种方法实例

    前言 nodejs作为服务端语言,在开发中注册登录等需通过form表单向后端发送数据进行判断,那作为服务端语言的nodejs通过哪些方法可以接收调用form表单的post请求值呢. 常见的会用到以下三种,让我们对着例子看看具体用法. 后端我们使用express插件,需要对express有所了解的才便于阅读哦~ 1.首先npm初始化,下载express包,导入模块后创建服务对象 //导入express模块 const express = require("express"); // 创建

  • Javaweb中Request获取表单数据的四种方法详解

    目录 表单代码 request.getParamter(String name);通过name获取值 request.getParamterValues(String name);通过name获取value值(一般用于复选框获取值) 代码片段 request.getParameterNames();直接获取表单所有对象的name值,返回值是枚举集合 request.getParameterMap();直接获取表单所有对象的name值以及数据 表单代码 <!DOCTYPE html> <h

  • JavaWeb中获取表单数据及乱码问题的解决方法

    首先使用一个用户提交界面作为举例(文本框,密码框,选择,下拉表单等),效果如下 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="t

  • smartupload实现文件上传时获取表单数据(推荐)

    实现文件上传的form表单必须满足两个条件:method="post" enctype="multipart/form-data" 表单中enctype="multipart/form-data"的意思是设置表单的MIME编码.默认情况,这个编码格式是application/x-www-form-urlencoded,不能用于文件上传:只有使用了multipart/form-data,才能完整的传递文件数据.enctype="multi

  • PHP获取表单数据与HTML嵌入PHP脚本的实现

    php接受通过HTML表单提交的信息时,会将提交的数据保存在全局数组中,我们可以调用系统特定的自动全局变量数组来获取这些值. 常用的自动全局变量如下所示: 1.GET方式 功能:获取get方式提交的数据 格式:$_GET["formelement"] 2.POST方式 功能:获取post方式提交的数据 格式:$_POST["formelement"] 3.REQUEST方式 功能:获取任意方式提交的数据,$_REQUEST自动全局变量包含了所有GET.POST.CO

随机推荐