1.在实际应用开发中,文件下载功能也非常常见。

2.最简单的文件下载方式是通过超链接来进行文件下载:

<body>
<a href="download/s.txt">课件</a><br/>
<a href="download/t.jpg">美女</a><br/>
<a href="download/jstl-1.2.jar">jstl</a>
</body>

注意:直接通过超链接下载文件,如果浏览器能够读取文件,浏览器会直接读取,而不会下载到本地。并且有安全问题。所以,可以通过action来实现下载。

3.Struts2文件下载功能的实现:

Action实现

public class DownloadAction {
private String fileName;
public String execute(){
return Action.SUCCESS;
}
//获取文件流
public InputStream getInputStream() throws FileNotFoundException{
String path=ServletActionContext.getServletContext().getRealPath("/download");
return new FileInputStream(new File(path,fileName));
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}

Struts.xml

<package name="default" extends="struts-default" namespace="/">
<action name="download" class="cn.sxt.action.DownloadAction">
<result type="stream">
<!-- 根据inputName生产的get方法 到Action中去取得该方法的返回值 -->
<param name="inputName">inputStream</param>
<!-- 设置下载的文件 直接保存 -->
<param name="contentDisposition">attachment;filename=${fileName}</param>
</result>
</action>
</package>

jsp

<body>
<a href="download/2.txt">课件</a> <br />
<a href="download/1.jpg">美女</a> <br />
<hr />
<a href="download.action?fileName=2.txt">课件</a> <br />
<a href="download.action?fileName=1.jpg">美女</a> <br />
</body>

或者 Action的另一种写法:

public class DownloadAction {
private String fileName;
private InputStream inputStream;
public String execute() throws FileNotFoundException{
String path=ServletActionContext.getServletContext().getRealPath("/download");
inputStream = new FileInputStream(new File(path,fileName));
return Action.SUCCESS;
}
public InputStream getInputStream() {
return inputStream;
} public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
public String getFileName() {
return fileName;
}
public void setFileName(String fileName) {
this.fileName = fileName;
}
}

java之struts2之文件下载的更多相关文章

  1. 关于Struts2的文件下载

    首先先来说下关于文件下载的原理: 服务端为客户端提供了一个下载服务,所以服务端需要一个输出流(把客户请求下载的文件输出),相对于服务端来说,客户端需要下载接收一个文件,所以它需要一个输入流(接收文件) ...

  2. 基于 Struts2 的文件下载

    介于上篇我们讲述了基于 Struts2 的单文件和多文件上传,这篇我们来聊一聊基于 Struts2 的文件下载. 1.导 jar 包 commons-io-2.0.1.jar struts2-core ...

  3. Struts2笔记--文件下载

    Struts2提供了stream结果类型,该结果类型是专门用于支持文件下载功能的.配置stream类型的结果需要指定以下4个属性. contentType:指定被下载文件的文件类型 inputName ...

  4. 微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决

    微信企业号回调模式配置解说 Java Servlet+Struts2版本号 echostr校验失败解决 echostr校验失败,请您检查是否正确解密并输出明文echostr 异常java.securi ...

  5. Java之struts2框架学习

    Java之struts2框架学习 About Struts2 Struts也是一款MVC框架 , Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全 ...

  6. java struts2 的 文件下载

    jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  7. Struts2 多文件下载

    Step1:导入支持jar包 commons-fileupload-1.3.1.jar commons-io-2.4.jar jstl-1.2.jar standard-1.1.2.jar commo ...

  8. Struts2实现文件下载

    实现文件下载: 1.导包:commons-fileload-xx.jar commons-io-xx.jar 2.jsp页面: <s:iterator value="#session. ...

  9. Struts2中文件下载

    在struts.xml中配置如下 <action name="download" class="cn.itcast.domain.User" method ...

随机推荐

  1. go语言new和make

    1.new func new(Type) *Type 内建函数,内建函数 new 用来分配内存,它的第一个参数是一个类型,它的返回值是一个指向新分配类型默认值的指针! 2.make func make ...

  2. mysql find_in_set 函数 使用方法

    mysql> select * from user; +------+----------+-----------+ | id | name | address | +------+------ ...

  3. Redis 下载 安装

    Redis 官网 https://redis.io/ github 主页 https://github.com/antirez/redis 下载页面 https://redis.io/download ...

  4. 作业——12 hadoop大作业

    作业的要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3339 Hadoop综合大作业 1.以下是爬虫大作业产生的csv文件 ...

  5. 菜鸟学IT之分布式文件系统

    作业来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3310 1.目录操作 在HDFS中为hadoop用户创建一个用户目录(had ...

  6. C# linq 使用Groupby lamda 获取非重复数据

    ).GroupBy(b => b.BasicUserId).Select(a => new MyServicesListViewModel() { HeadIcon = apiUrl + ...

  7. pm2 工具来管理 node 服务端

    如下: nodeServer.js 'use strict'; const http = require('http'); const server = http.createServer(funct ...

  8. [LeetCode] 290. Word Pattern 单词模式

    Given a pattern and a string str, find if str follows the same pattern. Here follow means a full mat ...

  9. 【神经网络与深度学习】【CUDA开发】服务器(多GPU)caffe安装和编译

    一. 前提 多GPU交互在神经网络是常见的,所以在安装caffe之前需要安装NCCL,来保证多GPU之间的相互交流.  多GPU,这里指的是2个及2个以上英伟达显卡,而不是笔记本中的集显和独显. 二. ...

  10. OpenSSL 创建自签名证书

    1.生成服务器私钥 openssl genrsa -out client.key 4096   2.生成证书签名请求(CSR) openssl req -new -key client.key -ou ...