JavaWeb BeanUtils的使用

为什么需要BeanUtils?

项目存储数据时候的选择

通常情况下,我们会选择使用JavaBean来存储内存中的数据,除非是非常简单的数据没有必要多编写一个JavaBean类的时候才会选择使用Map进行存储。

使用Map存储数据的优缺点

优点:

  1. 灵活性强于javabean,易扩展,耦合度低
  2. 写起来简单,代码量少

缺点:

  1. javabean在数据输入编译期就会对一些数据类型进行校验,如果出错会直接提示。而map的数据类型则需要到代码运行阶段,才会进行处理判断
  2. map的参数名称如果写错,也是需要到代码运行阶段,才能判断出是不是字段写错,不利于调试等。相对而言javabean会在编译期间发现错误
  3. map的参数值如果多传、乱传,也是需要到代码运行阶段,才能判断出是不是字段写错,不利于调试等。相对而言javabean会在编译期间发现错误
  4. 仅仅看方法签名,你不清楚Map中所拥有的参数个数、类型、每个参数代表的含义。 后期人员去维护,例如需要加一个参数等,如果项目层次较多,就需要把每一层的代码都了解清楚才能知道传递了哪些参数

使用JavaBean存储数据的优缺点

优点:

  1. 面向对象的良好诠释
  2. 数据结构清晰,便于团队开发 & 后期维护
  3. 代码足够健壮,可以排除掉编译期错误

缺点:

代码量增多,需要花时间去封装JavaBean类


BeanUtils概述

BeanUtils的简介

BeanUtils是由Apache公司所开发的工具包,目的是为了简化数据封装,方便Java程序员对JavaBean类进行简便的操作。

使用BeanUtils将Map中的数据封装到JavaBean对象中

BeanUtils的作用

将Map中的数据填充到JavaBean对象中

API方法介绍

BeanUtils.populate(JavaBean对象,map对象);

使用步骤

  1. 导入对应的jar包
  2. 调用BeanUtils类的populate方法,传入对应的参数就可以了

Index.html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页</title>
</head>
<body>
<form action="/class12_beanUtils/beanUtilsDemo" method="post">
    用户名<input type="text" name="username"/><br/>
    密码<input type="password" name="password"/><br/>
    邮箱<input type="text" name="email"/><br/>
    手机号<input type="text" name="phone"/><br/>
    地址<input type="text" name="address"/><br/>
    兴趣爱好
    <input type="checkbox" name="hobby" value="basketball"/>篮球
    <input type="checkbox" name="hobby" value="football"/>足球
    <input type="checkbox" name="hobby" value="yumaoball"/>羽毛球
    <input type="checkbox" name="hobby" value="pingpangball"/>乒乓球<br/>
    <button>提交</button>
</form>
</body>
</html>

JavaBean代码

import java.util.Arrays;

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

    public User() {
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", phone='" + phone + '\'' +
                ", address='" + address + '\'' +
                ", hobby=" + Arrays.toString(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 getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String[] getHobby() {
        return hobby;
    }

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

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

Servlet代码

package com.drimwai.servlet;

import com.drimwai.servlet.bean.User;
import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;

public class BeanUtilsDemo extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //一次性获取所有的请求参数,并且将所有的请求参数封装到Map中,请求参数名就是map的key,请求参数值就是map的value
        Map<String, String[]> parameterMap = request.getParame
          terMap();

        //将请求参数封装到User对象中: 将parameterMap中的数据存到User对象中
        User user = new User();
        //使用BeanUtils将Map中的数据存储到JavaBean对象中
        try {
            //在使用BeanUtils将Map中的数据存储到JavaBean的时候,会自动进行一些基本的类型转换
            //要求:JavaBean中的属性名和Map中的key要对应,才能封装数据,如果Map中的key和JavaBean的属性名不对应那么这个属性就无法封装
            BeanUtils.populate(user,parameterMap);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(user);
    }
}

创作不易!欢迎点赞/评论!!

上一篇:【无标题】


下一篇:BeanUtils