SpringMVC如何獲取表單數(shù)據(jù)(radio和checkbox)
SpringMVC獲取表單數(shù)據(jù)
1、實(shí)體類
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
*
*/
// 域?qū)ο?,?shí)現(xiàn)序列化接口
public class UserBean implements Serializable {
private Integer id;
private String username;
private String password;
private String birthday;
private Integer age;
//測(cè)試單選按鈕
private String sex;
//測(cè)試復(fù)選按鈕
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("表單測(cè)試");
UserBean user = new UserBean("jack","1997-7-1","女");
// model中添加屬性u(píng)ser,值是user對(duì)象
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("獲取表單數(shù)據(jù):");
//@ModelAttribute注解指示了參數(shù)應(yīng)該從模型(這里所說的“模型”指 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注解的方法做一些初始化操作。
* 當(dāng)同一個(gè)controller中有多個(gè)方法被@ModelAttribute注解標(biāo)記,
* 所有被@ModelAttribute標(biāo)記的方法均會(huì)被執(zhí)行,按先后順序執(zhí)行,然后再進(jìn)入請(qǐng)求的方法
* @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>測(cè)試form標(biāo)簽</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獲取表單參數(shù)
以下幾種方式只有在已搭好的SpringMVC環(huán)境中,才能執(zhí)行成功!
一、首先,寫一個(gè)登陸頁面和一個(gè)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博客后臺(tái)登錄</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實(shí)體類
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;
}
}
二、獲取表單數(shù)據(jù)的方法
1、直接把表單的參數(shù)寫在Controller相應(yīng)的方法的形參中
注意:控制器中方法的形參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");
的參數(shù)名稱必須和登陸頁面的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.通過一個(gè)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請(qǐng)求通過json數(shù)據(jù)接收
在頁面中添加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("出錯(cuò):" + e);
}
});
});
});
</script>
控制器中的代碼和方法3中的相同。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)的連接oracle/mysql數(shù)據(jù)庫功能簡單示例【附oracle+mysql數(shù)據(jù)庫驅(qū)動(dòng)包】
這篇文章主要介紹了java實(shí)現(xiàn)的連接oracle/mysql數(shù)據(jù)庫功能,結(jié)合實(shí)例形式分析了java基于jdbc連接Oracle與mysql的相關(guān)操作技巧,并附帶完整實(shí)例代碼與oracle+mysql數(shù)據(jù)庫驅(qū)動(dòng)包供讀者下載參考,需要的朋友可以參考下2017-10-10
Win11系統(tǒng)下載安裝java的詳細(xì)過程
這篇文章主要介紹了Win11如何下載安裝java,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
SpringBoot啟動(dòng)時(shí)執(zhí)行初始化操作的幾種方式
項(xiàng)目中,經(jīng)常需要在啟動(dòng)過程中初始化一些數(shù)據(jù),如從數(shù)據(jù)庫讀取一些配置初始化,或從數(shù)據(jù)庫讀取一些熱點(diǎn)數(shù)據(jù)到redis進(jìn)行初始化緩存,本文給大家介紹了SpringBoot啟動(dòng)時(shí)執(zhí)行初始化操作的幾種方式的相關(guān)資料,需要的朋友可以參考下2024-05-05
基于線程的wait和notify使用,生產(chǎn)消費(fèi)案例
這篇文章主要介紹了基于線程的wait和notify使用,生產(chǎn)消費(fèi)案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Springboot+AOP實(shí)現(xiàn)返回?cái)?shù)據(jù)提示語國際化的示例代碼
這篇文章主要介紹了Springboot+AOP實(shí)現(xiàn)返回?cái)?shù)據(jù)提示語國際化的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07
Spring Boot 校驗(yàn)用戶上傳的圖片文件(兩種方式)
圖片上傳是現(xiàn)代應(yīng)用中非常常見的一種功能,也是風(fēng)險(xiǎn)比較高的一個(gè)地方,惡意用戶可能會(huì)上傳一些病毒、木馬,本文給大家介紹兩種對(duì)圖片文件進(jìn)行校驗(yàn)的方法,感興趣的朋友一起看看吧2023-11-11
解決偶現(xiàn)的MissingServletRequestParameterException異常問題
這篇文章主要介紹了解決偶現(xiàn)的MissingServletRequestParameterException問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10

