- 浏览: 31365 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chengji518:
这是个值得关注的问题!受益匪浅!
Javascript的IE和FF兼容性汇编 -
wangbinjr:
图片没有显示!!
BIRT and POJOs as datasources example -
taowen:
比下岗更可怕的是精神无所寄托啊。父亲还会发各短信给我,催我和家 ...
白色的新年 -
dengyin2000:
robbin 写道主要是现在台湾地震导致海底光缆断裂,我们的服 ...
大家遇到过blog导入的问题么?msn space导不过来啊 -
redfeather:
原来是这样!谢谢解答
大家遇到过blog导入的问题么?msn space导不过来啊
吸收了很多网上的方案,发现掺合起来才好使。。。。
1. 上传 form传参 a要使用过滤器utf-8 b页面设置成utf-8 c 使用struts1.1以上版本
2. 下载 url传参,过滤器居然不好用。把tomcat server.xml URIEncode设成 utf-8传进来的参数终于不是乱码了。
但是下载时的名字还是乱码。又在网上查了好多方法 URLEncode 啥的都不好用
开始设成 String name = new String(uForm.getFileName().getBytes("utf-8"),
"ISO8859_1");
firefox下载的名字终于对了,ie还是乱码....
最后设成 String name = new String(uForm.getFileName().getBytes(""),
"ISO8859_1");
最后是这个写的终于通过了 下载时都是正确的中文名字了。
贴代码吧~ 没有用到spring action 继承struts的就好了 没必要继承 ActionSupport
struts-config.xml
<!-- upload --> <action attribute="uploadForm" name="uploadForm" path="/upload/upload" scope="request" type="com.travelsky.fgos.web.presentation.actions.upload.UploadAction"> <forward name="success" path="/upload/upload.jsp" /> <forward name="failure" path="/upload/fileList.jsp" /> </action> <action attribute="uploadForm" name="uploadForm" path="/upload/list" scope="request" type="com.travelsky.fgos.web.presentation.actions.upload.ListAction"> <forward name="success" path="/upload/fileList.jsp" /> <forward name="failure" path="/upload/fileList.jsp" /> </action> <action attribute="uploadForm" name="uploadForm" path="/upload/download" scope="request" type="com.travelsky.fgos.web.presentation.actions.upload.DownloadAction"> <forward name="success" path="/upload/fileList.jsp" /> <forward name="failure" path="/upload/fileList.jsp" /> </action> <action attribute="uploadForm" name="uploadForm" path="/upload/delete" scope="request" type="com.travelsky.fgos.web.presentation.actions.upload.DeleteAction"> <forward name="success" path="/upload/fileList.jsp" /> <forward name="failure" path="/upload/fileList.jsp" /> </action> <!-- upload -->
upload.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html:html> <head> <meta http-equiv="Content-Type" content="text/html;utf-8" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="cache-control" content="no-store" /> <meta http-equiv="expires" content="0" /> <link rel="stylesheet" type="text/css" href="../css/upload.css" /> <script type="text/javascript" src="../js/upload.js"></script> <script type="text/javascript" src="../js/net.js"></script> <title>文件管理</title> </head> <body onload="listFile()"> <div id="title"><h3>文件管理</h3></div> <div id="fileUploadDiv"> <html:form action="upload/upload" method="post" enctype="multipart/form-data"> <br /> 选择文件:<html:file property="file" /><html:submit value="上传文件"/> 请输入文件名:<html:text property="fileName"></html:text>(不输入默认使用上传文件名) <iframe name="hidden_frame" id="hidden_frame" style="display:none"></iframe> </html:form> </div> <br/> <div id="fileListDiv"> </div> </body> </html:html>
filelist.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <table> <tr class="title"> <td> 编号 </td> <td> 文件名 </td> <td> 上传日期 </td> <td> 大小(KB) </td> <td> 操作1 </td> <td> 操作2 </td> </tr> <c:forEach var="item" items="${fileInfoList}" varStatus="status"> <tr <c:if test="${status.count%2 == 0}">class="oddLine"</c:if> <c:if test="${status.count%2 == 1}">class="evenLine"</c:if>> <td class="mid"> <c:out value="${status.count}"></c:out> </td> <td class="content"> <c:out value="${item[0]}"></c:out> </td> <td class="mid"> <c:out value="${item[1]}"></c:out> </td> <td class="mid"> <c:out value="${item[2]}"></c:out> </td> <td class="mid"> <html:button property="btn" styleId="" onclick="deleteFile('${item[0]}')">下载</html:button> </td> <td class="mid"> <html:button property="btn" onclick="download('${item[0]}')">下载</html:button> <%//<html:link href="download.do?fileName=${item[0]}">下载</html:link>%> </td> </tr> </c:forEach> </table>
upload.js
function callback(){ } function $(id) { return document.getElementById(id) //return "string" == typeof id ? document.getElementById(id) : id; } function listFile(){ var url = "/fgosweb/upload/list.do"; var params = "" var loader = new net.ContentLoader(url, showData, null, "POST", params); } function showData() { var text = this.req.responseText; //alert(text) if($("fileListDiv")){ $('fileListDiv').innerHTML = text; } } function download(fileName){ var url = "/fgosweb/upload/download.do"; var params = "?fileName=" + fileName; window.location = url + params; //window.open("/fgosweb/upload/download.do" + params); } function deleteFile(fileName){ var url = "/fgosweb/upload/delete.do"; var params = "?fileName=" + fileName; window.location = url + params; }
net.js
/* url-loading object and a request queue built on top of it* * */ /* namespacing object */ var net=new Object(); net.READY_STATE_UNINITIALIZED=0; net.READY_STATE_LOADING=1; net.READY_STATE_LOADED=2; net.READY_STATE_INTERACTIVE=3; net.READY_STATE_COMPLETE=4; /*--- content loader object for cross-browser requests ---*/ net.ContentLoader=function(url,onload,onerror,method,params,contentType){ this.req=null; this.onload=onload; this.onerror=(onerror) ? onerror : this.defaultError; this.loadXMLDoc(url,method,params,contentType); } net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){ if (!method){ method="GET"; } if (!contentType && method=="POST"){ contentType='application/x-www-form-urlencoded'; } if (window.XMLHttpRequest){ this.req=new XMLHttpRequest();//ff } else if (window.ActiveXObject){ this.req=new ActiveXObject("Microsoft.XMLHTTP");//ie } if (this.req){ try{ var loader=this; this.req.onreadystatechange=function(){ net.ContentLoader.onReadyState.call(loader); } this.req.open(method,url,true); if (contentType){ this.req.setRequestHeader('Content-Type', contentType); } this.req.send(params); }catch (err){ this.onerror.call(this); } } } net.ContentLoader.onReadyState=function(){ var req=this.req; var ready=req.readyState; if (ready==net.READY_STATE_COMPLETE){ var httpStatus=req.status; if (httpStatus==200 || httpStatus==0){ this.onload.call(this); }else{ this.onerror.call(this); } } } net.ContentLoader.prototype.defaultError=function(){ alert("error fetching data!" +"\n\nreadyState:"+this.req.readyState +"\nstatus: "+this.req.status +"\nheaders: "+this.req.getAllResponseHeaders()); }
server.xml
<Connector port="8011" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="UTF-8"/>
uploadAciton.java
package com.travelsky.fgos.web.presentation.actions.upload; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.upload.FormFile; import org.springframework.web.struts.ActionSupport; import com.travelsky.fgos.web.presentation.forms.upload.UploadForm; public class UploadAction extends ActionSupport { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { Log logger = LogFactory.getLog(UploadAction.class); UploadForm uploadform = (UploadForm) form; String path = request.getSession().getServletContext().getRealPath( "/file/"); FormFile file = null; try { file = uploadform.getFile();// 获取FormFile } catch (Exception e) { logger.debug(e); } File dir = new File(path); if (!dir.exists()) dir.mkdirs(); if (file != null) { try { FileOutputStream fos; if (uploadform.getFileName() == null || uploadform.getFileName().equals("")) { fos = new FileOutputStream(dir + "/" + file.getFileName()); } else { String suffix = file.getFileName().substring( file.getFileName().lastIndexOf(".")); fos = new FileOutputStream(dir + "/" + uploadform.getFileName() + suffix); } fos.write(file.getFileData());// 开始写入 fos.flush(); fos.close(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); return mapping.findForward("failure"); } catch (IOException e) { // 获取文件流对象 e.printStackTrace(); return mapping.findForward("failure"); } } // response.write("<script // type='text/javascript'>parent.callback('ok')</script>"); return mapping.findForward("success"); } }
downlaodAction.java
package com.travelsky.fgos.web.presentation.actions.upload; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.web.struts.ActionSupport; import com.travelsky.fgos.web.presentation.forms.upload.UploadForm; public class DownloadAction extends ActionSupport { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // TODO Auto-generated method stub Log logger = LogFactory.getLog(DownloadAction.class); String path = request.getSession().getServletContext().getRealPath( "/file/"); BufferedInputStream bis = null; BufferedOutputStream bos = null; OutputStream fos = null; InputStream fis = null; try { UploadForm uForm = (UploadForm) form; String fileName = path + "\\" + uForm.getFileName(); String name = new String(uForm.getFileName().getBytes(), "ISO8859_1"); File downloadFile = new File(fileName); fis = new FileInputStream(downloadFile); bis = new BufferedInputStream(fis); fos = response.getOutputStream(); bos = new BufferedOutputStream(fos); //弹出下载对话框的关键代码 response.setContentType("application/x-msdownload"); response.setHeader("Content-disposition", "attachment;filename=" + name); int bytesRead = 0; //用输入流进行先读,然后用输出流去写(缓冲输入输出流) byte[] buffer = new byte[8192]; while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0, bytesRead); } bos.flush(); fis.close(); bis.close(); fos.close(); bos.close(); } catch (Exception e) { logger.debug(e); return mapping.findForward("failure"); } return null; } }
listAction.java
package com.travelsky.fgos.web.presentation.actions.upload; import java.io.File; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.springframework.web.struts.ActionSupport; public class ListAction extends ActionSupport { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response){ String path = request.getSession().getServletContext().getRealPath("/file/"); try{ //getFileInfo(path); request.setAttribute("fileInfoList", getFileInfo(path)); }catch(Exception e){ return mapping.findForward("failure"); } return mapping.findForward("success"); } public static List getFileInfo(String path){ File file = new File(path); File[] array = file.listFiles(); List fileInfoList = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); for(int i=0;i<array.length;i++){ List fileInfoItem = new ArrayList(); if(array[i].isFile()){ fileInfoItem.add(array[i].getName()); //0:name Date d = new Date(array[i].lastModified()); fileInfoItem.add(sdf.format(d));//1:time fileInfoItem.add(new Long(array[i].length()/1024));//2:length //fileInfoItem.add(array[i].getPath());//3:path } fileInfoList.add(fileInfoItem); } System.out.print(fileInfoList); return fileInfoList; } }
相关推荐
Struts 1.3 是一个历史悠久的Java Web应用程序框架,由Apache软件基金会开发。这个"struts1.3.jar"文件是Struts 1.3版本的核心库,它集成了框架的各种组件,使得开发者能够构建基于Model-View-Controller (MVC)设计...
Struts1.3是Apache软件基金会的Jakarta项目下的一个开源框架,主要用于构建基于Java的Web应用程序。这个框架提供了一种结构化的应用开发方式,它将业务逻辑、控制流程和表现层进行了分离,使得开发过程更为高效且...
Struts1.3 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它由Apache软件基金会开发并维护。这个入门级例子旨在帮助新手了解如何在实际项目中应用Struts1.3的核心概念和技术。在这个例子中,我们...
Struts1.3 jar包是Apache软件基金会的Jakarta Struts项目中的一个核心组件,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个框架极大地简化了开发人员在构建动态、数据驱动的Web应用程序...
Struts1.3、Spring3.0和Hibernate3.3是经典的Java企业级开发框架组合,常被用于构建Web应用程序。这个"SSH"项目示例旨在帮助开发者理解如何将这三个框架整合并应用于实际项目中。下面我们将深入探讨这三个组件以及...
本文将深入探讨在WeLogic服务器中使用Struts2框架进行文件下载时遇到的文件名乱码问题,并提供详细的解决方案。 ### 文件名乱码现象分析 在WeLogic服务器中使用Struts2进行文件下载时,用户可能会遇到文件名显示为...
Struts1.3、Spring4.x和Hibernate4.x是经典的Java Web开发框架组合,被称为SSH。这个项目展示了如何将这三个框架整合起来,实现一个完整的书籍管理应用,包括书籍的增加、删除、修改和查询功能,并且包含了分页展示...
Struts 1.3 API 是一个用于构建基于Java的企业级Web应用程序的重要框架。这个API文档是开发者学习和理解Struts框架核心功能的关键资源,虽然它提供了英文版本,但其丰富的信息对于深入理解Struts的工作原理至关重要...
Struts1.3 API 是一个基于Java的开源框架,用于构建企业级的Web应用程序。它遵循Model-View-Controller (MVC) 设计模式,帮助开发者有效地管理应用程序的业务逻辑、用户界面和数据处理。Struts1.3是Struts框架的一个...
struts1.3jar包
内含Struts1.3 API、Struts2.0 API、Struts1.3标签、Hibernate3.1教程、Hibernate3.1API、Spring3.0 API、Spring3.1API。SSH应有尽有,API均是CHM格式,方便使用。教程为pdf格式。
Struts1.3是Apache Struts框架的一个版本,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序开发框架。Validator是Struts框架中的一个关键组件,用于处理用户输入验证,确保数据的有效性和一致...
Struts1.3是Apache软件基金会的Jakarta项目下的一个开源框架,主要用于构建基于Java的Web应用程序。这个框架提供了一种结构化的应用开发方式,它将业务逻辑、控制流程和表现层进行了分离,使得开发过程更为高效且...
Struts1.3的全部架包,非常全,包含:struts-core-1.3.10.jar,struts-tiles-1.3.10.jar,struts-taglib-1.3.10.jar,struts-faces-1.3.10.jar,struts-extras-1.3.10.jar........
本示例代码涉及的是一个经典的技术栈:Ibatis2.3、Struts1.3和Spring2.5的整合。这三个框架各自都有其独特的功能和优点,组合在一起能够提供灵活的数据访问、高效的MVC架构以及全面的应用管理。 Ibatis,作为一款轻...
Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+hibernate+Spring3Struts1.3+...
Struts 1.3 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,由Apache软件基金会开发并维护。这个框架为开发者提供了一种组织和控制Web应用程序的方式,使得代码更加结构化,易于维护。在本文中,...
4. 文件上传与下载:Struts1.3还提供了处理文件上传和下载的标签,如`<html:file>`和`<bean:write>`。这些标签帮助开发者在JSP页面上处理二进制文件,实现了用户界面与后台服务的交互。 5. 源码学习价值:通过阅读...
Struts1.3 API函数是Java Web开发中用于构建Model-View-Controller(MVC)架构的应用框架Apache Struts的核心组成部分。Struts1.3版本是该框架的一个稳定且广泛使用的迭代,它提供了丰富的功能来帮助开发者管理应用...