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

文章目录

      • apache BeanUtils工具类简介
      • BeanUtils主要方法
      • BeanUtils的环境配置
        • 使用BeanUtils第三方工具,需要导入jar包:
          • 在WEB-INF下创建lib目录,将jar包导入
          • 选定jar包通过add As Library将外部jar包添加到idea项目中
          • 添加成功可以通过`ctrl+alt+shift+s`快捷键打开Project Structrue的Libraries查看和删除
      • 接下来就是看用BeanUtils和不用的区别了
        • 共同页面
        • 创建bean类User对象
        • 编写servlet -- 没有用BeanUtils工具写
        • 调用BeanUtils的populate()方法实现
      • 最终显示效果
      • 个人总结

apache BeanUtils工具类简介

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

BeanUtils主要方法

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

BeanUtils的环境配置

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

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

apache BeanUtils工具类的使用【***】_第1张图片

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

apache BeanUtils工具类的使用【***】_第2张图片

apache BeanUtils工具类的使用【***】_第3张图片

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

apache BeanUtils工具类的使用【***】_第4张图片
apache BeanUtils工具类的使用【***】_第5张图片

接下来就是看用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的populate()方法实现

而如果用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());
    }
}

最终显示效果

apache BeanUtils工具类的使用【***】_第6张图片
apache BeanUtils工具类的使用【***】_第7张图片

个人总结

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

你可能感兴趣的:(每日学习,java,bean,BeanUtils,bean类管理工具,封装bean)