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