SpringMVC如何获取表单数据(radio和checkbox)
作者:程裕强 发布时间:2022-02-19 05:27:01
标签:SpringMVC,表单,数据
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中的相同。
来源:https://blog.csdn.net/chengyuqiang/article/details/82348542
0
投稿
猜你喜欢
- 1、IndexTagController.java@GetMapping("/tags/{id}") &n
- 前言昨晚想在Android应用中增加一个int映射到String的字典表,使用HashMap实现的时候,Eclipse给出了一个警告,昨晚项
- 场景既然要搞懂Redis分布式锁,那肯定要有一个需要它的场景。高并发售票问题就是一个经典案例。搭建环境准备redis服务,设置redis的键
- 前言在前一节的学习中,慕歌带大家使用了全局结果集返回,通过使用全局结果集配置,优雅的返回后端数据,为前端的数据拿取提供了非常好的参考。同时通
- 引言在实际分布式项目中延迟任务一般不会使用JDK自带的延迟队列,因为它是基于JVM内存存储,没有持久化操作,所以当服务重启后就会丢失任务。在
- 简介最近几年,各种新的高效序列化方式层出不穷,不断刷新序列化性能的上限,最典型的包括:专门针对Java语言的:Kryo,FST等等跨语言的:
- 本文实例为大家分享了java实现鲜花销售系统的具体代码,供大家参考,具体内容如下一、练习目标1.体会数组的作用2.找到分层开发的感觉3.收获
- HttpServletRequest对象代表客户端的请求,当客户端通过HTTP
- 本文实例讲述了C#实现XML与实体类之间相互转换的方法。分享给大家供大家参考,具体如下:using System;using System.
- 关于 swagger 本文不再赘述,网上文章很多。本文要讲的是Knife4j3.0.3 整合SpringBoot 2.6.4,因为 knif
- 下文笔者讲述maven引入本地jar包时,运行报错"java.lang.NoClassDefFoundError"的处理
- 目录ShutdownHook介绍ShutdownHook原理ShutdownHook的数据结构与执行顺序ShutdownHook触发点Shu
- Java中可以使用关键字synchronized进行线程同步控制,实现关键资源顺序访问,避免由于多线程并发执行导致的数据不一致性等问题。sy
- startActivityForResult与startActivity的不同之处在于:1、startActivity( )仅仅是跳转到目标
- 本文实例讲述了C++实现的链表类。分享给大家供大家参考。具体如下:#include <iostream>using namesp
- 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是如果有Synchr
- 最近一段时间在研究OAuth2的使用,想整个单点登录,从网上找了很多demo都没有实施成功,也许是因为压根就不懂OAuth2的原理导致。有那
- Unity脚本自动添加头部注释就是创建.cs文件时自动添加作者名,创建时间,文件名等看示例,我们在Unity的project面板下先创建一个
- 无论哪种界面框架输入文本框都是非常重要的控件, 但是发现flutter中的输入框TextField介绍的虽然多,但是各个属性怎么组合满足需要
- 在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成