apache BeanUtils工具类的使用【***】

apache BeanUtils工具类简介

  1. BeanUtils是什么?
        BeanUtils 是 Apache commons组件的成员之一
  2. 有什么用?
        主要用于简化JavaBean封装数据的操作。

BeanUtils主要方法

方法 描述
populate(Object bean, Map<String,String[]>properties) 将Map数据封装到指定Javabean中,一般用于将表单的所有数据封装到javabean
setProperty(Object obj,String name,Object value) 设置属性值
getProperty(Object obj,String name) 获得属性值

BeanUtils的环境配置

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

在WEB-INF下创建lib目录,将jar包导入

在这里插入图片描述

选定jar包通过add As Library将外部jar包添加到idea项目中

在这里插入图片描述

在这里插入图片描述

添加成功可以通过ctrl+alt+shift+s快捷键打开Project Structrue的Libraries查看和删除

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

接下来就是看用BeanUtils和不用的区别了

共同页面

<html>
<head>
    <title>登录界面</title>
</head>
<body>
    <h3>post请求</h3>
    <form action="body" method="post">
        <table>
            <tr>
                <td>账号:</td>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr align="center"><input type="submit" value="登录"></tr>
            <tr>
                <td>爱好:</td>
                <td>
                    <input type="checkbox" name="hobbys" value="敲代码"/>敲代码
                    <input type="checkbox" name="hobbys" value="写博客"/>写博客
                    <input type="checkbox" name="hobbys" value="看底层"/>看底层
                    <input type="checkbox" name="hobbys" value="学操作"/>学操作
                </td>
            </tr>
            <tr>
                <td>性别:</td>
                <td>
                    <input type="radio" value="" name="sex"/><input type="radio" value="" name="sex"/></td>
            </tr>
        </table>
    </form>
</body>
</html>

创建bean类User对象

这里的User对象的属性名和页面对应的name值要一致,因为BeanUtils通过反射实现,通过get、set方法,如果名称不一样会找不到

public class User {
    //使用BeanUtils需要这个属性名和页面对应输入的name属性名一致
    private String username;
    private String password;
    private String[] hobbys;
    private String sex;
	
	//省略构造方法 getter、setter方法
}

编写servlet – 没有用BeanUtils工具写

@WebServlet("/BeanutilsServlet")
public class BeanutilsServlet 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 {
        //没有使用BeanUtils ,写得很麻烦 ,一个一个地获取,再一个一个的设置
        //设置编码
        request.setCharacterEncoding("UTF-8");
        User user = new User();
        //1.获取所有的参数
        Map<String, String[]> map = request.getParameterMap();
        //2.赋值给一个User对象
        String[] usernames = map.get("username");
        user.setUsername(usernames[0]);

        String[] passwords = map.get("password");
        user.setPassword(passwords[0]);

        String[] hobbies = map.get("hobbys");
        user.setHobbys(hobbies);

        String[] sexes = map.get("sex");
        user.setSex(sexes[0]);

        //将user对象显示到浏览器上
        System.out.println(user);
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(user.toString().getBytes());
    }
}

用BeanUtils写

而如果用Beanutils就非常简单了,它帮我们自动封装类,就是bean类对应的属性名和页面输入的name值要一对一对应

@WebServlet("/BeanutilsServlet")
public class BeanutilsServlet 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 {
        //没有使用BeanUtils ,写得很麻烦 ,一个一个地获取,再一个一个的设置
        //设置编码
        request.setCharacterEncoding("UTF-8");
        User user = new User();
        //获取所有的参数
        Map<String, String[]> map = request.getParameterMap();
        
        try {
            //参1、对应的javabean对象  参2 从浏览器读取到的参数key-value的map值
            BeanUtils.populate(user,map);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(user);
        //将user对象显示到浏览器上
        System.out.println(user);
        ServletOutputStream outputStream = response.getOutputStream();
        outputStream.write(user.toString().getBytes());
    }
}

最终显示效果

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

个人总结

    BeanUtils真的是一个非常好用的东西,他直接将表单的对象封装成bean供我们使用,特别是对于那种一堆属性的bean来说,它极大的减少了我们的开发代码量。
    别看我现在写的好像减少的代码不多,但是如果是那种大量属性的(比如:医院病历单等等大量属性)的bean来说,这样可以大量减少我们开发量。
    注意:这里面的bean对应的属性名要与页面的name值对应,不然BeanUtils通过反射的get、set会找不到对应的属性值

猜你喜欢

转载自blog.csdn.net/qq_40542534/article/details/108522185