博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA内省机制
阅读量:4963 次
发布时间:2019-06-12

本文共 3339 字,大约阅读时间需要 11 分钟。

 

内省是反射的一种特例

由于在框架底层中要频繁地操作javabean,而利用反射操作比较麻烦。所以为了方便操作javabean,sun公司开发出一套API提高效率

 

Java内省机制是针对JavaBean进行操作的

 

public class Person {        private String name;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    private int age; }

 

 

 

 

public class TestIntrospector {     @Test    public void tes1() throws Exception {        Class
cl = Class.forName("com.irish.aop.cc.Person"); //在bean上进行内省 BeanInfo beaninfo = Introspector.getBeanInfo(cl, Object.class); PropertyDescriptor[] pro = beaninfo.getPropertyDescriptors(); Person p = new Person(); System.out.print("Person的属性有:"); for (PropertyDescriptor pr : pro) { System.out.print(pr.getName() + " "); } System.out.println(""); for (PropertyDescriptor pr : pro) { Method writeme = pr.getWriteMethod(); if (pr.getName().equals("name")) { writeme.invoke(p, "xiong"); } if (pr.getName().equals("age")) { writeme.invoke(p, 23); } Method method = pr.getReadMethod(); System.out.print(method.invoke(p) + " "); } } @Test public void test2() throws Exception { PropertyDescriptor pro = new PropertyDescriptor("name", Person.class); Person preson=new Person(); Method method=pro.getWriteMethod(); method.invoke(preson, "xiong"); System.out.println(pro.getReadMethod().invoke(preson)); }}

 

 

 

怎么让后台的Model对象统一的接收表单提交过来的参数

Servlet

public void doPost(HttpServletRequest request, HttpServletResponse response)            throws ServletException, IOException {        request.setCharacterEncoding("UTF-8");        user u=new user();        populate(request.getParameterMap(),u);        System.out.println(u);            }        private void populate(Map
map,user u){ try { Map
params=map; //1 获得 java Bean的描述信息 BeanInfo info =Introspector.getBeanInfo(user.class); //2 获得 User中的属性信息 PropertyDescriptor [] pds =info.getPropertyDescriptors(); //3 遍历属性信息 for (PropertyDescriptor pd : pds) { String[] param=params.get(pd.getName()); if (param!=null && param.length>0) { pd.getWriteMethod().invoke(u, param[0]); } } } catch (Exception e) { e.printStackTrace(); } }

 

JavaBean

public class user {    private String name;    private String password;    public user(){                super();    }        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;    }        @Override    public String toString() {        return "user [name=" + name + ", password=" + password + " ]";    }}

Jsp

        
用户名:
密码:

 

转载于:https://www.cnblogs.com/moris5013/p/10985765.html

你可能感兴趣的文章
九涯的第一次
查看>>
PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别
查看>>
Android中全屏或者取消标题栏
查看>>
处理器管理与进程调度
查看>>
页面懒加载
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java zip 中文文件名乱码_java使用zip压缩中文文件名乱码的解决办法
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
kafka的java客户端_KAFKA Producer java客户端示例
查看>>
java -f_java学习笔记(一)
查看>>
java 什么题目好做_用java做这些题目
查看>>
java中的合同打印_比较方法违反了Java 7中的一般合同
查看>>
php 位运算与权限,怎么在PHP中使用位运算对网站的权限进行管理
查看>>
php include效率,php include类文件超时
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
wcdma下行如何解扩解扰 matlab,WCDMA技术基础.ppt
查看>>
MySQL date_format() 函数
查看>>
mysql 时间处理
查看>>
mysql adddate()函数
查看>>
mysql addtime() 函数
查看>>