首页 > 代码库 > 动态反射

动态反射

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="http://www.mamicode.com/styles.css">16     -->17     <script type="text/javascript" src ="http://www.mamicode.com/${pageContext.request.contextPath }/js/jquery-1.11.1.js"></script>18     <script type="text/javascript">19         var xmlHttpRequest = null;20         function getXmlHttpRequest() {21             // 如果非IE22             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="http://www.mamicode.com/员工导入" />73     <input id="ExputEmpbtn" type="button" value="http://www.mamicode.com/员工导出" />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 =http://www.mamicode.com/ 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 =http://www.mamicode.com/ 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 =http://www.mamicode.com/ 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 一个Properties42         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=102 deptName=\u8D22\u52A1\u90E8

 

5.

1 empNo=95272 empName=\u5F20\u4E093 salary=10000

 

6.

 

动态反射