`

使用Struts2拦截器实现文件上传和下载

阅读更多
使用Struts2拦截器实现文件下载:

public class User implements java.io.Serializable{

//保存上传的文件
private File upload;

//文件的类型
private String uploadContentType

//文件的名字
private String uploadFileName;

//是否上传简历文件的标识
private String  isUpload;

//下载文件
private InputStream inputStream;

private String userID;//用户名
private String userName;//用户姓名
private String loginName;//登录名
private String loginPwd;//登录密码
private String sex;//性别
}


-----------------------
struts-default.xml
<result-type name="stream" class="org.apache.struts2.dispacher.VelocityResult"/>


struts.xml
<!--实现文件下载-->

<result name="download" type="stream">
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${#request.filename}"</param>//注意$的用法
</result>
注意:取到的filename可能有乱码问题 因为.java默认的是gbk,而xml默认的编码方式是iso8859-1
fielName = new String(fileName.getBytes("gbk"),"iso8859-1");
----------------------
User.java
//文件下载使用的流对象 inputStream;

pirvate InputStream inputStream; getter/setter

----------------------


view.jsp

<tr>
<td align="center" bgColor="#f5fafe" class="ta_01">
简历资料:
</td>
<td class="ta_01" bgColor="#ffffff" colSpan="3">
<a href="#" onclick="openWindow('user/userAction_download.do?userID=${userID }','700','400')" class="cl_01">
<s:property value="filename"/>
</a>
</td>
</tr>

UserAction

public String download() throws Exception{

//使用userID 获取当前用户ID所拥有的详细信息
UserService service = new UserService();

         /**
          *前边的user是service方法返回的user,在daoImpl中创建出来的,所以不
           *是模型驱动中的user
          */
user = service.findUserByID(user);//括号里边的user是模型驱动对象

//在当前用户信息中得到当前用户上传附件的路径

String path = user.getPath();

InputStream inputStream = new FileInputStream(path);//相当于把我路径当中的文件加载到流里边了

user.setInputStream(inputStream);//把这个流给用户,可是这个user不是模型驱动中的对象

        //获取当前文件的文件名
String fileName = user.getFilename();
ServletActionContext.getRequest().setAttribute("filename",fileName); //这个filename在struts.xml用到了

//将user对象放置到栈顶
//获取栈顶对象
ValueStack valueStack = ServletActionContext.getContext().getValueStack;

//清空栈顶对象
valueStack.pop();

//将user放置到栈顶
valueStack.push(user);

return "download";
}

分享到:
评论

相关推荐

    使用Struts2实现文件上传和下载的所有方案

    在本文中,我们将深入探讨使用Struts2实现文件上传和下载的各种方案。 ### 文件上传方案 #### 1. 使用Struts2进行文件普通上传 文件上传的核心是处理`multipart/form-data`类型的表单数据。Struts2通过`Struts2-...

    struts2实现文件上传下载

    Struts2是一个强大的MVC(模型-视图-控制器)框架,广泛应用于Java ...以上就是使用Struts2框架实现文件上传下载的基本步骤和关键知识点。在实际开发中,可以根据项目需求进行调整和优化,确保功能的稳定性和安全性。

    struts2 单文件,多文件上传及拦截器实现异常处理

    在这个主题中,我们将深入探讨Struts2如何实现单文件和多文件上传,并通过拦截器来处理可能出现的异常。 首先,我们来看单文件上传。在Struts2中,使用`&lt;s:file&gt;`标签可以创建一个用于选择文件的输入字段。用户选择...

    Struts2实现单个文件多个文件上传与下载-多个拦截器

    本项目主要展示了如何在Struts2框架下实现单个文件和多个文件的上传及下载,并且运用了多个拦截器来增强功能和安全性。 首先,让我们详细了解一下文件上传的过程。在Struts2中,文件上传主要依赖于`struts2-...

    struts2 Interceptor拦截器

    2. **如何实现**:Struts2提供了一个灵活的Interceptor框架,开发者可以通过实现Interceptor接口来自定义拦截器,也可以通过继承已有的拦截器实现来进行扩展。 3. **配置方式**:Interceptor的配置通过Struts2的配置...

    struts2文件上传和下载

    Struts2是一个非常流行的Java Web框架,用于构建企业级应用...通过以上步骤,开发者可以在Struts2框架下实现文件上传和下载功能,满足用户对数据交换的需求。但一定要注意安全性和性能优化,以确保应用的稳定和健壮。

    Struts2拦截器上传例子

    本示例主要探讨的是如何使用Struts2的拦截器来处理文件上传功能。 首先,我们来理解一下Struts2中的拦截器。拦截器是基于AOP(面向切面编程)的概念,它们在Action调用前后执行,可以用于日志记录、权限验证、事务...

    Struts2,实现单个文件,多个文件,上传与下载,多个拦截器

    在探讨Struts2框架下如何实现单个文件、多个文件的上传与下载,以及如何配置和使用多个拦截器之前,我们首先需要理解Struts2框架的基本概念及其在Web开发中的重要性。 ### Struts2框架简介 Struts2是Apache基金会...

    struts1和struts2分别实现文件上传下载功能

    Struts1和Struts2是两个非常著名的Java Web框架,它们都提供了处理文件上传和下载的功能,但实现方式有所不同。本文将深入探讨这两个框架在文件操作方面的具体实现。 首先,让我们了解一下Struts1中的文件上传功能...

    struts拦截器+文件上传

    在文件上传场景中,Struts拦截器可以起到关键作用,确保上传的安全性和有效性。 文件上传是Web应用中的常见功能,它允许用户将本地文件传输到服务器。在Struts中,文件上传通常涉及以下知识点: 1. **Struts拦截器...

    Struts2实现文件的上传下载

    总的来说,Struts2通过内置的拦截器和便捷的API,使得文件上传下载变得简单而高效。尽管本项目没有使用异步(AJAX)方式,但在实际应用中,结合AJAX进行无刷新的文件上传和下载也是常见的优化手段,可以提升用户体验...

    Struts2全注解方式实现文件上传与下载

    在本资源中,我们将探讨如何利用Struts2的注解方式来实现文件的上传和下载功能,这对于任何Web应用来说都是至关重要的特性。 首先,我们来看“注解”在Struts2中的作用。Struts2允许开发者使用注解来配置Action类,...

    struts实现文件上传和下载源代码

    例如,Struts 1和Struts 2在处理文件上传和下载的方式上有显著区别,Struts 2引入了更多面向Action的API和拦截器机制。 5. **源代码分析** 在提供的压缩包文件`upload`中,可能包含了Action类、Struts配置文件、...

    Struts2实现文件上传

    比如,可以使用Struts2的拦截器来控制文件大小,或者通过JavaScript进行前端校验。同时,确保在处理上传文件时,采取安全措施防止恶意文件注入。 总之,Struts2提供的文件上传功能使得在Java Web应用中处理文件上传...

    struts2上传文件及拦截器

    struts2上传单个文件及多个文件,strus2拦截器的使用,里面有个user用户,先执行user.jsp即登陆,可以执行上传文件的操作,反之,不能,有个exit.jsp,退出之后不能执行。里面含有jar文件,导入myeclipse可以执行...

    struts2 文件的上传和下载

    总之,Struts2的文件上传和下载功能是基于Commons FileUpload库实现的,通过配置Struts2拦截器和编写Action逻辑,可以方便地处理用户的文件交互需求。理解和掌握这一过程对于Java Web开发者来说是非常重要的,它能...

    struts2中的文件上传和下载示例

    3. 配置Struts2:在struts.xml配置文件中,配置文件上传拦截器(`struts.multipart.parser`),如`org.apache.struts2.dispatcher.multipart.JakartaMultiPartParser`。 4. 编写Action:创建一个Action类,使用`@...

    Struts2+Hibernate实现文件上传

    例如,可以使用Struts2的拦截器或者自定义Validator来限制上传文件的大小和类型。 在服务器端处理完文件上传后,通常会返回一个结果页面给用户,告知他们文件是否成功上传。这可以通过Struts2的结果类型来实现,...

    struts2实例 自定义过滤器 文件上传下载 登录功能

    开发者需要在Action类中创建适当的字段来接收文件,并使用Struts2的`@FileUpload`注解或`CommonsFileUploadInterceptor`拦截器来处理文件。文件下载则涉及到响应头的设置,以指示浏览器以附件形式下载文件。本实例...

    Struts2拦截器及其用法详细说明

    Struts2 拦截器是Struts2框架的核心组件之一,它们允许开发者在Action执行前后插入自定义逻辑,实现跨切面的功能。拦截器基于Java的动态代理机制,能够独立于Action和Struts2框架进行扩展和复用。下面我们将深入探讨...

Global site tag (gtag.js) - Google Analytics