动态反射
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.