A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 水煮牛蛙 中级黑马   /  2018-5-27 16:14  /  622 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 小石姐姐 于 2018-5-30 15:38 编辑

内省技术

* 内省的代码:
        public void demo1() throws Exception{
                // 获得了Bean的信息
                BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
                // 获得Bean的属性描述了
                PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
                for(PropertyDescriptor pd:pds){
                        System.out.println(pd.getName());
                        /*pd.getReadMethod(); // 获得get方法
                        pd.getWriteMethod();// 获得set方法.
*/                }
        }
?使用内省封装一个MyBeanUtils:
public class MyBeanUtils {


        public static void populate(Object obj,Map<String,String[]> map) throws Exception{
                // 获得类的所有的属性的名称:
                BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
                // 获得类中所有的属性:
                PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
                //遍历所有属性
                for (PropertyDescriptor pd : pds) {
                        //判断map中有与类的属性名相同的key
                        if(map.containsKey(pd.getName())){
                                //如果有就获得这个属性的set方法,将获得的方法赋给Method对象
                                Method method = pd.getWriteMethod();
                                // 调用invoke方法执行obj的set方法对该属性进行赋值:
                                method.invoke(obj, map.get(pd.getName())[0]);
                        }                                                                //以属性名做为key获取map中的值
                }
        }
}


====================
#开发中的路径的编写
====================
开发中的路径的编写:
1.1.相对路径:都是需要找位置相对关系.不能以 / 开始的.
        * ./ 当前路径  ../上一级目录
        * 使用相对路径访问:
                * http://localhost:8080/day09/demo4-url/demo1.html
                * http://localhost:8080/day09/ServletDemo6


1.2.绝对路径:不需要找位置相对关系. 以 / 开始的.
        * 绝对路径中分为客户端路径和服务器端路径:
                * 客户端路径一定要加工程名.                /day09/ServletDemo6
                * 服务器端路径不需要加工程名.        /ServletDemo6
2.服务器的路径不用写工程名

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马