apache BeanUtils工具类与传统方式的区别

apache BeanUtils工具类与传统方式的区别

  1. BeanUtiles是什么?

    BeanUtile是Apache commons组件的成员之一

  2. 有什么用?

    主要用于简化JavaBean封闭数据的操作。

    使用第三方工具,需要导入jar包

在这里插入图片描述

比如现在要获取jsp页面表单的值:

jsp页面代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <form method="post" action="/Day04_war_exploded/demo04Servlet">
    账号: <input type="text" name="username"><br>
    密码: <input type="text" name="password"><br>
    爱好: <input type="checkbox" name="hobby" value="抽烟">抽烟
          <input type="checkbox" name="hobby" value="喝酒">喝酒
          <input type="checkbox" name="hobby" value="烫头">烫头
    <input type="submit" value="提交">
  </form>
  </body>
</html>

传统的servlet解决方法:

package com.lbl.servlet;

import com.lbl.bean.User;

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.util.Arrays;

@WebServlet("/demo04Servlet")
public class Demo04Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        String[] hobbys = request.getParameterValues("hobby");
        System.out.println(Arrays.toString(hobbys));
        User user = new User();
        user.setUsername(username);
        user.setPassword(password);
        user.setHobby(hobbys);
        System.out.println(user);

    }
}

User代码如下:

package com.lbl.bean;

import java.util.Arrays;

public class User {
    
    
    private String username;
    private String password;
    private String[] hobby;

    public User() {
    
    
    }

    public User(String username, String password, String[] hobby) {
    
    
        this.username = username;
        this.password = password;
        this.hobby = hobby;
    }

    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[] getHobby() {
    
    
        return hobby;
    }

    public void setHobby(String[] hobby) {
    
    
        this.hobby = hobby;
    }

    @Override
    public String toString() {
    
    
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", hobby=" + Arrays.toString(hobby) +
                '}';
    }
}

效果如下:

在这里插入图片描述

过于麻烦!!!

##现在我们使用apache BeanUtils工具类

  1. 导入上述对应jar包
  2. 使用 BeanUtils.populate()方法
package com.lbl.servlet;

import com.lbl.bean.User;
import org.apache.commons.beanutils.BeanUtils;

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.util.Map;

@WebServlet("/demo05Servlet")
public class Demo05Servlet extends HttpServlet {
    
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        doGet(request,response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
    
        request.setCharacterEncoding("utf-8");

        User user = new User();
        Map<String, String[]> parameterMap = request.getParameterMap();
        try {
    
    
            BeanUtils.populate(user,parameterMap);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        System.out.println(user);

    }
}

效果图:

在这里插入图片描述
在这里插入图片描述

底层原理

获取key生成set方法

username -->setUsername

调用同名set方法给成员变量赋值(反射)

obj.setUsername(map.get(key))

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108519386
今日推荐