上一篇已经记录了 web中的文件上传功能

java通过struts实现web中的文件上传

本篇记录下载功能

定义一个Action类,FileDownload.java

package com.struts2.filedownload;import java.io.InputStream;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;//文件下载
public class FileDownload extends ActionSupport{private int number ;private String fileName;public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public String getFileName() {return fileName;}public void setFileName(String fileName) {this.fileName = fileName;}//返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流public InputStream getDownloadFile() throws Exception{if(1 == number){this.fileName = "Dream.jpg" ;//获取资源路径return ServletActionContext.getServletContext().getResourceAsStream("upload/Dream.jpg") ;}else if(2 == number){this.fileName = "jd2chm源码生成chm格式文档.rar" ;//解解乱码this.fileName = new String(this.fileName.getBytes("GBK"),"ISO-8859-1");return ServletActionContext.getServletContext().getResourceAsStream("upload/jd2chm源码生成chm格式文档.rar") ;}elsereturn null ;}@Overridepublic String execute() throws Exception {return SUCCESS;}}
这里要注意路径问题 如果不知道怎么用getResourceAsStream的路径的话 可以用以下这种方法
/upload/jd2chm源码生成chm格式文档.rar    为绝对路径
 File file = new File("/upload/jd2chm源码生成chm格式文档.rar");InputStream is = new FileInputStream(file);return is;
否则会报错
Can not find a java.io.InputStream with the name [downloadFile]

在struts.xml文件中配置相关信息

<struts>      <package name="struts2" extends="struts-default">      <action name="FileDownload" class="com.struts2.filedownload.FileDownload"><result name="success" type="stream"><param name="contentType">text/plain</param><param name="contentDisposition">attachment;fileName="${fileName}"</param><param name="inputName">downloadFile</param><param name="bufferSize">1024</param></result></action></package></struts>

ps

1.结果类型必须要写成 type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

2.涉及到的参数:
1)  <param name="contentDisposition">attachment;fileName="${fileName}"</param>
     contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择
2)  attachment :下载时会打开下载框
3)  fileName="${fileName}" :在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字

4.<param name="inputName">downloadFile</param>,这个downloadFile名字要和FileDownload.java类中的getDownloadFile()方法名去掉get 一致

用于显示下载的链接界面 filedownload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><base href="<%=basePath%>"><title>My JSP 'filedownload.jsp' starting page</title><meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0">    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--></head><body><h2>文件下载内容:</h2><br/>Dream.jpg:<a href="FileDownload.action?number=1">点击下载</a><br/>jd2chm源码生成chm格式文档.rar:<a href="FileDownload.action?number=2">点击下载2</a></body>
</html>

原文链接:

http://blog.csdn.net/hzc543806053/article/details/7538723

java通过struts实现web中的文件下载相关推荐

  1. java通过struts实现web中的文件上传

    单文件上传 fileupload.jsp <%@ page language="java" import="java.util.*" pageEncodi ...

  2. java 问号乱码_Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  3. java 登录下线_java web中Listener的实现(实现用户在线统计数量和强制用户下线)...

    一.实现的具体功能 (1)实现用户在线数量的统计,并显示在页面上. (2)实现强制用户下线的功能.创建一个超链接,用于实现强制用户下线的功能. (3)监听session的创建和销毁. 二.代码实现 ( ...

  4. 一种使用Java的快速将Web中表格转换成Excel的方法

    背景 随着后疫情时代的到来,在过去的2022年,全国的经济情况,想必是很多学者和研究对象都非常关心的事.而这些数据在国家统计局网站上都有相应的记录.通过分析这些数据,可以从某一个角度来验证和观察当下的 ...

  5. java怎么注销cookie_java web中cookie的永久创建与撤销

    标签: 一.首先是创建cookie 当在数据库中查找知道所输入的用户名和密码正确之后,就开始创建: String cb=request.getParameter("cb");//c ...

  6. java cookie 永久_java web中cookie的永久创建与撤销

    一.首先是创建cookie 当在数据库中查找知道所输入的用户名和密码正确之后,就开始创建: String cb=request.getParameter("cb");//cb就是登 ...

  7. Java开发框架——Struts框架

    为了解决这些问题,出现了Struts框架,它是一个完美的MVC实现,它有一个中央控制类(一个Servlet),针对不同的业务,我们需要一个Action类负责页面跳转和后台逻辑运算,一个或几个JSP页面 ...

  8. Java Web学习总结-文件下载

    参考资料:https://www.cnblogs.com/xdp-gacl/p/4200090.html 在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件 ...

  9. JAVA web中的一点东西

    参考文献: http://m.blog.csdn.net/article/details?id=45151569 http://www.cnblogs.com/goody9807/archive/20 ...

最新文章

  1. 腾讯SNG举办TSAIC大会,学术和工业界共话AI前沿趋势
  2. Excel技巧之——英文大小写转换(转)
  3. Python剑指offer:数组中重复的数字
  4. android studio module不识别 红色j,androidstudio 不显示 Module-- 新年第一波
  5. 第一行代码学习笔记第二章——探究活动
  6. 你最想要的圣诞礼物是什么?
  7. POJ - 2175 Evacuation Plan(最小费用最大流+消圈定理)
  8. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...
  9. How to install sharepoint server 2010 sp2 in window 7 x64
  10. python对浏览器的常用操作_selenium+python基本操作(02)
  11. 大地SEO教程学习笔记之八:
  12. python脚本自动运行失败_Linux中定时任务执行python脚本失败的解决方法
  13. GO 语言博客 搬家部署,NGINX作为代理
  14. 苹果mac休眠快捷键_新手小白用苹果电脑搞科研,学会这些才不至于尴尬!
  15. 不骗你,全网首创的超硬核的万字SQL题
  16. summery(一)
  17. java开发必备基础
  18. 达奇机器人不能用电脑编程吗_奇幻工房智能编程机器人达奇dash编程容易学吗?适合几岁小朋友玩?...
  19. 4:3 背景图片素材
  20. 2009年5月30日

热门文章

  1. 程序员读《三体》后看到了什么?
  2. Postgresql13.1增量排序BUG
  3. exlc表格怎么换行_Excel表格如何自动换行
  4. PAT 甲级1116 1117 1118 1119 解题报告
  5. Servlet实例化异常以及tomcat子级启动失败的可能原因
  6. k折交叉验证优缺点_k折交叉验证(R语言)
  7. html js打印页边距,js 设立网页打印的页眉页脚和页边距
  8. 只能写作文?那必须安排一条龙服务[ChatGPT的应用场景初探]
  9. windows查看本机的mac地址
  10. 贪心--CF645E