1.编写实体类用来储存表单数据
package com.entity;
import java.util.Arrays;
import java.util.Date;
public class Users {
private String username;
private String password;
private String email;
private double salary;
private String gender;
private int education;
private String province;
private Date birthday;
private String[] favorites;
private String introduce;
private boolean accept;
public Users() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getEducation() {
return education;
}
public void setEducation(int education) {
this.education = education;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String[] getFavorites() {
return favorites;
}
public void setFavorites(String[] favorites) {
this.favorites = favorites;
}
public String getIntroduce() {
return introduce;
}
public void setIntroduce(String introduce) {
this.introduce = introduce;
}
public boolean getAccept() {
return accept;
}
public void setAccept(boolean accept) {
this.accept = accept;
}
@Override
public String toString() {
return "Users{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
", email='" + email + '\'' +
", salary=" + salary +
", gender='" + gender + '\'' +
", education=" + education +
", province='" + province + '\'' +
", birthday=" + birthday +
", favorites=" + Arrays.toString(favorites) +
", introduce='" + introduce + '\'' +
", accept='" + accept + '\'' +
'}';
}
}
2.根据实体类设计一个用户注册表单
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>用户注册</title>
</head>
<body>
<h1>用户注册</h1>
<hr>
<div>
<!--注意这里action属性的内容是处理表单的servlet映射地址,也即servlet中@WebServlet的value相同-->
<form name="regForm" action="reg" method="post">
<table>
<tr>
<td class="title">用户名:</td>
<td><input type="text" name="username"/></td>
</tr>
<tr>
<td class="title">密码:</td>
<td><input type="password" name="password"/></td>
</tr>
<tr>
<td class="title">确认密码:</td>
<td><input type="password" name="confirmpass"/></td>
</tr>
<tr>
<td class="title">电子邮箱:</td>
<td><input type="text" name="email" value=""/></td>
</tr>
<tr>
<td class="title">薪水:</td>
<td><input type="text" name="salary" value="10000" hidden/></td>
</tr>
<tr>
<td class="title">性别:</td>
<td><input type="radio" value="M" name="gender" checked/>男<input type="radio" value="F" name="gender"/>女
</td>
</tr>
<tr>
<td class="title">学历:</td>
<td>
<select name="education">
<option value="-1" selected>-----请选择-----</option>
<option value="0">文盲</option>
<option value="1">小学</option>
<option value="2">初中</option>
<option value="3">高中</option>
<option value="4">大专</option>
<option value="5">本科</option>
<option value="6">硕士</option>
<option value="7">博士</option>
<option value="8">博士后</option>
<option value="9">圣斗士</option>
</select>
</td>
</tr>
<tr>
<td class="title">籍贯:</td>
<td>
<input list="province" name="province" value=""/>
<datalist id="province">
<option value="河北">
<option value="河南">
<option value="山东">
<option value="山西">
<option value="陕西">
</datalist>
</td>
</tr>
<tr>
<td class="title">出生日期:</td>
<td><input type="date" name="birthday" value=""/></td>
</tr>
<tr>
<td class="title">爱好:</td>
<td>
<!--复选框name名字必须一样-->
<input type="checkbox" name="favorites" value="read"/>读书
<input type="checkbox" name="favorites" value="music"/>音乐
<input type="checkbox" name="favorites" value="internet"/>上网
<input type="checkbox" name="favorites" value="nba"/>NBA
</td>
</tr>
<tr>
<td class="title">自我介绍:</td>
<td><textarea rows="10" cols="25" name="introduce"></textarea></td>
</tr>
<tr>
<td class="title">上传照片:</td>
<td><input type="file" name="pic"/></td>
</tr>
<tr>
<td class="title">是否接受条款:</td>
<td><input type="checkbox" name="accept" value="true"/>我无条件接受霸王条款</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="注册"/><input type="reset" value="重置"/></td>
</tr>
</table>
</form>
</div>
</body>
</html>
3.编写RegServlet
package com.servlet;
import com.entity.Users;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.SimpleDateFormat;
@WebServlet(name = "RegServlet",value="/reg",loadOnStartup = 1)
public class RegServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Users regUser = new Users();
regUser.setUsername(request.getParameter("username"));
regUser.setPassword(request.getParameter("password"));
regUser.setEmail(request.getParameter("email"));
regUser.setGender(request.getParameter("gender"));
regUser.setSalary(Double.parseDouble(request.getParameter("salary")));
regUser.setEducation(Integer.parseInt(request.getParameter("education")));
regUser.setProvince(request.getParameter("province"));
regUser.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("birthday")));
//注意:字符串数组属性使用getParameterValues方法接收。
regUser.setFavorites(request.getParameterValues("favorites"));
regUser.setIntroduce(request.getParameter("introduce"));
regUser.setAccept(Boolean.parseBoolean(request.getParameter("accept")));
System.out.println("********注册用户资料*********");
System.out.println(regUser);
}catch(Exception ex){
ex.printStackTrace();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
}
4.测试
启动tomcat,填写用户注册表单后,点击注册提交按钮。

控制台输出效果:
********注册用户资料*********
Users{username='zhangsan', password='123456', email='zhangsan@126.com', salary=10000.0, gender='F', education=6, province='?±±???', birthday=Wed Mar 15 00:00:00 CST 1995, favorites=[internet, nba], introduce='?¨???????', accept='true'}
可以看出,Servlet可以正常接收表单提交的所有用户数据,但是存在中文乱码问题。