1、 如何获取结构为kv的配置文件信息
PRoperties p = ne Properties();FileInputStream is = null;try{ is = new FileInputStream(new File("d://conf.conf")); p.load(is);}catch(){}//加载int test = p.getProperty("test");//配置文件格式test=test2、 如何获取resultset中的列名称
ResultSet rs = **;ResultSetMetaData rsmd = rs.getMetaData();int columnCount = rsmd.getColumnCount();while (rs.next()) { Map<String, Object> rowData= new HashMap<>(); for (int i = 1; i <= columnCount; i++ ) { rowData.put(rsmd.getColumnName(i), rs.getObject(i)); }}3、 postgres驱动加载
Connection conn = null;try{ DriverManager.registerDriver(new org.postgresql.Driver()); conn = DriverManager.getConnection("jdbc:postgresql://" + url , userName, passwd);} catch(){}先上代码:(基于struts2和jquery) 1. commons-FileUpload 1.2 包 下载地址:http://jakarta.apache.org/commons/fileupload/ 2. commons-IO 1.3.1 包 下载地址:http://jakarta.apache.org/commons/io/ 3. Commons-BeanUtils 1.7 包 下载地址:http://jakarta.apache.org/commons/beanutils/ jsp页面:
<form id="form1" action="" method="post" enctype="multipart/form-data" target="targetIframe"> <input type="file" name="upfile" id="upfile" onchange="handleFile(this);"/> //此处需要注册onchange事件 <input type="filename" name="filename" id="filename" value=""/></form><frame id="targetIframe" ></frame>上面文件中有几个需要注意的地方就是 1. action=”UploadServlet” 必须和后面的web.xml配置文件中对servlet映射必须保持一致. 2. method=”POST” 这里必须为”POST”方式提交不能是”GET”. 3. enctype=”multipart/form-data” 这里是要提交的内容格式,表示你要提交的是数据流,而不是普通的表单文本. 4. file1,file2,file3表示你要3个文件一起上传,你也可以一次只上传一个文件.
js: 通过调用click事件,打开选择文件窗口,选择文件后,触发onchange对应的方法
function handleFile(fileInput) { var file = fileInput.files[0]; var regXls = new RegExp(".xls"); if (!regXls.test(file.name)) { //处理的事件 return; } $("#form1 input[name=fileName]").val(file.name); //提交表单,注意此处不能用jquery的Ajax,否则后台无法解析 $("#form1").attr('action', _contentPath + "/test/test!index.action"); $("#form1").submit();}//回调方法function importReturnValue(message) { alert(message);}java://下面可以有三种方法获
//1. 利用struts2提供的方法MultiPartRequestWrapperMultiPartRequestWrapper wrapper = (MultiPartRequestWrapper)request;//MultiPartRequestWrapper是struts2中的类,request是HttpServletRequestFile uploadFile = wrapper.getFiles("upfile")[0];//文件名的获取需要通过struts2封装的方法获取前台传入的fileName字符串//2. 利用ServletFileUpload类 if(ServletFileUpload.isMultipartContent(request)){ DiskFileItemFactory dff = new DiskFileItemFactory();//创建该对象 dff.setRepository(tmpDir);//指定上传文件的临时目录 dff.setSizeThreshold(1024000);//指定在内存中缓存数据大小,单位为byte ServletFileUpload sfu = new ServletFileUpload(dff);//创建该对象 sfu.setFileSizeMax(5000000);//指定单个上传文件的最大尺寸 sfu.setSizeMax(10000000);//指定一次上传多个文件的总尺寸 FileItemIterator fii = sfu.getItemIterator(request);//解析request 请求,并返回FileItemIterator集合 while(fii.hasNext()){ FileItemStream fis = fii.next();//从集合中获得一个文件流 //List<FileItem> items = upload.parseRequest(request); //for (FileItem item : items) { } if(!fis.isFormField() && fis.getName().length()>0){//过滤掉表单中非文件域 String fileName = fis.getName().substring(fis.getName().lastIndexOf(""""));//获得上传文件的文件名 BufferedInputStream in = new BufferedInputStream(fis.openStream());//获得文件输入流 BufferedOutputStream out = new BufferedOutputStream(newFileOutputStream(new File(saveDir+fileName)));//获得文件输出流 Streams.copy(in, out, true);//开始把文件写到你指定的上传文件夹 } } response.getWriter().println("File upload successfully!!!");//终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗 } }catch(Exception e){ e.printStackTrace(); }//3.纯servletrequest.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=utf-8");//更改响应字符流使用的编码,还能告知浏览器用什么编码进行显示 //从request中获取文本输入流信息 InputStream fileSourceStream = request.getInputStream(); String tempFileName = "F:/tempFile"; //设置临时文件,保存待上传的文本输入流 File tempFile = new File(tempFileName); //outputStram文件输出流指向这个tempFile FileOutputStream outputStream = new FileOutputStream(tempFile); //读取文件流 byte temp[] = new byte[1024]; int n; while(( n = fileSourceStream.read(temp)) != -1){ outputStream.write(temp, 0, n); } outputStream.close(); fileSourceStream.close(); //获取上传文件的名称 RandomaccessFile randomFile = new RandomAccessFile(tempFile,"r"); randomFile.readLine(); String str = randomFile.readLine(); int start = str.lastIndexOf("=") + 2; int end = str.lastIndexOf("/""); String filename = str.substring(start, end); //定位文件指针到文件头 randomFile.seek(0); long startIndex = 0; int i = 1; //获取文件内容的开始位置 while(( n = randomFile.readByte()) != -1 && i <=4){ if(n == '/n'){ startIndex = randomFile.getFilePointer(); i ++; } } startIndex = startIndex -1; //这里一定要减1,因为前面多读了一个,这里很容易忽略 //获取文件内容结束位置 randomFile.seek(randomFile.length()); long endIndex = randomFile.getFilePointer(); int j = 1; while(endIndex >=0 && j<=2){ endIndex--; randomFile.seek(endIndex); if(randomFile.readByte() == '/n'){ j++; } } //设置保存上传文件的路径 String realPath = "F:/file"; File fileupload = new File(realPath); if(!fileupload.exists()){ fileupload.mkdir(); } File saveFile = new File(realPath,filename); RandomAccessFile randomAccessFile = new RandomAccessFile(saveFile,"rw"); //根据起止位置从临时文件中读取文件内容 randomFile.seek(startIndex); while(startIndex < endIndex){ randomAccessFile.write(randomFile.readByte()); startIndex = randomFile.getFilePointer(); } //关闭输入输出流并 删除临时文件 randomAccessFile.close(); randomFile.close(); tempFile.delete(); request.setAttribute("result", "文件上传成功"); RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); //回调到前台页面//利用HttpServletResponsePrintWriter out;try { out = reponse.getWriter(); //调用页面回调方法 out.println("<html>"); out.println("<head>"); out.println("</head>"); out.println("<body>"); out.println("<script>"); out.println("window.parent.importReturnValue(" + message + ");"); out.println("</script>"); out.println("</body>"); out.println("</html>"); out.flush();}catch(){}**
** 两种方式: java或者js 1、 java中的HttpServletRespoFile exportFile = new File(“d:/temp/aa.cc”);
response.setContentType("text/html;charset=utf-8");response.setCharacterEncoding("UTF-8");response.setContentType("application/x-msdownload;");response.setHeader("Content-dispostion", "attachment;filename="+ new String(exportFile.getName()).getBytes("GBK"), "ISO8859-1");response.setHeader("Content-length", String.valueof(file.length()));BufferedInputStream bis = new BufferedInputStream(new FileInputStream(exportFile));BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream());byte[] temp = new Byte[2048];int length;while ((length = bis.read(temp)) != -1) {bos.write(temp, 0, length);}//2、js String path = getParameter(request, "path", true, true, false, ""); String fileName = getParameter(request, "fileName", true, true, false, ""); request.setAttribute("path", path); request.setAttribute("fileName", fileName); if(!"".equals(path) && !"".equals(fileName)){//去函数说明文档页面 getServletContext().getRequestDispatcher("/mdm/jsp/usermanual/DownFile.jsp").forward(request,response); } <% //去除缓存 /**response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); String contextPath = request.getContextPath();**/ //String path = request.getParameter("path"); //String fileName = request.getParameter("fileName"); String path = (String)request.getAttribute("path");//即将下载的文件的相对路径 String fileName = (String)request.getAttribute("fileName");//下载文件时显示的文件保存名称 response.setContentType("application/x-download");//设置为下载application/x-download String filedownload = path;//即将下载的文件的相对路径 String filedisplay = fileName;//下载文件时显示的文件保存名称 String filenamedisplay = URLEncoder.encode(filedisplay,"utf-8"); response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay); try { RequestDispatcher dis = application.getRequestDispatcher(filedownload); if(dis!= null) { dis.forward(request,response); } response.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finally { } %> //js中采用输入流的方式 <%@page language="java" contentType="application/x-msdownload" pageEncoding="gb2312"%> <% //关于文件下载时采用文件流输出的方式处理: //加上response.reset(),并且所有的%>后面不要换行,包括最后一个; response.reset();//可以加也可以不加 response.setContentType("application/x-download"); //application.getRealPath("/main/mvplayer/CapSetup.msi");获取的物理路径 String filedownload = "想办法找到要提供下载的文件的物理路径+文件名"; String filedisplay = "给用户提供的下载文件名"; String filedisplay = URLEncoder.encode(filedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); java.io.OutputStream outp = null; java.io.FileInputStream in = null; try { outp = response.getOutputStream(); in = new FileInputStream(filenamedownload); byte[] b = new byte[1024]; int i = 0; while((i = in.read(b)) > 0) { outp.write(b, 0, i); } // outp.flush(); //要加以下两句话,否则会报错 //java.lang.IllegalStateException: getOutputStream() has already been called for //this response out.clear(); out = pageContext.pushBody(); } catch(Exception e) { System.out.println("Error!"); e.printStackTrace(); } finally { if(in != null) { in.close(); in = null; } //这里不能关闭 //if(outp != null) //{ //outp.close(); //outp = null; //} } %>新闻热点
疑难解答