动态反射

1.页面

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6
 7     <title>利用反射的io-1</title>
 8
 9     <meta http-equiv="pragma" content="no-cache">
10     <meta http-equiv="cache-control" content="no-cache">
11     <meta http-equiv="expires" content="0">
12     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
13     <meta http-equiv="description" content="This is my page">
14     <!--
15     <link rel="stylesheet" type="text/css" href="styles.css">
16     -->
17     <script type="text/javascript" src ="${pageContext.request.contextPath }/js/jquery-1.11.1.js"></script>
18     <script type="text/javascript">
19         var xmlHttpRequest = null;
20         function getXmlHttpRequest() {
21             // 如果非IE
22             if(window.XMLHttpRequest) {
23                 xmlHttpRequest = new XMLHttpRequest();
24             } else if(window.ActiveXObject){
25                 xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
26             }
27         }
28
29         function ajaxRequest(url, cb, clz, fileName) {
30             getXmlHttpRequest();
31             if(xmlHttpRequest) {
32                 // 初始化设置的动作
33                 xmlHttpRequest.open("post", url, true);
34                 xmlHttpRequest.onreadystatechange = cb;
35                 xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
36                 // 正式发送请求
37                 xmlHttpRequest.send("clz=" + clz + "&fileName=" + fileName);
38             }
39         }
40
41         function cb1 () {
42             if(xmlHttpRequest.readyState == 4 &&
43                 xmlHttpRequest.status == 200) {
44                 var result = xmlHttpRequest.responseText;
45                 alert(result);
46             }
47         }
48
49         function cb2 () {
50             if(xmlHttpRequest.readyState == 4 &&
51                 xmlHttpRequest.status == 200) {
52                 var result = xmlHttpRequest.responseText;
53                 alert(result);
54                 result = eval("("+result+")");
55                 for(var v in result) {
56                     alert(result[v]);
57                 }
58             }
59         }
60         $(function(){
61             $("#InputEmpbtn").click(function(){
62                 ajaxRequest("../Jxl02Servlet",cb1,"entity.Emp","/user.properties");
63             });
64             $("#ExputEmpbtn").click(function(){
65                 ajaxRequest("../OJxl01Servlet",cb2,"entity.Emp");
66             });
67         })
68     </script>
69   </head>
70
71   <body>
72       <input id="InputEmpbtn" type="button" value="员工导入" />
73     <input id="ExputEmpbtn" type="button" value="员工导出" />
74   </body>
75 </html>

反射

2.

 1 public void doPost(HttpServletRequest request, HttpServletResponse response)
 2             throws ServletException, IOException {
 3
 4         try{
 5             response.setContentType("text/html");
 6             PrintWriter out = response.getWriter();
 7
 8             String clzStr = request.getParameter("clz");
 9             String fileName = request.getParameter("fileName");
10             Class<?> c = Class.forName(clzStr);
11             Object obj = c.newInstance();
12             Field[] fields = obj.getClass().getDeclaredFields();
13             ReaderProperties reader = new ReaderProperties();
14             for (Field field : fields) {
15                 field.setAccessible(true);
16                 String name = field.getName();
17                 Properties properties =reader.loadProperties(fileName);
18                 Iterator<Entry<Object, Object>> it = properties.entrySet().iterator();
19                 while (it.hasNext()) {
20                     Entry<Object, Object> entry = it.next();
21                     Object key = entry.getKey();
22                     Object value = entry.getValue();
23                     if(name.equals(key)) {
24                         if(field.getType().toString().equals("double")) {
25                             field.set(obj, Double.valueOf(value.toString()));
26                         } else {
27                             field.set(obj, value.toString());
28                         }
29                     }
30                 }
31             }
32             reflectObj(obj);
33         } catch(Exception e){
34             e.printStackTrace();
35         }
36
37     }
38
39     private void reflectObj(Object obj) throws Exception {
40         File file = new File("d:/obj.xls");
41         WritableWorkbook book = Workbook.createWorkbook(file);
42         WritableSheet sheet = book.createSheet("第一个", 0);
43         Field[] fields = obj.getClass().getDeclaredFields();
44         for (int i = 0; i < fields.length; i++) {
45             Field field = fields[i];
46             field.setAccessible(true);
47             String name = field.getName();
48             String v = field.get(obj) == null ? "" : field.get(obj).toString();
49             Label label1 = new Label(i,0,name);
50             Label label2 = new Label(i,1,v);
51             sheet.addCell(label1);
52             sheet.addCell(label2);
53         }
54         book.write();
55         book.close();
56     }

加载配置文件

3.

 1 package test;
 2
 3 import java.io.IOException;
 4 import java.io.InputStream;
 5 import java.util.Enumeration;
 6 import java.util.Iterator;
 7 import java.util.Properties;
 8 import java.util.Map.Entry;
 9
10 public class ReaderProperties {
11
12     public static void main(String[] args) {
13         Properties properties = new ReaderProperties().loadProperties("/jdbc.properties");
14         Enumeration<?> enu = properties.propertyNames();
15         while (enu.hasMoreElements()) {
16             Object key = enu.nextElement();
17             System.out.println(key);
18         }
19         Enumeration<Object> enu2 = properties.elements();
20         while (enu2.hasMoreElements()) {
21             Object value = enu2.nextElement();
22             System.out.println(value);
23         }
24
25         Iterator<Entry<Object, Object>> it = properties.entrySet().iterator();
26         while (it.hasNext()) {
27             Entry<Object, Object> entry = it.next();
28             Object key = entry.getKey();
29             Object value = entry.getValue();
30             System.out.println("key   :" + key);
31             System.out.println("value :" + value);
32             System.out.println("---------------");
33         }
34     }
35
36
37     public Properties loadProperties(String resources) {
38         // 使用InputStream得到一个资源文件
39         InputStream inputstream = this.getClass()
40         .getResourceAsStream(resources);
41         // new 一个Properties
42         Properties properties = new Properties();
43         try {
44             // 加载配置文件
45             properties.load(inputstream);
46             return properties;
47         } catch (IOException e) {
48             throw new RuntimeException(e);
49         } finally {
50             try {
51                 inputstream.close();
52             } catch (IOException e) {
53                 throw new RuntimeException(e);
54             }
55         }
56
57     }
58 }

配置文件

4.

1 deptNo=10
2 deptName=\u8D22\u52A1\u90E8

5.

1 empNo=9527
2 empName=\u5F20\u4E09
3 salary=10000

6.

时间: 2024-10-08 10:04:55

动态反射的相关文章

动态反射——Load,LoadFrom和LoadFile

[问] 假设有一个类库文件LibraryA,其中有一个ClassA,该类的AssemblyName为“LibraryA”(编译后的文件是LibraryA.dll).另外有一个LibraryB.dll类库文件,其中AssemblyName和其命名空间一样,并且其引用LibraryA.dll.它们代码如下: [C#] [LibraryA.dll] namespace A{ public class ClassA { public ClassA() { Console.WriteLine("成功执行C

Java中的动态反射机制和动态代理

一.什么是反射机制? 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制.简单来说,就是Java对每一个类和类中的所有成员都进行了封装,这样每个类都有一个与之对应的Class对象,通过这个对象可以直接访问类中的所有成员. 二.Class类 1.在一个Class类中,将被封装类的方法(构造器之外)封装为Method类,将字段封装为Filed类,将构造器封装为Co

Unity3D Android动态反射加载程序集

这种办法在iOS下是不让用的,只能在Android下用.用起来也很方便了. 1.先创建一个c#工程,引用到的UnityEngine.dll在Unity的安装目录里找吧 2.将编译的dll放入Unity工程,并打成assetBundle.(要把缀名改成.bytes,这个类型Unity才识别,才能打成assetbundle) 打bundle代码 #if UNITY_EDITOR [MenuItem("GameObject/BuildAsset")] static void BuildAss

Unity Shaders and Effects Cookbook (4-6)震撼的实时反射 动态立方图系统

昨天逛街的时候看到太平鸟里面摆了个金属的米老鼠,于是职业病犯了,一直在想金属的颜色是什么,这个反射该怎么写,想不出来-- 今天正好看到动态反射立方图系统这一节,看完觉得很别扭,因为书上介绍的是事先踩点生成Cubemap的方式而不是实时的.于是到官方文档找到实时反射的代码,做了一个比较花俏的场景,运行之后吃了一大惊,实时反射是如此的震撼.. 第四章第一节第二节介绍了创建Cubemap,然后学习了如何使用. Unity Shaders and Effects Cookbook (4-1)(4-2)静

从java 反射看延迟加载(代理模式)(二)

代理模式 代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问.现实世界的代理人被授权执行当事人的一些事宜,无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信.而事实上代理人是要有当事人的授权,并且在核心问题上还需要请示当事人. 在软件设计中,使用代理模式的意图也很多,比如因为安全原因需要屏蔽客户端直接访问真实对象,或者在远程调用中需要使用代理类处理远程方法调用的技术细节 (如 RMI),也可能为了提升系统性能,对真实对象进行封装,从而达到延迟加载的目的. 代理模式

反射的简单应用

首先有一个类 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace ConsoleApplication1 8 { 9 public class demo 10 { 11 public string name = "程序员"; 12 } 13 } 测试类 usin

JDK动态代理实现简单AOP--转

JDK 动态代理是 java 反射的一个重要特性.它在某种方面为 java 提供了动态性的特性,给应用带来了无限的空间.大名鼎鼎的 Hessian . Spring AOP 基于动态代理实现.本文将简单的介绍 JDK 动态代理使用. 关于代理模式 代理模式是非常常用的一种设计模式,在我们的应用中经常被使用.一般场景是,我们有一个现成的类,它的功能比较的完善了,但是还是存在某些欠缺,这个时候我们需要去扩展一些新的功能,但又不想去重造轮子,这个时候可以使用代理类来替代原来的目标类,通过组合的模式,增

(转)【D3D11游戏编程】学习笔记二十三:Cube Mapping进阶之动态环境图

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 在前面两篇介绍Cube Mapping的文章中,我们所使用到的Cube Map都是事先制作好的,这样的一个好处就是运行时效率很高,适合于大多数情形.但如果对于即时动态变化的场景来说,依靠静态图来实现反射效果就不再适用了.因为在不同时刻,一个物体周围的场景是不断变化的,想要把这些变化在物表的反射中体现出来,就需要一张动态的环境图. 1.C

Java反射的应用

补充 针对上篇文章<JAVA反射原理>的图,再稍作补充: 这个图是上篇博客中图的一部分,实际上,这部分才是反射的核心,即:对象.class的相互关系: 对象实例化后,在头部保留其class引用,即对象→class 根据加载的class,实例化对象,即class→对象 如上篇文章所说,我们关注反射,是因为反射可以达到以下作用: 根据一个字符串形式的类名加载类 由加载的类直接实例化对象 已知一个对象,获取其类信息(接口.函数--) 这些作用听起来没什么大不了,但是合理使用,威力很大:Struts.