BeanUtils入门

来源:互联网 发布:点云数据处理算法 编辑:程序博客网 时间:2024/06/05 06:58

BeanUtils入门

  • BeanUtils入门
    • 基本概述
    • 常用API
    • 封装表单提交基本步骤
      • 创建JavaBean
      • Servlet获取表单数据
        • 表单
        • 获取表单数据
      • 编写工具类
      • 测试转换工具
      • 测试

基本概述

BeanUtils 是 Apache commons组件的成员之一,主要用于简化JavaBean封装数据的操作。它可以给JavaBean封装一个字符串数据,也可以将一个表单提交的所有数据封装到JavaBean中。

PS:下载地址:https://github.com/apache/commons-beanutils/

常用API

BeanUtils工具常用工具类有两个:BeanUtils、ConvertUtils。BeanUtils用于封装数据,ConvertUtils用于处理类型转换,常用API如下:

null 方法 描述 BeanUtils对象 populate(Object bean, Map<String,String[]> properties) 将Map数据封装到指定Javabean中,一般用于将表单的所有数据封装到javabean ConvertUtils register(Converter converter, Class clazz) 注册类型转换器

封装表单提交基本步骤

创建JavaBean

package com.pc.domain;import java.util.Date;/** * 用户Bean *  * @author Switch * @data 2016年10月11日 * @version V1.0 */public class User {    private Integer id;    private String userName;    private String password;    private String sex;    private String hobby;    private Date birthday;    // 无参构造方法    public User() {    }    // 设置器和获取器    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    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 getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public String getHobby() {        return hobby;    }    public void setHobby(String hobby) {        this.hobby = hobby;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    @Override    public String toString() {        return "User [id=" + id + ", userName=" + userName + ", password=" + password + ", sex=" + sex + ", hobby="                + hobby + ", birthday=" + birthday + "]";    }}

Servlet获取表单数据

表单

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!DOCTYPE html><html>    <head>        <meta charset=UTF-8">        <title>注册页面2</title>    </head>    <body>        <div align="center" style="position: relative; top: 100px;">            <form action="TestBeanServlet" method="post">                用户名:<input type="text" name="userName" /><br />                密码:<input type="password" name="password" /><br />                性别:<input type="radio" name="sex" value="男" /><input type="radio" name="usex" value="女" /><br />                爱好:<input type="checkbox" name="hobby" value="蹦迪" />蹦迪                <input type="checkbox" name="hobby" value="攀岩" />攀岩                <input type="checkbox" name="hobby" value="蹦极" />蹦极<br />                生日:<input type="text" name="birthday" /><br/>                <input type="submit" value="注册" />            </form>        </div>    </body></html>

获取表单数据

package com.pc.beanutils;import java.io.IOException;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 测试BeanUtils工具 *  * @author Switch * @data 2016年10月11日 * @version V1.0 */public class TestBeanServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        response.setContentType("text/html;charset=utf-8");        request.setCharacterEncoding("utf-8");        // 获取表单数据集        Map<String, String[]> formMap = request.getParameterMap();    }    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

编写工具类

package com.pc.utils;import java.util.Date;import java.util.Map;import org.apache.commons.beanutils.BeanUtils;import org.apache.commons.beanutils.ConvertUtils;import org.apache.commons.beanutils.converters.DateConverter;/** * Bean封装工具类 *  * @author Switch * @data 2016年10月11日 * @version V1.0 */public class MyBeanUtils {    public static <T> T populate(Class<T> beanClass, Map<String, String[]> props) throws Exception {        // 使用反射创建实例        T bean = beanClass.newInstance();        // 创建BeanUtils提供的时间转换器        DateConverter dateConverter = new DateConverter();        // 设置转换格式        dateConverter.setPatterns(new String[] { "yyyy-MM-dd", "yyyy/MM/dd", "yyyyMMdd" });        // 注册转换器        ConvertUtils.register(dateConverter, Date.class);        // 封装数据        BeanUtils.populate(bean, props);        return bean;    }}

测试转换工具

package com.pc.beanutils;import java.io.IOException;import java.util.Arrays;import java.util.Map;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.pc.domain.User;import com.pc.utils.MyBeanUtils;/** * 测试BeanUtils工具 *  * @author Switch * @data 2016年10月11日 * @version V1.0 */public class TestBeanServlet extends HttpServlet {    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        try {            response.setContentType("text/html;charset=utf-8");            request.setCharacterEncoding("utf-8");            // 获取表单数据集            Map<String, String[]> formMap = request.getParameterMap();            // 封装数据            User user = MyBeanUtils.populate(User.class, formMap);            // 处理特殊数据类型            String[] hobbies = request.getParameterValues("hobby");            // 将其转换为hobby1,hobby2,hobby3这样的String            String hobby = Arrays.toString(hobbies).substring(1, Arrays.toString(hobbies).length() - 1);            user.setHobby(hobby);            System.out.println(user);        } catch (Exception e) {            e.printStackTrace();        }    }    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        doGet(request, response);    }}

测试

界面

结果

PS:GitHub:https://github.com/Switch-vov/servlet-request-test

0 0
原创粉丝点击