实现自动将Map转换成对象,借助第三方工具commons-beanutils-1.8.0.jar+commons-logging.jar实现,需要遵守的规则创建的对象的属性名必须与map的key相同。
下载jar包
https://download.csdn.net/download/z1941563559/10454502
举例:
register.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 这里直接写虚拟目录 -->
<form action="req2" method="post">
用户名:<input type="text" name="user"><br/>
密码:<input type="password" name="pwd"><br/>
性别:<input type="radio" name="sex" value="男">男 <input type="radio" name="sex" value="女">女<br/>
爱好:<input type="checkbox" name="hobby" value="hobby1">hobby1
<input type="checkbox" name="hobby" value="hobby2">hobby2
<input type="checkbox" name="hobby" value="hobby3">hobby3<br/>
地区:<select name="area">
<option value="中国大陆">中国大陆</option>
<option value="中国香港">中国香港</option>
<option value="中国台湾">中国台湾</option>
</select><br/>
<input type="submit" value="提交">
</form>
</body>
</html>
User.java
package com.persist.entity;
import java.util.Arrays;
public class User {//名字要能体现表单的功能
private String user;//名字与标签名字一致
private String pwd;
private String sex;
private String[] hobby;//hobby是多选框,所以这里学成字符串数组
private String area;
public User() {
}
public User(String user, String pwd, String sex, String[] hobby, String area) {
super();
this.user = user;
this.pwd = pwd;
this.sex = sex;
this.hobby = hobby;
this.area = area;
}
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getArea() {
return area;
}
public void setArea(String area) {
this.area = area;
}
@Override
public String toString() {
return "User [user=" + user + ", pwd=" + pwd + ", sex=" + sex + ", hobby=" + Arrays.toString(hobby) + ", area="
+ area + "]";
}
}
真实使用
package com.persist.request;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.Enumeration;
import java.util.Map;
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 org.apache.commons.beanutils.BeanUtils;
import com.persist.entity.User;
/**
* Servlet implementation class RequestDemo2
*/
@WebServlet(name = "req2", urlPatterns = { "/req2" })
public class RequestDemo2 extends HttpServlet {
private static final long serialVersionUID = 1L;
public RequestDemo2() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//让客户端与服务器保持一致
response.setContentType("text/html;charset=utf-8");
//客户端告诉服务器端我的编码格式---解决post下的中文乱码,tomcat7及以下
request.setCharacterEncoding("utf-8");
// * getParameterMap()
Map<String, String[]> parameterMap = request.getParameterMap();
//第三方jar包把Map转换成模型commons-beanutils-1.8.0.jar,commons-logging.jar
//注意:模型的属性名字与表单标签的名字一致
User user = new User();
try {
BeanUtils.populate(user, parameterMap);
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}