java struts 文件下载_Struts2文件下载实例

通过《Struts2文件下载简介》教程的学习,读者已经了解了使用 Struts2 框架实现在指定的目录中下载指定文件的功能。下面通过案例演示文件下载功能。

1)创建下载页面

在 struts2Demo06 项目的 WebContent 目录下创建一个名称为 download.jsp 的页面文件,在文件中添加一个用于文件下载的链接,其主要代码如下所示:

test.txt

2)创建 Action

在 com.mengma.action 包中新建一个名称为 SimpleDownLoadAction 的类,该类主要用于处理文件下载的核心操作,其代码如下所示。

package com.mengma.action;

import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class SimpleDownLoadAction extends ActionSupport {

private String filename;

public String getFilename() {

return filename;

}

public void setFilename(String filename) {

this.filename = filename;

}

// 定义了返回InputStream的方法,该方法作为被下载文件的入口

public InputStream getDownloadFile() {

// 获取下载文件名称

String filename = ServletActionContext.getRequest().getParameter(

"filename");

// 定义下载文件路径

String filePath = "/upload/" + filename;

// 返回一个流对象

return ServletActionContext.getServletContext().getResourceAsStream(

filePath);

}

}

3)编写配置文件信息

在 struts.xml 中增加 action 的配置,其代码如下所示:

text/plain

attachment;filename=${filename}

downloadFile

在上述配置代码中,分别通过 stream 结果类型的属性设置了所要下载文件的类型、名称和输入流。其中 ${filename} 表示在项目运行时,将 action 中的 filename 属性动态地填充在 ${} 中间部分,这样就可以动态地获取所要下载的文件名称。

4)运行项目并查看结果

启动项目后,在浏览器的地址栏中输入地址 http://localhost:8080/struts2Demo06/download.jsp,即可显示如图 1 所示的页面。

4109989f3d1541fe146d17f018b1e5f9.png

图 1  下载页面

单击下载页面的超链接后,浏览器的显示结果如图 2 所示。

736e3e6553222e03e161748ce55a08e3.png

图 2  上传页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

预售┃16个有趣的海洋实验,美到让人窒息!

▲数据汪特别推荐点击上图进入玩酷屋我们的孩子,在科技发展迅速的年代,从出生就接触着各种高科技,接触电子产品已经是必然。但小木时常在想,除了ipad和那些普通的玩具,我们还能给孩子玩儿些什么呢?有没有宝…

深入LINQ | 揭开IQueryable的面纱

原文:bit.ly/3uAXliC作者:Jeremy Likness译者:精致码农-王亮在上一篇深入LINQ | 动态构建LINQ表达式 博文中,我们探索了表达式的强大,并用它来动态地构建一个基于 JSON 的规则引擎。在这篇文章中,我们反过来…

科幻作家阿西莫夫上世纪预言2019: 计算机彻底变革教育,太空移民进行中

全世界只有3.14 % 的人关注了数据与算法之美2019年必将是充满机遇与挑战的一年,一年的时间世界可能发生很大的变化。我们应该如何期待新的一年?在这,数据汪带大家重新读1983年美国作家艾萨克阿西莫夫(Isaac Asimov)对2…

6月程序员平均工资出炉,你拖后腿了吗?

据有关部门统计:6月份全国招收程序员435501人,平均工资为15052元,很多小伙伴儿纷纷感慨工资被平均了。然而6月程序员工资的中位数却是13000元,这说明什么?也许不是被平均,而是真的拖后腿了,下面…

学习爬虫限时只需9.9,还在犹豫什么?

收拾行李回老家的小天,新春福利还是要准时送到大家手上的!随着互联网的发展,google、百度等搜索引擎让我们获取信息愈加方便。Python是当今世界最热门的编程语言之一,在科研领域也发挥着强大的作用,尤其是在日常的学习…

如何快速正确的安装 Ruby, Rails 运行环境

2019独角兽企业重金招聘Python工程师标准>>> 系统需求 首先确定操作系统环境,不建议在 Windows 上面搞,所以你需要用: Mac OS X任意 Linux 发行版本(Ubuntu,CentOS, Redhat, ArchLinux ...)强烈新手使用 Ubuntu 省掉不必要的麻烦!…

你怕是对MD5算法有误解

大家常听到“MD5加密”、“对称加密”、“非对称加密”,那么MD5属于哪种加密算法?面试官问这样的问题,准是在给你挖坑。"MD5加密"纯属口嗨,MD5不是加密算法,是摘要算法。今天小码甲带大家梳理加密算法、摘要…

还在集什么五福,史上最惨锦鲤再次来袭!奖品堪比5年高考3年模拟!

全世界只有3.14 % 的人关注了数据与算法之美在锦鲤盛行的2018年我们超级数学建模也跟风来了一个“史上最惨锦鲤”活动为什么叫史上最惨锦鲤呢因为平常看一本数学书就已经头疼了何况我们奖品还是100本数学书试问除了学霸还有谁能承受这种殊荣巧的是最后的得主还真是一个学霸那就…

Python: logging日志模块简单示例

2019独角兽企业重金招聘Python工程师标准>>> Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用。这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST&#x…

开源基金会为何辟谣 鸿蒙背后有何玄机

最近,鸿蒙OS曝光率极高,受网络舆论热捧。铁流原本是不太愿意碰这个雷的,因网友提问,所以谈一谈这个事情。OpenHarmony和Harmony是两回事6月2日,公司官宣鸿蒙OS,给出了百台机型的升级计划,而且还…

java get image获取根路径_Java 获取资源文件路径

1 问题描述通过源码运行时,一般使用如下方式读取资源文件:String str "1.jpg";资源文件与源码文件放在同一目录下,或者拥有同一父级目录:String str "a/b/1.jpg";这样直接编译运行没有问题,但是…

阿里云开源的Blink,计算能力很疯狂:一眨眼,全部都算好!

全世界只有3.14 % 的人关注了数据与算法之美前两天,阿里云宣布开源“计算王牌”——实时计算平台Blink,回馈给ApacheFlink社区。官方称,计算延迟已经降到毫秒级:浏览网页的时候,你只是眨了一下眼睛,但在淘宝…

NET问答: 如何用 C# 计算相对时间 ?

咨询区 Jeff Atwood:给定一个 DataTime 值,如何计算如下时间?比如说:2 小时前?3 天前?1 个月前?回答区 neuracnu:我在 DateTime 类上做了一个扩展方法,你可以给它传递未来…

有趣程序和让人捧腹大笑的注释,你的注释还不够骚

全世界只有3.14 % 的人关注了数据与算法之美一&#xff0c;这个是关于数组的操作&#xff0c;数据汪也是才知道&#xff0c;居然还有这种操作# include <stdio.h>int main(){ int num[] {1,2,3,4};printf("the 3[num] result is : %d\n", 2[num]);return 0;}结…

.NET之盛派微信SDK简单操作

开篇语在6月5号&#xff0c;我报名去参加了微软举办的一个线下分享的技术市集&#xff0c;分享人是苏老师和赵老师(非常感谢)&#xff0c;其中苏老师讲述了关于一些容器的部署等操作(也可以观看我的历史文章)&#xff0c;其中关于部署的示例代码是使用盛派微信SDK做了一个对接微…

预售┃连锁反应装置积木好玩到尖叫!

▲数据汪特别推荐点击上图进入玩酷屋之前推荐的“小小机械师”成了孩子最受欢迎的玩具&#xff0c;玩了的孩子几乎没有不喜欢的。还有家长买多套送给朋友的孩子作为生日礼物。有家长来问&#xff0c;还有没有这种类型的新产品。和厂家咨询后&#xff0c;小木找到了一款“小小机…

VMware VSphere 虚拟化云计算学习配置笔记(四)

2:接下来配置安装vcenter-db&#xff0c;安装MS SQL 2008r2 在vcenter-db服务器上安装配置MS SQL 2008r2过程截图&#xff1a; 这里可能会要耐心等一下才会出现一下提示&#xff1a; 选择左边installation 之后出现右边第一项新的安装&#xff1a; 转载于:https://blog.51cto.c…

IT人回家过年的尴尬

全世界只有3.14 % 的人关注了数据与算法之美春节将至&#xff0c;有很多人已经踏上了返乡的旅途&#xff0c;回家开开心心过春节&#xff0c;归心似箭的心表明了他们对家乡的热爱&#xff0c;归心似箭的心显示了他们想念父母的情&#xff0c;归心似箭的心代表了他们对朋友的思。…

java 判断进程状态_获取远程服务器上 Java 进程的运行状态

为了安全考虑, 有些服务器会被限制登录. 本文介绍如何获取远程服务器上 Java 进程的运行状态.启动 jstatd 服务在服务器端启动 jstatd 服务后, 远程的机器可以通过 rmi 协议获取服务器上 Java 程序的运行状态.在服务器上创建 jstatd 的授权文件, 假设文件路径为/etc/jstatd.all…

聊一聊Elasticsearch和MySQL的常用操作

前言 ElasticSearch&#xff0c;开源的搜索和数据分析引擎&#xff0c;也是名列前茅的 nosql。很多时候会想拿它和关系型数据库做对比&#xff0c;严格上它们是没有太多可比性的。不过把有的东西放在一起比较&#xff0c;会帮助我们快速去理解一些 ElasticSearch 的内容。老黄这…