自动将Map转换成对象的方法

实现自动将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);
    }

}

猜你喜欢

转载自blog.csdn.net/z1941563559/article/details/80549098
今日推荐