本帖最后由 小石姐姐 于 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.服务器的路径不用写工程名
|
|