首页 > 代码库 > 中等的I/O读写技术,与反射、配置文件结合
中等的I/O读写技术,与反射、配置文件结合
页面
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 // 1.创建一个xmlHttpRequest对象20 var xmlHttpRequest = null;21 // 2.判断浏览器类型22 function getXmlHttpRequest() {23 // 如果非IE24 if(window.XMLHttpRequest) {25 xmlHttpRequest = new XMLHttpRequest();26 } else if(window.ActiveXObject){27 xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");28 } 29 }30 //ajax请求31 function ajaxRequest(url, cb, clz, fileName) {32 // 3.获得浏览器类型33 getXmlHttpRequest();34 if(xmlHttpRequest) {35 //4. 设置提交方式36 xmlHttpRequest.open("post", url, true);37 //5. 设置回调函数38 xmlHttpRequest.onreadystatechange = cb;39 // 用POST方式请求,必须加上头文件40 xmlHttpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");41 //6. 正式发送请求(发送多个值("clz=" + clz + "&fileName=" + fileName)用‘+’号连接,第二个键前加‘&’符)42 xmlHttpRequest.send("clz=" + clz + "&fileName=" + fileName);43 }44 }45 //回调函数46 function cb1 () {47 if(xmlHttpRequest.readyState == 4 && 48 xmlHttpRequest.status == 200) {49 // 7.获取响应返回的结果50 var result = xmlHttpRequest.responseText;51 alert(result);52 }53 }54 55 function cb2 () {56 if(xmlHttpRequest.readyState == 4 && 57 xmlHttpRequest.status == 200) {58 // 7.获取响应返回的结果59 var result = xmlHttpRequest.responseText;60 alert(result);61 // 8.通过eval("")函数将返回结果进行装载(注意eval("")的用法,里面必须用()括起来result = eval("("+result+")");)62 result = eval("("+result+")");63 for(var v in result) { //Js中的foreach,v为索引64 alert(result[v]);65 }66 }67 }68 $(function(){69 $("#InputEmpbtn").click(function(){70 // ( url,回调函数,反射需要的包类驱动,要加载的配置文件)71 ajaxRequest("../Jxl02Servlet",cb1,"entity.Emp","/user.properties");72 });73 $("#ExputEmpbtn").click(function(){74 ajaxRequest("../OJxl01Servlet",cb2,"entity.Emp");75 });76 })77 </script>78 </head>79 80 <body>81 <input id="InputEmpbtn" type="button" value="http://www.mamicode.com/员工导入" />82 <input id="ExputEmpbtn" type="button" value="http://www.mamicode.com/员工导出" />83 </body>84 </html>
servlet
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 // 获得配置文件信息10 String fileName = request.getParameter("fileName");11 /*********************************************反射开始***********************************************/12 //1. 根据’包类驱动‘创建一个类13 Class<?> c = Class.forName(clzStr);14 //2. 根据1类创建一个对象15 Object obj = c.newInstance();16 //3. 创建一个集合得到2对象的所有属性17 Field[] fields = obj.getClass().getDeclaredFields();18 //4. 创建配置文件信息的对象19 ReaderProperties reader = new ReaderProperties();20 for (Field field : fields) {21 field.setAccessible(true);22 String name = field.getName();23 // 配置文件-----24 Properties properties =reader.loadProperties(fileName);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 if(name.equals(key)) {31 // 判断字段类型并赋值32 if(field.getType().toString().equals("double")) {33 field.set(obj, Double.valueOf(value.toString()));34 } else {35 field.set(obj, value.toString());36 }37 }38 } 39 }40 reflectObj(obj);41 } catch(Exception e){42 e.printStackTrace();43 }44 45 }46 47 private void reflectObj(Object obj) throws Exception {48 File file = new File("d:/obj.xls");49 WritableWorkbook book = Workbook.createWorkbook(file);50 WritableSheet sheet = book.createSheet("第一个", 0);51 Field[] fields = obj.getClass().getDeclaredFields();52 for (int i = 0; i < fields.length; i++) {53 Field field = fields[i];54 field.setAccessible(true);55 String name = field.getName();56 String v = field.get(obj) == null ? "" : field.get(obj).toString();57 Label label1 = new Label(i,0,name);58 Label label2 = new Label(i,1,v);59 sheet.addCell(label1);60 sheet.addCell(label2);61 }62 book.write();63 book.close();64 }
配置文件
1.user.properties (注意:后缀名一定要写正确 .properties)
1 empNo=95272 empName=\u5F20\u4E093 salary=10000
2.dept.properties
1 deptNo=102 deptName=\u8D22\u52A1\u90E8
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 }
中等的I/O读写技术,与反射、配置文件结合
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。