- 浏览: 35477 次
- 性别:
- 来自: 成都
最新评论
-
hzs0502030128:
好象不起作用
cxf、struts、spring中web.xml过滤url问题解决方案 -
ndsafhhlk:
方法一很渣,忽略。方法二,很好,我就是用的这个方法方法三,不起 ...
cxf、struts、spring中web.xml过滤url问题解决方案
1.上传页面
*<form action="对应上传的Action" enctype="multipart/form-data" method="post">
*文件上传框:<input type="file" id="upload_file" name="file"/> 此file必须和Action中的File file同名,并且文件名必须是fileFileName(struts2会自动填充文件名)
*form提交的按钮(可以直接用submit按钮,也可以写在js里)
2.下载页面
*访问下载的Action(通过id获得不同文件)
4.配置
*<form action="对应上传的Action" enctype="multipart/form-data" method="post">
*文件上传框:<input type="file" id="upload_file" name="file"/> 此file必须和Action中的File file同名,并且文件名必须是fileFileName(struts2会自动填充文件名)
*form提交的按钮(可以直接用submit按钮,也可以写在js里)
<form action="${pageContext.request.contextPath}/pfl/attachment/saveAttachmentAction.action" enctype="multipart/form-data" method="post" id="uploadAttachmentForm" > <div class="row"> <div class="row_table_top"> <div class="row_table_top_left"><img src="${pageContext.request.contextPath}/system/assets/images/point_down.gif" width="7" height="8" /><fmt:message key="pfl.system.attachment.upload"/></div> </div> <div class="row_table_middle"> <table width='100%' align=center height='200' cellspacing="0" cellpadding="0" border="0"> <tr class="trform"><td colspan="2"> </td></tr> <tr class="trform"><th valign="top"> <div align="right"><fmt:message key="pfl.system.attachment.select_file" /><fmt:message key="global.maohao"/></div> </th> <td valign="top" style=""> <div align="left"><input type="file" id="upload_file" name="file"/></div> </td> </tr> <tr class="trform"> <th valign="top"><div align="right"> </div></th> <td align="left"> <div align="left"> <input type="button" class="button2" id="go_ul" onclick="uploadAttachment();" value="<fmt:message key="pfl.system.attachment.submit"/>" /> <input type="button" name="back" id="back" class="button2" onclick="win_close();" value="<fmt:message key="pfl.system.attachment.close" />"/> </div> </td> </tr> </table> </div> </div> </form>
2.下载页面
*访问下载的Action(通过id获得不同文件)
<div id="docs" style=""> <c:forEach items="${contractAttachmentList}" var="contractAttachment"> <span id="${contractAttachment.id}"> <input type="hidden" name="contractAttachment.id" value="${contractAttachment.id}"/> <a href="${pageContext.request.contextPath}/pfl/attachment/downloadAttachmentAction.action?id=${contractAttachment.id}">${contractAttachment.name}</a> </span> </c:forEach> </div>3.Action
public class ContractAttachmentAction extends ActionSupport { private ContractAttachment contractAttachment; private IContractAttachmentService contractAttachmentService; private File file; private String fileFileName; private String fileContentType; private String savePath; private String path; private String downloadFile; private String downloadFileName; public String showupload(){ HttpServletRequest request = ServletActionContext.getRequest(); String id = request.getParameter("id"); request.setAttribute("id",id); return "showupload"; } public String save(){ Date currentDate = UtilTools.getCurrentDate(); HttpServletRequest request = ServletActionContext.getRequest(); try{ String contractID = request.getParameter("contractID"); upload(); if(contractID!=null&&!contractID.equals("")){ contractAttachment.setCid(Integer.parseInt(contractID)); } contractAttachment.setName(fileFileName); contractAttachment.setPath(path); contractAttachment.setCreateTime(currentDate); contractAttachmentService.saveOrUpdate(contractAttachment); request.setAttribute("success","success"); request.setAttribute("contractAttachment",contractAttachment); return "showupload"; }catch (Exception e){ e.printStackTrace(); } return "failure"; } public String update(){ try{ contractAttachmentService.update(contractAttachment); return "update"; }catch (Exception e){ e.printStackTrace(); } return "failure"; } public String delete(){ // HttpServletResponse response= ServletActionContext.getResponse(); // PrintWriter writer=null; // response.setContentType("text/text;charset=UTF-8"); HttpServletRequest request = ServletActionContext.getRequest(); savePath=ServletActionContext.getServletContext().getRealPath("/")+"uploads"; File f=null; String id = request.getParameter("id"); if(id==null&&id.trim().equals("")){return "failure";} try{ // writer=response.getWriter(); contractAttachment = contractAttachmentService.get(Integer.parseInt(id)); f = new File(savePath,contractAttachment.getPath()); if(f!=null){ f.delete(); //返回1代表删除成功 // writer.write("1"); } // else{ // writer.write("0"); // } }catch (Exception e){ e.printStackTrace(); } contractAttachmentService.delete(contractAttachment); return null; } public String download(){ return "download"; } public void upload() throws Exception { savePath=ServletActionContext.getServletContext().getRealPath("/")+"uploads";//获得上传文件放置的目录,可以自己定义,绝对路径 System.out.println(savePath); String formatDate = UtilTools.getBussinessNoByDate();//获得当前时间 int position = fileFileName.lastIndexOf(".");//文件后缀名 String extension = fileFileName.substring(position); int random = new Random().nextInt(1000);//获得的是随机数字,用于构造文件名 path = formatDate + random + extension;//已经构造号的文件名 System.out.println(path); InputStream is = new FileInputStream(file);//读取上传页面过来的文件流 System.out.println(fileFileName); System.out.println(fileContentType); File destFile = new File(savePath,path);//创建需写入的文件 if(!destFile.exists()){ destFile.createNewFile(); } OutputStream os = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; int length = 0 ; while((length = is.read(buffer)) > 0){ os.write(buffer, 0, length);//写入 } is.close(); os.close(); } public ContractAttachment getContractAttachment() { return contractAttachment; } public void setContractAttachment(ContractAttachment contractAttachment) { this.contractAttachment = contractAttachment; } public IContractAttachmentService getContractAttachmentService() { return contractAttachmentService; } public void setContractAttachmentService(IContractAttachmentService contractAttachmentService) { this.contractAttachmentService = contractAttachmentService; } public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } public String getSavePath() { return savePath; } public void setSavePath(String savePath) { this.savePath = savePath; } //从下载文件原始存放路径读取得到文件输出流 public InputStream getDownloadFile(){ HttpServletRequest request = ServletActionContext.getRequest(); savePath=ServletActionContext.getServletContext().getRealPath("/")+"uploads\\"; String id = request.getParameter("id"); InputStream fileInputStream = null; try { if(id!=null&&!id.trim().equals("")){ contractAttachment = contractAttachmentService.get(Integer.parseInt(id)); downloadFile = savePath+contractAttachment.getPath();//下载文件绝对地址 downloadFileName = new String(contractAttachment.getName().getBytes(),"ISO-8859-1");//避免中文乱码 } fileInputStream = new FileInputStream(downloadFile);//手动new一个InputStream获得下载文件流 } catch (Exception e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } return fileInputStream; } public void setDownloadFile(String downloadFile) { this.downloadFile = downloadFile; } public String getDownloadFileName() { return downloadFileName; } }
4.配置
<package name="pfl-attachment" namespace="/pfl/attachment" extends="struts-default"> <action name="*AttachmentAction" method="{1}" class="contractAttachmentAction"> <result name="showupload">/pfl/system/contract/uploadAttachment.jsp</result> <result name="download" type="stream"> <!-- 下载文件类型定义(通用类型) --> <param name="contentType">application/octet-stream;charset=ISO8859-1</param> <!-- 下载文件输出流定义,会找Action中的InputStream getDownloadFile() --> <param name="inputName">downloadFile</param> <!-- 下载文件处理方法,获得下载的文件名(Action中的getDownloadFileName() ) --> <param name="contentDisposition">attachment;filename="${downloadFileName}"</param> <param name="bufferSize">4096</param> </result> <result name="failure">/error.jsp</result> <result name="input">/error.jsp</result> <interceptor-ref name="defaultStack"> <param name="fileUpload.maximumSize">10240000</param> <!--<param name="fileUpload.allowedTypes">image/bmp,image/png,image/gif,image/jpeg,image/jpg ,image/x-png, image/pjpeg</param>--> </interceptor-ref> </action> </package>
发表评论
-
cxf、struts、spring中web.xml过滤url问题解决方案
2012-03-02 15:20 5838最近项目遇到webService配置cxf过滤器时与strut ... -
[转]hibernate查询缓存(Query Cache)
2012-02-15 15:43 916转:http://www.lordofthejars.com/ ... -
[转]hibernate延迟加载机制理解
2011-09-19 19:46 1241[转]http://www.sunxin.org/arti ... -
[转]hibernate3延迟加载
2011-09-19 19:18 1023转:百度文库[橙子果冻(343928972)] 延迟加载: 首 ... -
[转]spring依赖注入的3种方式
2011-09-12 19:14 1004[转]http://www.pc6.com/infoview/ ... -
[转]Spring配置文件总结(二)
2011-09-12 18:43 9854.SSH: <?xml version="1 ... -
[转]Spring配置文件总结(一)
2011-09-12 18:33 888转:http://zhaohe162.blog.163.com ... -
[转]运行时异常与非运行时异常有什么区别
2011-09-12 18:14 988转:http://hi.baidu.com/a72981280 ... -
[转]hibernate.hbm2ddl.auto .
2011-09-05 12:28 1179转:http://blog.csdn.net/kjfcpua/ ... -
声明式spring整合hibernate配置参考
2011-09-05 12:24 920applicationContext.xml <?xml ... -
[转]spring事务原理
2011-09-05 11:56 1010转:http://blog.sina.com.cn/s/blo ... -
[转]鸭子-策略模式(Strategy)
2011-09-03 17:08 727转:http://www.cnblogs.com/justin ... -
[转]什么是游离状态
2011-09-03 16:28 947转:http://guocc.iteye.com/blog/6 ... -
[转]一种常用的权限控制算法的实现
2011-09-03 16:24 794转:http://pcedu.pconline.com.c ... -
[转]hibernate延迟加载的原理与实现
2011-09-03 16:20 738转:http://superleo.iteye.com/blo ... -
[转]Spring IoC与AOP的核心思想
2011-09-03 16:14 4745转:http://blog.sina.com.cn/s/blo ...
相关推荐
在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...
在“struts2文件上传下载实例”中,我们将探讨如何在Struts2框架下实现文件的上传和下载功能,这对于许多Web应用程序来说是必不可少的特性。 首先,`pom.xml`文件是Maven项目对象模型的配置文件,它定义了项目的...
综上所述,Struts2文件上传下载和表单重复提交涉及多个技术点,包括Struts2的配置、文件操作、HTTP响应头设置、安全性和异常处理。理解并熟练掌握这些知识点,对于构建健壮的Web应用程序至关重要。
在本项目中,我们关注的是Struts2中的文件上传和下载功能,这些功能是Web开发中常见的需求,尤其在处理用户数据提交或提供资源下载时。下面将详细介绍这个“struts2文件上传下载(注解版)”项目的关键知识点。 1. ...
Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。
在Struts2中,文件上传和下载是常见的功能,它们允许用户从服务器上下载文件或向服务器上传文件。理解并掌握这一部分的知识对于开发交互性强的Web应用至关重要。 ### 一、文件上传 1. **使用Struts2的FileUpload...
在Struts2中,文件上传和下载是常见的功能,它们使得用户能够交互地处理文件,如上传图片、文档或者下载资源。下面我们将深入探讨如何利用Struts2实现文件上传和下载。 一、文件上传 1. 配置Struts2核心拦截器:...
第八章:struts2文件上传下载.ppt
在Struts2框架中,文件上传和下载是常见的功能需求,但处理中文文件名或内容时,可能会遇到中文乱码的问题。这个问题主要涉及到字符编码的处理,包括HTTP请求的编码、文件名的编码以及文件内容的编码。接下来,我们...
在Struts2中,文件上传和下载是常见的功能需求,主要用于处理用户在Web表单中提交的文件,如图片、文档等。下面将详细介绍Struts2中文件上传和下载的实现方法。 ### 1. 文件上传 #### 1.1 配置Struts2 首先,我们...
Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、进行文件上传和下载。在Web应用中,文件上传和下载是常见的需求,例如用户上传头像、下载文档等。Struts2通过其Action类和...
Struts2 文件上传是Web开发中的一个重要功能,它允许用户通过网页上传文件到服务器。Struts2 是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,提供了丰富的特性和强大的控制层功能,使得文件上传...