- 浏览: 60972 次
- 性别:
- 来自: 广州
文章分类
最新评论
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;
}
}
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>
<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框架文件下载的原理后,就很容易实现文件下载的权限控制,可以在Action的execute方法中加入用户合法身份的验证,如果不合法,则返回一个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;
}
}
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;
}
}
发表评论
-
OGNL表达式 用法详解
2012-04-19 11:44 8981表达式通常用来访问页面中的各种变量,进行结果输出. s ... -
struts2.2.3最小jar
2011-07-18 11:32 1757struts2-core-2.2.3.jar :Struts ... -
转: struts2 标签 2
2011-07-05 11:41 1517一、概要:1、JSP标签技术始于JSP1.12、作用: ... -
转:struts2 标签
2011-07-05 11:39 901struts标签的继承 BodyTagSuppor ... -
struts.xml文件属性配置
2011-06-24 16:32 1199开发中发现struts还有co ... -
FilterDispatcher配置
2011-06-24 16:30 1332配置Struts 2的FilterDispatcher类时,可 ... -
struts.xml配置详解
2011-06-24 16:29 747地址:http://www.cnblogs.com/fmric ... -
struts.properties配置详解
2011-06-24 16:14 925在Struts2的核心包中org\apache\strut ... -
转:Struts 2 下载文件(12)下
2011-06-22 18:54 856(2)同时修改配置文件,增加一个input逻辑视图,修 ... -
转:Struts 2 下载文件(12)上
2011-06-22 18:52 105511.3 Struts 2控制文件下载 文件下载相对于 ... -
转: Struts 2多文件上传(11)下
2011-06-22 18:51 824(3)在配置文件中增加如下配置: ... -
转: Struts 2多文件上传(11) 上
2011-06-22 18:50 83211.2 多个文件上传 很多应用都要求在一个界面中可以 ... -
转: struts 2专用表达式(10)下
2011-06-22 18:49 8728.2 Struts 2的OGNL OGN ... -
转: struts 2专用表达式(10)上
2011-06-22 18:47 772OGNL是Object Graphic Navigat ... -
转: 数据校验功能-AJAX输入校验(9)下
2011-06-22 18:45 11867.4.4 建立JSP视图 建立一个reg-aja ... -
转: 数据校验功能-AJAX输入校验(9)中
2011-06-22 18:43 8617.4.2 建立业务控制器 建立一个简单的业务 ... -
转: 数据校验功能-AJAX输入校验(9)上
2011-06-22 18:41 9007.4 AJAX输入校验 Struts 2框架在使用客 ... -
转: Struts 2的拦截器(8)下
2011-06-22 18:39 834(3)在ch5包内建立一个业务控制器Reg,如代码5. ... -
转: Struts 2的拦截器(8)上
2011-06-22 18:39 721拦截器(Interceptor)是Struts 2的核 ... -
转: 应用Struts 2 的国际化支持特性(7)下
2011-06-22 18:37 769(4) 同样,success.jsp也使用了标签库,如 ...
相关推荐
第八章:struts2文件上传下载.ppt
使用struts2实现文件下载功能,可以直接运行!
struts2核心jar包,需要的可以下载使用
Struts2下载文件时中文乱码和空格处理
在struts2基础上实现的包括单文件、多文件的上传及下载
struts2中的文件上传和下载: 1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包 2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data" 3.再次,struts2中...
struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置文件以及代码示例struts2配置...
IBMStruts2培训PPT (大全集) 主讲:刘雷 完整实用 第一章:认识体验Struts2.ppt 第二章:struts2架构剖析.ppt ...第八章:struts2文件上传下载.ppt 第九章:struts2拦截器.ppt + Struts2开发详解.ppt
struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载 struts2文件上传和下载
项目:Struts2UpAndDownLoadFile 1.实现文件的上传和下载 项目:Struts2HandleExcelFile 1.实现文件的上传和下载 2.利用apache的poi-3.5-FINAL-20090928.jar组件实现创建Excel表格。
赠送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; ...
网上的Struts2进行的文件下载一般都是单文件或者固定的文件,并没有(很少)实现随意文件的下载的例子 提供多文件上传,上传成功后,提供刚上传的文件下载功能(其他的都可以在其上面进行扩充) 多文件 上传 下载...
Struts 2中实现文件下载 文件下载
使用struts2框架进行文件的上传并限制文件的大小与类型,使用struts2框架实现文件下载
struts2常用的6个jar包 commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后必须加入此文件 commons-io-1.3.2.jar freemarker-2.3.15.jar:Struts 2的UI标签的模板 ognl-2.7.3.jar :对象图导航语言(Object ...
Struts2最新版本2.2.1中所设计的核心库文件,包括以下内容: struts2-core-2.2.1.jar:Struts2框架的核心类库。 xwork-core-2.2.1.jar:Xwork核心类库,Struts2在其上构建。 ognl-3.0.jar:对象图导航语言(Object ...
struts2配置文件 struts2代码
struts2 库文件下载This product includes software developed by The Apache Software Foundation (http://www.apache.org/).
11.4.7 编写Struts的配置文件struts-config.xml 11.4.8 编写Spring的配置文件spring-config.xml 11.4.9 配置web.xml 11.4.10 启动Tomcat运行示例 11.5 小结 第十二章 使用Hibernate快速实现持久层处理 12.1 ...
struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单struts2文件下载极其简单