`

Struts2day04Struts2.0文件的下载

 
阅读更多

1.写一个Action,在DownloadAction extends ActionSuport

package com.jsu.struts2.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class DownloadAction extends ActionSupport{
	private List<String> fileNames;
	private String fname;
	private InputStream downFile;//传给用户的是一个文件流
	/*获得文件夹中的所有文件名称*/
	public String findAll(){
		String path =ServletActionContext.getServletContext().getRealPath("/upload");
		File file  = new File(path);
		File [] files = file.listFiles();
		fileNames = new ArrayList<String>();
		for (File f:files) {
			fileNames.add(f.getName());
		}
		return "list";
	}
	/*执行下载操作*/
	@Override
	public String execute() {
	//获得文件的路径
		String path =ServletActionContext.getServletContext().getRealPath("/upload");
		System.out.println(path);
		String fileRealPath = path+"\\"+fname;
		System.out.println(fileRealPath);
		try {
				downFile = new FileInputStream(fileRealPath);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return "success";
	}
	public List<String> getFileNames() {
		return fileNames;
	}
	public void setFileNames(List<String> fileNames) {
		this.fileNames = fileNames;
	}
	public String getFname() {
		try {
			fname = new String(fname.getBytes(),"ISO-8859-1");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return fname;
	}
	public void setFname(String fname) {
		try {
		//这里编码格式为gbk,在jsp页面的头信息也要设置为gbk
			fname=new String(fname.getBytes("ISO-8859-1"),"gbk");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		this.fname = fname;
	}
	public InputStream getDownFile() {
		return downFile;
	}
	public void setDownFile(InputStream downFile) {
		this.downFile = downFile;
	}
	
	
}

 2.在download.jsp页面

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> </head>
  <body>
  <center>
  <h1>文件下载</h1>
	 <s:iterator var="file" value="fileNames">
	 <a href="down?fname=<s:property value="#file"></s:property>">
	 <s:property value="#file"></s:property></a>
	 </s:iterator>
   </center>
  </body>
</html>

 3.在struts.xml文件配置

<!-- 文件下载 -->
		<action name="down" class="com.jsu.struts2.action.DownloadAction">
		  <result name="list">/download.jsp</result>
		  <!-- 如果Struts2.0框架以流的形式反馈用户的时候,type="stream" -->
		  <result name="success" type="stream">
		    <!-- 指明那个属性是以流的形式反馈 -->
		    <param name="inputName">downFile</param>
		    <!-- 设置缓存区 -->
		    <param name="buffSize">1024</param>
		    <!-- 设置浏览器的打开方式:inline:打开直接显示;
		         attachment:浏览器以附件的形式进行存储
		         filename:文件的名称
		          -->
		    <param name="contentDisposition">attachment;filename=${fname}</param>
		  </result>
		</action>

 4.地址栏访问:http://localhost:8080/struts2_04/down!findAll.action

       注意:upload文件夹下面一定要有文件。

分享到:
评论

相关推荐

    Struts 2.0

    在开始开发Struts 2应用之前,首先需要从Apache官方网站下载Struts 2的发行包,通常推荐下载all包,因为它包含了所有必要的文档、源码、实例和库文件。解压后,可以参考提供的示例程序进行学习,例如`struts2-blank-...

    JavaEE源代码 Struts2.0

    JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0JavaEE源代码 Struts2.0...

    Struts2.0视频教程+struts2.0中文教程

    3. **第一个Struts2应用**:通过创建一个简单的Hello World示例,演示Struts2的配置文件(struts.xml)、Action类、结果视图和JSP页面的编写。 4. **Struts2的MVC模式**:详细解释模型、视图和控制器在Struts2中的...

    struts2核心包源码-2.0.11.2

    4. **版本信息**: 提供的压缩包版本为2.0.11.2,这个版本是在Struts2框架早期的一个稳定版。尽管较新的版本可能包含更多的特性与安全改进,但研究旧版本有助于理解框架的发展历程和基本工作原理。 在深入学习Struts...

    struts-2.0 jarstruts-2.0 jar1

    struts-2.0 jarstruts-2.0 jarstruts-2.0 jarstruts-2.0 jar

    Struts2.0学习系列 以及 Struts2.0安装包

    在安装Struts2.0时,首先需要下载Struts2.0的发行版,例如这里提供的struts-2.0.14。解压后,会得到包括lib目录下的所有依赖库,这些库文件是运行Struts2.0应用程序所必需的。开发者需要将它们添加到项目的类路径中...

    struts-2.0 jarstruts-2.0 jar

    struts-2.0 jarstruts-2.0 jarstruts-2.0 jarstruts-2.0 jar

    struts1.x和struts2.0电子书

    《Struts2.0中文帮助手册.chm》将详细介绍Struts2的API、配置和使用技巧,而《Struts1.2.pdf》则可能包含了Struts1.x的框架原理、开发流程以及案例分析。通过学习这两本书,开发者可以深入理解这两个版本的Struts...

    struts2.0中文教程

    04 在Struts 2.0中国际化(i18n)您的应用程序 05 转换器(Converter)——Struts 2.0中的魔术师 06 在Struts 2.0中实现表单数据校验(Validation) 07 Struts 2的基石——拦截器(Interceptor) 08 在Struts 2中实现...

    struts2_day04讲义.pdf

    传智2016框架视频配套讲义----struts2_day04讲义.pdf ,需要的下载了

    Struts 2.0系列(MAX)

    Struts 2.0系列(MAX),pdf格式,全方位介绍struts2: 常用的Struts 2.0的标志(Tag)介绍 Struts 2.0的Action讲解 在Struts 2.0中国际化(i18n)您的应用程序 转换器(Converter)——Struts 2.0中的魔术师 在Struts ...

    Struts2.0 Jar包

    这个“Struts2.0 Jar包”包含了所有必要的库文件,使得开发者可以便捷地进行Struts2.0的开发工作。 1. **Struts2框架基础**: Struts2是Apache软件基金会的一个开源项目,它是Struts1.x的升级版本,引入了许多改进...

    struts2-spring-plugin-2.0.11.1.jar

    Struts2-Spring-Plugin-2.0.11.1.jar 是一个专门为Apache Struts2框架设计的插件,其主要目的是实现Struts2与Spring框架的集成。这个插件使得开发者能够在Struts2应用中无缝地使用Spring进行依赖注入(Dependency ...

    精通Struts 2:Web 2.0开发实战

    《精通Struts 2:Web 2.0开发实战》这本书是Java Web开发领域的一本经典教程,专注于Struts 2框架的应用与实践。Struts 2作为一款强大的MVC(Model-View-Controller)框架,是Java EE平台上的重要组成部分,它极大地...

    struts2.0源代码

    3. **上传与下载功能**:Struts2提供了一套完整的文件上传和下载机制。在Action中,可以使用`@Params`注解或`File`、`FileName`、`ContentType`参数来处理文件上传。对于文件下载,可以通过设置HTTP响应头信息,如...

    不同版本的 struts2.dtd

    - Struts2 DTD 是XML文档类型定义,它规定了struts2配置文件(如struts.xml或struts-default.xml)的语法和元素。这些元素定义了Action、结果、拦截器等配置,使得开发者可以声明式地配置应用行为。 2. **struts-...

    struts-2.0.11.2-lib

    在这个"struts-2.0.11.2-lib"压缩包中,包含了Struts2.0.11.2版本所需的所有核心库文件,这些文件对于理解和使用Struts2框架至关重要。 1. **Struts2的核心组件**: - `struts2-core.jar`:这是Struts2框架的核心...

    Struts 2.0全攻略之Struts 2.0参考手册

    Struts 2.0的配置信息可以分布在多个XML文件中,如struts.xml、package.xml等。这些文件定义了Action、Action映射、结果类型、拦截器等元素。配置文件支持动态配置,使得配置更加灵活。 5. **拦截器(Interceptors...

    sstruts2.0 struts2.0

    Struts2的安全性是其重要的关注点,比如2.0版本中存在著名的Struts2 S2-005远程代码执行漏洞,需要及时更新框架版本以修复已知的安全问题。 总结来说,Struts2.0是一个功能强大且灵活的Java Web开发框架,其配置...

Global site tag (gtag.js) - Google Analytics