Struts2文件下载浅析
Struts2极大的简化了文件上传和下载,本文将主要介绍一下Struts2文件下载的实现
1、功能主要是,在下载页面点击下载后,则下载相应的文件


2、代码部分
jsp页面downloadPage:
<body>
<!--
该页面主要就是一个超链接,点击进入DownloadAction,
并传递三个参数:原文件的名字,文件类型,显示的下载文件名
-->
<a href="${pageContext.request.contextPath}/download?res=example.ppt&resType=application/vnd.ms-powerpoint&resName=MyDownload">点击下载文件</a>
</body>
*************************************************************
DownloadAction:
public class DownloadAction extends ActionSupport{
private String res; //下载的目标资源
private String resType; //下载的文件类型
private String resName;//下载的文件名
public String getRes() throws Exception {
//对res请求参数进行处理,(中文)
return new String(res.getBytes("iso-8859-1"),"utf-8");
}
public void setRes(String res) {
this.res = res;
}
public String getResType() {
return resType;
}
public void setResType(String resType) {
this.resType = resType;
}
public String getResName() {
return resName;
}
public void setResName(String resName) {
this.resName = resName;
}
//提供一个返回值为InputStream的get方法
public InputStream getTarget() throws IOException {
//在目录下我新建了一个downloadFile文件夹,用于存放要下载的文件
return new FileInputStream(ServletActionContext.getServletContext().getRealPath("/downloadFile")+res);
}
@Override
public String execute() throws Exception {
return SUCCESS;
}
}
*************************************************************
配置文件struts.xml:
<action name="download" class="action.DownloadAction">
<result type="stream"> <!-- 二进制流 -->
<!-- 该参数指定二进制流的-->
<param name="contentType">${resType}</param>
<!-- 指定返回InputStream的方法-->
<param name="inputName">target</param>
<param name="contentDisposition">filename=${resName}</param>
<!--控制文件下载缓冲的大小-->
<param name="bufferSize">4096</param>
</result>
</action>
简要介绍一下参数的含义:
1) <param name="contentDisposition">filename=${resName}</param>
contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型或者图片类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择
2) <param name="inputName">target</param>,这个target名字要和DownloadAction.java类中的getTarget()方法名去掉get,小写首字母一致
可能对于各类文件的类型有同学并不是很清楚,这里介绍一下如何查询文件在web的类型
进入自己安装的tomcat ---> conf文件 ---> 打开web.xml 里面列出了所有文件的类型
Struts2文件下载浅析的更多相关文章
- struts2文件下载 <result type="stream">
<!--struts.xml配置--> <action name="download" class="com.unmi.action.DownloadA ...
- struts2文件下载及 <param name="inputName">inputStream</param>的理解
转自:http://blog.csdn.net/wnczwl369/article/details/7483290 转自:http://hi.baidu.com/c2_sun/item/934a542 ...
- struts2文件下载相关信息
struts.xml文件配置: <span style="font-size:16px;"><?xml version="1.0" encod ...
- Struts2文件下载
1). Struts2 中使用 type="stream" 的 result 进行下载 2). 可以为 stream 的 result 设定如下参数 contentType: 结果 ...
- struts2文件下载出现Can not find a java.io.InputStream with the name的错误
今天在用struts2就行文件下载时出现如下错误: Servlet.service() for servlet default threw exception java.lang.IllegalArg ...
- Struts2 文件下载
使用Struts2做一个简单的文件下载. 首先,导包,写配置文件就不说了. 进入主题. 文件下载操作类:FileDownload.java import java.io.InputStream; im ...
- Struts2 文件下载(中文处理方法以及控制下载文件名称和扩展名)
Struts2的框架提供了现成的文件下载方式,大大简化了开发下载功能的便利性.网上的例子有很多,我把一些大家普遍比较关注的点,集中一下,给出一个整体方案. 一般我们照着书本或者网上的列子写出了一个De ...
- struts2文件下载,动态设置资源地址
转自:http://blog.csdn.net/ctrl_shift_del/article/details/6277340 ServletActionContext.getServletContex ...
- struts2文件下载 出现Can not find a java.io.InputStream with the name的错误
成功代码: 前台界面jsp: <a style="text-decoration:none;" href="<%=path %>/main/frontN ...
随机推荐
- Sql Server 存储过程使用技巧
1.创建带Try...Catch的存储过程模板 Copy下面的代码,然后新建查询,就可以写sql语句,执行完后,一个你自己的存储过程就建立好了! USE [DB]--设定对应的数据库 GO SET A ...
- 修改cas登陆页面-服务器端
原文地址:http://www.cnblogs.com/liveandevil/archive/2013/03/06/2946341.html 1.cas统一认证的登陆页面位于:cas目录/WEB-I ...
- MyEclipse与Mysql数据库的连接
1.载入MySql驱动程序 Class.forName("com.mysql.jdbc.Driver"); // 载入MySql驱动程序 2.建立Connection连接对象 ...
- 让DataGridView显示行号
http://www.cnblogs.com/JuneZhang/archive/2011/11/21/2257630.html 为了表示行号,我们可以在DataGridView的RowP ...
- 计算机思维or人的思维
计算机领域就会有计算机领域的一些特性和一些思维方式,或者说有他自己的一些问题,须要用相应的思维方式来进行理解它,从而更好的驾驭他.有些时候遇到的一些问题,自己想却想不明确,也是由于我们没有把自己当做一 ...
- [Practical Git] Format commit history with git log arguments
When running the git log command, we can pass in options as arguments toformat the data shown for ea ...
- [Python]linux自己定义Python脚本命令
在window下写好的程序配置到Linux上,要实现随意文件夹下的命令调用. 因为初学Linux,这里从文件传输等最主要的方法入手,记录配置的过程中遇到的各种问题. 连接远端server 这里使用pu ...
- open_table与opened_table --2
好多人在调优Mysql的时候,总是对open_tables和opend_tables两个参数分别不清. 网上好多解释都是这样的:open_tables:当前打开表的数量opened_tables:当前 ...
- win10.10 激活
最近几天一直有同学来找我说,为什么用密钥或kms神龙版都无法激活win8/8.1.win10,于是我就让这些同学给我截图,结果他们激活出错的信息基本都一样,都是错误:“0XC004F074 软件授权服 ...
- 手工配置tomcat 解决一闪而过~
双击tomcat 目录下的bin目录下的startup.bat 如果看到Server startup in **** ms 显示在屏幕上证明你的配置都成功了 如果一闪而过,说明出错了.请在dos进入上 ...