1、实体类
代码语言:javascript
复制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、控制器
代码语言:javascript
复制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、页面
代码语言:javascript
复制<%@ 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>
代码语言:javascript
复制<%--
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>