`
serenity
  • 浏览: 62456 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

转:Struts 2 下载文件(12)中

阅读更多

11.3.2  Action中指定下载资源

前面的示例在配置文件中指定了下载资源的相关信息,但是这样指定资源是静态的,一般的应用要求系统根据用户不同的需要来动态下载资源。Struts 2框架还允许在Action中动态设置相关的资源下载配置信息,如代码11.10所示。

代码11.10  动态指定下载资源的业务控制器

 

package ch11;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionSupport;

public class Filedownload extends ActionSupport {

    
private String inputPath;

    
private String contentType;

    
private String filename;

    
//返回一个InputStream类型值

    
public InputStream getInputStream() throws Exception {

        
return ServletActionContext.getServletContext().getResourceAsStream(

                inputPath);

    }


//execute方法

    
public String execute() throws Exception {

        
//调用相关业务逻辑方法,动态设置相关下载信息

        inputPath 
= "/upload/struts-power.gif";

        filename 
= "test.gif"

        contentType 
= "image/gif";

        
return SUCCESS;

    }


    
public String getContentType() {

        
return contentType;

    }


    
public void setContentType(String contentType) {

        
this.contentType = contentType;

    }


    
public String getFilename() {

        
return filename;

    }


    
public void setFilename(String filename) {

        
this.filename = filename;

    }


}


 

读者可以看到,该Action可以根据用户的不同请求,动态指定不同的下载资源信息,下面的代码是对应的配置文件内容:

 

<action name="filedownload" class="ch11.Filedownload">

            
<result name="success" type="stream">

                
<!--  定义相关参数值-->

                
<param name="contentType">${contentType}</param>

                
<param name="inputName">inputStream</param>

                
<param name="bufferSize">4096</param>

                
<param name="contentDisposition">

                    filename="${filename}"

                
</param>

            
</result>

</action>

 

读者可以同前面的示例相比较,在浏览器中输入http://localhost:8080/bookcode/ch11/ filedownload.action,返回界面如图11.11所示,同前面示例的结果完全一致。

11.3.3  文件下载的权限控制

读者明白了Struts 2框架文件下载的原理后,就很容易实现文件下载的权限控制,可以在Actionexecute方法中加入用户合法身份的验证,如果不合法,则返回一个input逻辑视图,即返回给用户一个登录界面;如果是一个合法用户,则可以返回success逻辑视图,即返回用户想要下载的资源。

1)增加了权限控制的Action如代码11.11所示。

代码11.11  增加权限检查的业务控制器

 

package ch11;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;

public class FileDownloadAction implements Action {

    
private String username;

    
private String password;

     
private String inputPath;

     
public void setInputPath(String value) {

        inputPath 
= value;

    }


    
public InputStream getInputStream() throws Exception {

        
return ServletActionContext.getServletContext().getResourceAsStream (inputPath);

    }


    
public String execute() throws Exception {

    
//权限检查

    
if(username.equals("pla")&&password.equals("mypassword")){

          
return SUCCESS; 

    }
else{

         
return INPUT;       

    }


    }


    
//属性的getter和setter方法

   
public String getUsername() {

        
return username;

    }


    
public void setUsername(String username) {

        
this.username = username;

    }


    
public String getPassword() {

        
return password;

    }


    
public void setPassword(String password) {

        
this.password = password;

    }


}


 

 

分享到:
评论

相关推荐

    struts2核心文件

    Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Java Web框架,它在Web应用开发中被广泛使用。Struts2的核心在于提供一个强大的、灵活的、可扩展的架构,使得开发者能够更方便地实现业务逻辑与表现层...

    struts2实现文件下载功能

    在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...

    第八章:struts2文件上传下载.ppt

    第八章:struts2文件上传下载.ppt

    struts2实现文件上传下载

    本篇文章将详细探讨如何在Struts2框架下实现文件的上传与下载。 首先,我们需要了解Struts2中的文件上传机制。Struts2提供了`FileUploadInterceptor`拦截器来处理文件上传请求。在处理文件上传时,开发者需要在...

    struts2文件上传下载源代码

    在Struts2中,文件上传和下载是常见的功能需求,特别是在处理用户交互和数据交换时。这篇博客文章提供的"struts2文件上传下载源代码"旨在帮助开发者理解和实现这些功能。 文件上传功能允许用户从他们的设备上传文件...

    Struts2文件流方式导出下载excel、Txt、image图片

    2. **配置struts.xml**:在Struts2的配置文件中,我们需要为这个Action添加相应的配置,指定返回的`StreamingResult`结果类型和对应的视图。 ```xml &lt;param name="contentType"&gt;application/octet-stream ...

    Struts的文件下载

    在Struts中实现文件下载是一项常见的功能,尤其在处理用户请求获取服务器上的静态或动态资源时。这篇博文将深入探讨如何在Struts框架下实现文件下载的功能。 首先,我们需要了解文件下载的基本原理。当用户点击下载...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    struts2_uploadify带进度条的多文件上传下载

    Struts2 Uploadify是一个在Java Web开发中常用的插件,它结合了Struts2框架和Uploadify jQuery插件,能够实现文件的多选、上传进度显示以及后台处理等功能。这个项目示例提供了一个完整的解决方案,使得用户在上传多...

    个人总结:Struts2 上传文件的六种方法

    下面将详细介绍在Struts2中实现文件上传的六种方法,并探讨如何将文件数据保存到数据库中。 1. **Struts2默认的FileUpload拦截器** Struts2的核心组件`struts2-core`中包含了`fileUpload`拦截器,它基于Apache ...

    struts2文件上传和下载

    在Struts2中,文件上传和下载是常见的功能需求,对于用户交互和数据交换至关重要。以下是对这些知识点的详细阐述: 1. **文件上传**: 在Struts2中,文件上传主要依赖于`Commons FileUpload`库,它是一个Apache提供...

    struts框架-文件上传下载

    2. Struts2中的文件上传:Struts2提供了更简洁的文件上传方式。在JSP页面中,可以使用`&lt;s:file&gt;`标签来创建文件选择控件。在Action类中,使用`@SkipValidation`注解标记文件上传方法,然后定义对应的`java.io.File`...

    struts2所有jar包程序文件

    在下载并解压"struts2所有jar包"后,开发者需要将lib目录下的所有jar文件添加到项目构建路径中,确保运行时可以找到所有依赖。对于Maven或Gradle用户,可以通过在pom.xml或build.gradle文件中指定相应的依赖项,实现...

    Struts2知识点

    Struts2 的安装非常简单,只需要下载 Struts2 的 Full Distribution,解压缩到指定的目录中,然后安装 MyEclipse 和 Tomcat 即可。 2. Struts2 项目的建立: Struts2 项目的建立可以通过 MyEclipse 或 Eclipse 等 ...

    struts2文件上传下载

    在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,以及从服务器下载文件到用户的设备。 文件上传是Web应用中的常见需求,例如用户可能需要提交图片、文档...

    IBM Struts2培训PPT.7z

    IBMStruts2培训PPT (大全集) 主讲:刘雷 完整实用 第一章:认识体验Struts2.ppt 第二章:struts2架构剖析.ppt ...第八章:struts2文件上传下载.ppt 第九章:struts2拦截器.ppt + Struts2开发详解.ppt

    struts2 中文文件名文件下载

    在“struts2 中文文件名文件下载”的场景中,我们需要关注的是如何在Struts2框架下正确处理包含中文字符的文件名。首先,我们要理解文件名编码ISO8859-1,这是一个西欧字符编码标准,不支持中文字符。在处理中文...

    struts2中的批量上传与文件下载(解决中文乱码问题)

    Struts2是一个强大的Java web框架,它为开发者提供了丰富的功能,包括处理用户表单提交、文件上传和下载等。在实际开发中,处理文件上传和下载时,尤其是涉及到中文字符时,经常会出现中文乱码的问题。本文将详细...

    struts2-json-plugin-2.3.24-API文档-中文版.zip

    赠送Maven依赖信息文件:struts2-json-plugin-2.3.24.pom; 包含翻译后的API文档:struts2-json-plugin-2.3.24-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.apache.struts:struts2-json-plugin:2.3.24; ...

Global site tag (gtag.js) - Google Analytics