首页 > 其他 > 详细

Commons BeanUtils工具包

时间:2019-10-15 12:02:19      阅读:90      评论:0      收藏:0      [点我收藏+]

简介

BeanUtils工具包是由Apache公司所开发,提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。

我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。

如果我们使用BeanUtils工具包就可以很方便的对JavaBean类能够进行简便的操作。

使用与依赖包commons-beanutils-1.9.3.jar ;commons-logging-1.2.jar

BeanUtils工具对JavaBean类的操作:

① BeanUtils 可以便于对javaBean的属性进行赋值。

② BeanUtils 可以便于对javaBean的对象进行赋值。

③ BeanUtils 可以将一个MAP集合的数据拷贝到一个javabean对象中

BeanUtils的使用:

约定前提:参数名称必须要和JavaBean的属性名称保持一致。

技术分享图片
 1 public class User {
 2 
 3     private int id;
 4     private String username;
 5     private String email;
 6     private String password;
 7     private String name;
 8     private String phone;
 9     private String address;
10 
11     public User() {
12         super();
13     }
14 
15     public User(String username, String email, String password, String name, String phone, String address) {
16         super();
17         this.username = username;
18         this.email = email;
19         this.password = password;
20         this.name = name;
21         this.phone = phone;
22         this.address = address;
23     }
24 
25     public int getId() {
26         return id;
27     }
28 
29     public void setId(int id) {
30         this.id = id;
31     }
32 
33     public String getUsername() {
34         return username;
35     }
36 
37     public void setUsername(String username) {
38         this.username = username;
39     }
40 
41     public String getEmail() {
42         return email;
43     }
44 
45     public void setEmail(String email) {
46         this.email = email;
47     }
48 
49     public String getPassword() {
50         return password;
51     }
52 
53     public void setPassword(String password) {
54         this.password = password;
55     }
56 
57     public String getName() {
58         return name;
59     }
60 
61     public void setName(String name) {
62         this.name = name;
63     }
64 
65     public String getPhone() {
66         return phone;
67     }
68 
69     public void setPhone(String phone) {
70         this.phone = phone;
71     }
72 
73     public String getAddress() {
74         return address;
75     }
76 
77     public void setAddress(String address) {
78         this.address = address;
79     }
80 
81     @Override
82     public String toString() {
83         return "User [id=" + id + ", username=" + username + ", email=" + email + ", password=" + password + ", name="
84                 + name + ", phone=" + phone + ", address=" + address + "]";
85     }
86 
87 }
JavaBean Code

例如:用户注册,服务器端获取浏览器端提交的注册表单数据,然后将用户输入的注册信息持久化到数据库中。

浏览器端:表单中<input type="text" name="username">的name属性必须与JavaBean类的属性名一致。

技术分享图片
 1         <form action="${pageContext.request.contextPath }/user_register"
 2             method="post">
 3             <div class="register-top-grid">
 4                 <h3>注册新用户</h3>
 5                 <div class="input">
 6                     <span>用户名 <label style="color: red;">*</label></span> 
 7                     <input type="text" name="username" placeholder="请输入用户名" required="required">
 8                 </div>
 9                 <div class="input">
10                     <span>邮箱 <label style="color: red;">*</label></span> 
11                     <input type="text" name="email" placeholder="请输入邮箱" required="required">
12                 </div>
13                 <div class="input">
14                     <span>密码 <label style="color: red;">*</label></span> 
15                     <input type="text" name="password" placeholder="请输入密码" required="required">
16                 </div>
17                 <div class="input">
18                     <span>收货人<label></label></span> 
19                     <input type="text" name="name" placeholder="请输入收货">
20                 </div>
21                 <div class="input">
22                     <span>收货电话<label></label></span> 
23                     <input type="text" name="phone" placeholder="请输入收货电话">
24                 </div>
25                 <div class="input">
26                     <span>收货地址<label></label></span> 
27                     <input type="text" name="address" placeholder="请输入收货地址">
28                 </div>
29                 <div class="clearfix"></div>
30             </div>
31             <div class="register-but text-center">
32                 <input type="submit" value="提交">
33                 <div class="clearfix"></div>
34             </div>
35         </form>
HTML Code

服务器端:在不使用BeanUtils的情况下获取数据,每一条数据都进行获取并对每个属性逐个赋值;

通过这样的方法如果表单属性字段很多,达到了100、1000甚至更多,那我们不是要写100、1000行重复的代码了吗。谁都不愿意这样做。

 1     protected void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3 
 4         // 构建User对象
 5         User user = new User();
 6         
 7         // 获取请求中表单提交的数据
 8         String username = request.getParameter("username");
 9         String email = request.getParameter("email");
10         String password = request.getParameter("password");
11         String name = request.getParameter("name");
12         String phone = request.getParameter("phone");
13         String address = request.getParameter("address");
14         
15         // 把获取到的数据赋值到user对象中
16         user.setUsername(username);
17         user.setEmail(email);
18         user.setPassword(password);
19         user.setName(name);
20         user.setPhone(phone);
21         user.setAddress(address);
22         
23         // 将user对象持久化到数据库中
24         uService.register(username);
25         request.setAttribute("msg", "注册成功,请登录");
26         request.getRequestDispatcher("/user_login.jsp").forward(request, response);
27     }

 而我们使用 BeanUtils.copyProperties() 方法以后,代码量大大的减少,而且整体程序看着也简洁明朗,代码如下:

 1     protected void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3 
 4         // 构建User对象
 5         User user = new User();
 6         
 7         try {
 8             // 获取表单请求中的Map集合,将集合中的数据copy到user对象中;所提交请求中的请求参数和请求参数值的映射关系。
 9             BeanUtils.copyProperties(user, request.getParameterMap());
10         } catch (IllegalAccessException e) {
11             e.printStackTrace();
12         } catch (InvocationTargetException e) {
13             e.printStackTrace();
14         }
15         
16         // 将user对象持久化到数据库中
17         uService.register(user);
18         request.setAttribute("msg", "注册成功,请登录");
19         request.getRequestDispatcher("/user_login.jsp").forward(request, response);
20 
21     }

  注:如果User和表单之间存在名称不相同的属性,则BeanUtils不对这些属性进行处理。

 

Commons BeanUtils工具包

原文:https://www.cnblogs.com/Dm920/p/11675898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!