《JavaBean》----Java中的内省机制二
来源:互联网 发布:c语言打印倒九九乘法表 编辑:程序博客网 时间:2024/06/07 08:41
上篇文章我们已经讨论过Java中的内省机制了,我们虽然将内省机制封装好了一个方法供给我们调用,但是它还是有一定缺陷的,缺陷1:比如说,上面那个方法只能转换8种基础数据类型,如果表单上有一个日期类型的数据,比如说表单有一个让我们填写生日的input,或者是说我们的JavaBean有有一个成员变量是Date类型的,那么我们封装的方法就不行了,这时候我们封装的方法就报错。缺陷2:其实我们还可以抛弃我们封装好的方法,替而代之是一个jar包,这个jar包中就已经封装好了内省机制。这样不更省代码吗?
1、解决缺陷1
我们应该封装好一个类,这个类负责转换这个日期类型的数据,然后我们再用内省机制给后台的Model赋值,代码如下。
public class MyConverter implements Converter {public Object convert(Class arg0, Object arg1) {String birthdayStr = arg1.toString();//1990-01-01 ==> dateSimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");try {return format.parse(birthdayStr);} catch (ParseException e) {e.printStackTrace();return null;}}}
2、解决缺陷2
引用jar包commons-beanutils-1.8.3-bin.zip ,我们利用BeanUtils工具实现populate方法,代码如下
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {request.setCharacterEncoding("UTF-8");user u=new user();try {ConvertUtils.register(new MyConverter(), Date.class);BeanUtils.populate(u, request.getParameterMap()); } catch (IllegalAccessException e) {e.printStackTrace();// TODO: handle exception}catch(InvocationTargetException e){e.printStackTrace();}ConvertUtils.register(new MyConverter(), Date.class);populate(request.getParameterMap(),u);System.out.println(u);}
我们用BeanUtils工具类代替了之前封装好的方法,用MyConvert类来转换表单中的参数,当然,这个类不仅仅可以转化Date,我们还可以继续将其封装,转化其它类型的参数,用这两种方法,解决上上一篇博客中populate方法的两个缺陷,还节省了代码量,提高了工作效率。
1 0
- 《JavaBean》----Java中的内省机制二
- 《JavaBean》-----Java的内省机制
- java 中的内省机制
- [学习笔记]Java内省机制(JavaBean)
- java基础------>内省机制(javabean同行)
- javaBean的内省机制
- 浅谈javabean,.内省机制
- javaBean内省机制
- Java 内省、JavaBean、BeanUtils
- Java 内省、JavaBean、BeanUtils
- Java-javabean内省
- java高新技术:内省javaBean
- java内省 操作javaBean
- JAVA (JavaBean 内省,枚举)
- Java高新技术 JavaBean内省
- java反射机制(3)---关于Javabean的内省
- Java的加载资源文件+JavaBean+内省机制
- 通过内省机制设置JavaBean
- 2016多校训练Contest6: 1002 A Simple Chess hdu5794
- linux Jetty安装后启动报错-UnsupportedClassVersionError---Unsupported major.minor version 52.0
- JavaWeb中的文件上传和下载
- ajax 跨域的讲解
- js中"Maximum call stack size exceeded"解决方法
- 《JavaBean》----Java中的内省机制二
- Library Module详解
- MDI/MDIX接口
- (9)算数运算符
- hdu3032 Nim or not Nim?(SG函数)
- Java源码-目录遍历
- HDU 1874 畅通问题续 最短路径 迪杰斯特拉算法
- mtd编译
- 函数声明、函数表达式、匿名函数、立即执行函数