基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理
来源:互联网 发布:红米note3数据经常断网 编辑:程序博客网 时间:2024/05/16 08:04
在Java Web开发过程中,会遇到很多的表单数据的提交和对表单数据的处理。而每次都需要对这些数据的字段进行一个一个的处理就显得尤为繁琐,在Java语言中,面向对象的存在目的便是为了消除重复代码,减少我们程序员的负担。因此,在这里和大家分享一下我学到的一个小技巧。
对于封装
这里说的“封装”,是指将从客户端提交的表单数据封装到一个bean层entitry中。这样可以方便对数据的处理。下面就来看一个具体的bean实例化的小例子吧。
比如说我们从网页上获得用户的登录信息,一般来说是用户名和密码信息,因此我们就可以将这两个数据封装到一个bean中。
下面是一个class类:
package beanenclosetest;public class PersonBean { private String name; private String password; @Override public String toString() { return "PersonBean [name=" + name + ", password=" + password + "]"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; }}
这样就可以将数据封装起来了。
泛型处理
这里说的泛型是对于beanUtil层面的数据加工。这样就可以使得其他人在调用该方法时不必再进行强制的类型转换,这样在一定的程度上加强了程序的安全性。比如下面这个代码,就用到了泛型的操作。
package beanenclosetest;import java.lang.reflect.InvocationTargetException;import java.util.Enumeration;import javax.servlet.http.HttpServletRequest;import org.apache.commons.beanutils.BeanUtils;public class PersonBeanUtils { public static <T> T request2Bean(HttpServletRequest request, Class<T> t ){ try { T bean = t.newInstance(); Enumeration<String> e = request.getParameterNames(); while(e.hasMoreElements()){ String name = (String) e.nextElement(); String value = request.getParameter(name); BeanUtils.setProperty(bean, name, value); } return bean; } catch (Exception e) { // TODO Auto-generated catch block throw new RuntimeException(e); } }}
反射
public static T request2Bean(HttpServletRequest request, Class t ){
try { T bean = t.newInstance(); }catch(Exception e){ //do something }
这里面就是用到了反射的操作。通过参数获得一个bean的字节码信息,这里面其实就是一个类的内部的所有信息的实体。
使用BeanUtils
BeanUtils是一个apache开源的一个项目,旨在帮助程序员减轻对字段数据的加工负担。其使用方法非常简单,但是需要注意的是需要commons-logging 包的支持。否则会报出程序的异常错误信息。
如下:
public static <T> T request2Bean(HttpServletRequest request, Class<T> t ){ try { T bean = t.newInstance(); Enumeration<String> e = request.getParameterNames(); while(e.hasMoreElements()){ String name = (String) e.nextElement(); String value = request.getParameter(name); BeanUtils.setProperty(bean, name, value); } return bean; } catch (Exception e) { // TODO Auto-generated catch block throw new RuntimeException(e); } }
这里面的BeanUtils.setProperty(bean,name,value);就是处理方式。是不是很简单啊,通过者一行代码就可以将bean字段的属性信息添加到bean中并返回。
至此,本篇博客的讲解就结束了。下面一起来看一看一个实用的案例吧。
具体的小案例
打开chrome浏览器,输入tomcat服务器上的对应的网址,然后为了更加真实的模仿实际项目中的情景,我们就直接在URL地址上添加parameter吧,如下:
然后打开服务器终端terminal,然后就可以看到如下信息:
由此,我们的这个“基于表单数据的封装,泛型化,反射操作,就完成了。
总结:
- 使用BeanUtils进行操作的时候需要注意对包的处理。
- 反射操作的时候需要注意字节码的转换方式。
- 在静态方法中使用泛型需要进行声明。
- 注意代码逻辑的灵活使用!
- 基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理
- 使用apache的BeanUtils封装数据
- 用BeanUtils类自动封装表单数据
- BeanUtils数据封装与表单JavaBean
- 使用Apache的BeanUtils进行JavaBean的反射操作
- BeanUtils对数据的封装
- struts2中基于表单数据的封装
- 用BeanUtils类自动封装表单数据到javabean
- 用BeanUtils类自动封装表单数据到javabean
- 基于泛型反射的通用数据层封装
- 基于泛型反射的通用数据层封装
- java使用fastjson进行数据的封装
- Struts2对其数据转换失败的处理以及表单的使用
- 使用BeanUtils来进行对象的组装
- 使用BeanUtils来进行对象的组装
- 使用BeanUtils进行一些简单的操作
- 反射的应用 将form表单的数据自动封装为对象
- 使用commons-beanutils封装请求中的数据与数据类型的转换,web中使用md5和BASE64Encoder加密
- Leetcode Permutations II
- SQL Server管理及开发工具(Navicat for SQL Server)v11.2.13
- deploy 自己编写的 QT 程序 (window下打包程序)
- Navicat设定mysql定时任务
- JZOJ 4219 【五校联考2day1】池塘
- 基于表单数据的封装,泛型,反射以及使用BeanUtils进行处理
- 谈谈对攻读计算机研究生的看法
- Doc12(innerText与innerHTML及兼容性写法)
- RFS( 二 )----一些常用的快捷键
- Leetcode Best Time to Buy and Sell Stock with Cooldown
- php爬虫:知乎用户数据爬取和分析
- 一万小时定律
- oracle 行转列-WMSYS. wm_contact的运用
- Docker学习笔记(一)