- 浏览: 298816 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
pangxiea_:
你好, 想请问一下 Linux下 这么使用rxtxcomm 在 ...
转载:java串口编程 -
xiang_mr:
多谢啊,有时间再看源码。
解决POI中DateUtil.isCellDateFormatted(Cell cell)不能判断中文日期的问题 -
huiy:
cheetah747 写道所以呢?怎么解决?请网络管理员开放网 ...
apache的ftpClient.listFiles()为空 -
cheetah747:
所以呢?怎么解决?
apache的ftpClient.listFiles()为空 -
huiy:
a8632935 写道感谢楼主的经验分享,问题搞定不客气
解决POI中DateUtil.isCellDateFormatted(Cell cell)不能判断中文日期的问题
原文地址:http://www.blogjava.net/fengzhisha0914/articles/343641.html
文件的下载,需要利用到struts2的Stream结果类型:
首先来看Struts2的返回类型(来自官网).Stream是用来把一个输入流返回到浏览器,这个就是用来文件下载的
Chain Result
Used for Action Chaining
Dispatcher Result
Used for web resource integration, including JSP integration
FreeMarker Result
Used for FreeMarker integration
HttpHeader Result
Used to control special HTTP behaviors
Redirect Result
Used to redirect to another URL (web resource)
Redirect Action Result
Used to redirect to another action mapping
Stream Result
Used to stream an InputStream back to the browser (usually for file downloads)
Velocity Result
Used for Velocity integration
XSL Result
Used for XML/XSLT integration
PlainText Result
Used to display the raw content of a particular page (i.e jsp, HTML)
Tiles Result
Used to provide Tiles integration
Stream结果类的参数(来自官网):
contentType - the stream mime-type as sent to the web browser (default = text/plain). MIME类型(默认是 text / plain)。用来设置HTTP响应里的Content-Type标头
contentLength - the stream length in bytes (the browser displays a progress bar).
字节流的长度(浏览器显示一个进度栏)。用来设置HTTP响应里的Content-Length标头
contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
设置标题为什么文件名(规定文件名=“document.pdf”) 用来设置HTTP响应里的Content-Disposition标头
inputName - the name of the InputStream property from the chained action (default = inputStream).
一个动作类属性的名字,此属性返回的InputStream对象会被发送到浏览器
bufferSize - the size of the buffer to copy from input to output (default = 1024).
缓冲区大小(默认= 1024,单位是字节)。通过InputStream对象读取数据,通过OutputStream对象向浏览器发送数据时的缓冲区的长度
allowCaching if set to 'false' it will set the headers 'Pragma' and 'Cache-Control' to 'no-cahce', and prevent client from caching the content. (default = true)
如果设置为false,它将设置标题语无缓存,防止客户端从缓存读取内容。 (默认= true)
contentCharSet if set to a string, ';charset=value' will be added to the content-type header, where value is the string set. If set to an expression, the result of evaluating the expression will be used. If not set, then no charset will be set on the header
如果设置为一个字符串, charset为设置的字符串,如果没有设置,然后将头没有字符集的设置
e.g:
struts.xml文件内容
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="ViewCss" class="com.download.action.DownLoad">
<result type="stream" name="success">
<!-- Stream返回类型的各项参数 -->
<param name="inputName">inputStream</param>
<param name="contentType">text/css</param>
<param name="contentDisposition">filename="main.css"</param>
<param name="bufferSize">2048</param>
</result>
</action>
<action name="DownloadCss" class="com.download.action.DownLoad">
<result type="stream" name="success">
<param name="inputName">inputStream</param>
<param name="contentType">application/octet-stream</param>
<param name="contentDisposition">filename="main.css"</param>
<param name="bufferSize">2048</param>
</result>
</action>
</package>
</struts>
注意:这两个action的区别就是它们的contentType被设置成不同的值,ViewCss是把文件内容发送到浏览器,DownloacCss是下载文件.
Download.java内容
实现了ServletContextAware接口
package com.download.action;
import java.io.InputStream;
import javax.servlet.ServletContext;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class Download extends ActionSupport implements ServletContextAware{
private String filePath;
private ServletContext servletContext;
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public InputStream getInputStream() throws Exception {
return servletContext.getResourceAsStream(filePath);
}
}
index.jsp内容
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Download</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body>
<div id="global" style="width: 200px">
<s:url id="url1" action="ViewCss">
<s:param name="filePath">css/main.css</s:param>
</s:url>
<s:a href="%{url1}">View CSS</s:a>
<br />
<s:url id="url2" action="DownloadCss">
<s:param name="filePath">css/main.css</s:param>
</s:url>
<s:a href="%{url2}">Download CSS</s:a>
</div>
</body>
</html>
文件的下载,需要利用到struts2的Stream结果类型:
首先来看Struts2的返回类型(来自官网).Stream是用来把一个输入流返回到浏览器,这个就是用来文件下载的
Chain Result
Used for Action Chaining
Dispatcher Result
Used for web resource integration, including JSP integration
FreeMarker Result
Used for FreeMarker integration
HttpHeader Result
Used to control special HTTP behaviors
Redirect Result
Used to redirect to another URL (web resource)
Redirect Action Result
Used to redirect to another action mapping
Stream Result
Used to stream an InputStream back to the browser (usually for file downloads)
Velocity Result
Used for Velocity integration
XSL Result
Used for XML/XSLT integration
PlainText Result
Used to display the raw content of a particular page (i.e jsp, HTML)
Tiles Result
Used to provide Tiles integration
Stream结果类的参数(来自官网):
contentType - the stream mime-type as sent to the web browser (default = text/plain). MIME类型(默认是 text / plain)。用来设置HTTP响应里的Content-Type标头
contentLength - the stream length in bytes (the browser displays a progress bar).
字节流的长度(浏览器显示一个进度栏)。用来设置HTTP响应里的Content-Length标头
contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
设置标题为什么文件名(规定文件名=“document.pdf”) 用来设置HTTP响应里的Content-Disposition标头
inputName - the name of the InputStream property from the chained action (default = inputStream).
一个动作类属性的名字,此属性返回的InputStream对象会被发送到浏览器
bufferSize - the size of the buffer to copy from input to output (default = 1024).
缓冲区大小(默认= 1024,单位是字节)。通过InputStream对象读取数据,通过OutputStream对象向浏览器发送数据时的缓冲区的长度
allowCaching if set to 'false' it will set the headers 'Pragma' and 'Cache-Control' to 'no-cahce', and prevent client from caching the content. (default = true)
如果设置为false,它将设置标题语无缓存,防止客户端从缓存读取内容。 (默认= true)
contentCharSet if set to a string, ';charset=value' will be added to the content-type header, where value is the string set. If set to an expression, the result of evaluating the expression will be used. If not set, then no charset will be set on the header
如果设置为一个字符串, charset为设置的字符串,如果没有设置,然后将头没有字符集的设置
e.g:
struts.xml文件内容
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<action name="ViewCss" class="com.download.action.DownLoad">
<result type="stream" name="success">
<!-- Stream返回类型的各项参数 -->
<param name="inputName">inputStream</param>
<param name="contentType">text/css</param>
<param name="contentDisposition">filename="main.css"</param>
<param name="bufferSize">2048</param>
</result>
</action>
<action name="DownloadCss" class="com.download.action.DownLoad">
<result type="stream" name="success">
<param name="inputName">inputStream</param>
<param name="contentType">application/octet-stream</param>
<param name="contentDisposition">filename="main.css"</param>
<param name="bufferSize">2048</param>
</result>
</action>
</package>
</struts>
注意:这两个action的区别就是它们的contentType被设置成不同的值,ViewCss是把文件内容发送到浏览器,DownloacCss是下载文件.
Download.java内容
实现了ServletContextAware接口
package com.download.action;
import java.io.InputStream;
import javax.servlet.ServletContext;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class Download extends ActionSupport implements ServletContextAware{
private String filePath;
private ServletContext servletContext;
public void setServletContext(ServletContext servletContext) {
this.servletContext = servletContext;
}
public void setFilePath(String filePath) {
this.filePath = filePath;
}
public InputStream getInputStream() throws Exception {
return servletContext.getResourceAsStream(filePath);
}
}
index.jsp内容
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Download</title>
<style type="text/css">@import url(css/main.css);</style>
</head>
<body>
<div id="global" style="width: 200px">
<s:url id="url1" action="ViewCss">
<s:param name="filePath">css/main.css</s:param>
</s:url>
<s:a href="%{url1}">View CSS</s:a>
<br />
<s:url id="url2" action="DownloadCss">
<s:param name="filePath">css/main.css</s:param>
</s:url>
<s:a href="%{url2}">Download CSS</s:a>
</div>
</body>
</html>
发表评论
-
Kafka主要参数详解(转)
2016-02-24 15:35 1283原文档地址:http://kafka.apache.org/d ... -
利用apache的ftpclent实现FTP服务器之间互传
2015-11-26 14:46 2143在项目中遇到需要把一个FTP服务器文件复制到另一个服务器上面, ... -
apache的ftpClient.listFiles()为空
2015-11-25 14:10 2316客户端连接FTP服务器,执行到ftpClient.listFi ... -
org.apache.cxf.interceptor.Fault: Unmarshalling Error
2015-11-14 09:38 5243项目中遇到一个奇怪的问题,webservice客户端代码生成j ... -
java.net.SocketException: Connection reset by peer: socket write error
2015-10-12 16:56 1587下载文件时发生错误: java.net.SocketExce ... -
转: sql server 判断是否存在数据库,表,列,视图...
2015-09-29 09:34 872转载地址:http://blog.csdn.net/w ... -
转:Oracle判断表、列、主键是否存在的方法
2015-09-29 09:29 2474转载地址:http://blog.csdn.net/wxd ... -
RmsBulk.exe使用注意事项
2015-08-12 15:38 11421.首先确保office软件能否正常的进行RMS加解密 ... -
客户端RMS解密:此服务暂时不可用。请确认已连接此服务器。。。
2015-08-07 12:03 3584测试ADRMS时,客户端设置权限是提示错误::“此服务暂时不 ... -
RMS:不能对生产服务器使用测试清单
2015-08-07 12:00 2998问题说明:在使用office软件RMS加密时报:不能对生产服 ... -
客户端在非域环境下打开RMS加密后的文件
2015-08-06 18:24 2869如果客户端office不能打开,请依照以下执行: 1.确 ... -
RMS安装注意事项
2015-08-06 18:13 733----第一次安装 1.安装时RMS服务器和DC服务器最 ... -
oracle:比较两个用户下表结构差异
2015-07-10 20:48 1630问题说明:现有oracle11g,需要比较这其中两个用户A ... -
linux中tomcat日志乱码,XML读取显示乱码
2015-07-09 17:15 2173环境:centos6.5,tomcat7,jdk1.6, ... -
http文件下载注意事项
2015-05-05 16:04 536今天使用http下载文件,链接是:http://*.*.*.* ... -
<s:select>标签中再使用表达式访问变量
2014-11-05 22:43 808<s:iterator value="li ... -
eclipse debug调试报错
2014-11-05 15:25 1424FATAL ERROR in native meth ... -
linux:用户不在sudoers列表中
2014-10-23 14:19 1535原文地址:http://jingyan.baidu.com/a ... -
logback日志不能输出到文件
2014-10-08 21:39 25828今天发现在一个工程中logback不能输出日志到文件,只有在控 ... -
转载:spring资源占位PropertyPlaceholderConfigurer读取文件中文乱码
2014-10-04 10:17 3498引用原文地址:http://yourwafer.blog.16 ...
相关推荐
在这个“Struts2实现文件下载功能”的示例中,我们将深入探讨如何利用Struts2框架来实现在web应用中让用户下载文件的功能。 首先,我们需要理解文件下载的基本原理。在Web应用中,当用户点击一个链接或提交一个表单...
### Struts2 使用注解(Annotation)实现文件下载 在Web开发中,文件上传与下载是常见的需求之一。Struts2框架提供了强大的功能来支持这一需求。本文将详细介绍如何使用Struts2框架结合注解(Annotation)的方式...
Struts2是一个基于MVC(Model-View-...开发过程中,还需要理解并掌握Action、拦截器、结果类型等核心概念,以及如何利用配置文件进行定制化设置。同时,合理利用插件和第三方库,可以进一步提升开发效率和应用性能。
在Struts2的配置文件(通常是struts.xml)中,我们需要为上传操作定义一个Action,并配置对应的Result类型,通常使用`stream`结果类型来处理文件流。 4. **文件存储** 上传的文件需要存储在服务器的某个位置。你...
通过配置Action类的结果,我们可以直接利用这个结果类型来处理文件下载,如: ```xml <result type="stream"> <param name="inputName">fileInputStream ${contentType} <param name="contentDisposition">...
7. **结果类型**:Struts2支持多种结果类型,如dispatcher(用于转发到JSP页面)、stream(用于处理文件下载)、freemarker或velocity(用于模板引擎渲染)等。开发者可以根据需要选择或自定义结果类型。 8. **国际...
在实现过程中,可以利用Struts2提供的`StrutsResult`来简化文件下载的处理,例如使用`stream`结果类型,它可以自动处理文件流的读取和发送。 最后,`UpAndDownLoad.zip`可能包含了示例代码、配置文件和其他相关资源...
Struts2支持多种内置结果类型,如`dispatcher`(默认的,用于转发到JSP)、`stream`(用于处理文件下载)和`redirectAction`(用于重定向到另一个Action)。每个结果类型都有其特定的配置方式来传递参数。 1. **在...
### Struts2文件上传与下载教程 #### 一、文件上传原理及实现 ...以上步骤详细介绍了如何利用Struts2框架实现文件的上传和下载功能。这些技巧不仅提高了系统的可用性和安全性,还增强了用户体验。
总结来说,"Struts2实现的文件上传与下载"是一个涵盖Web应用基本功能的项目,它展示了如何利用Struts2框架处理文件交互。通过学习这个项目,开发者可以掌握Struts2在文件上传和下载场景中的应用,进一步提升Java web...
常见的结果类型有`dispatcher`(用于转发到JSP页面)、`redirect`(用于重定向URL)和`stream`(用于处理文件下载)等。 5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,它用于...
在"struts2上传下载项目"中,我们可以深入理解如何利用Struts2实现文件的上传与下载功能。 首先,上传功能在Web应用中十分常见,比如用户在注册时上传头像,或者提交文档等。在Struts2中,我们主要借助`struts2-...
2. **Result类型**:Struts2允许开发者定义多种结果类型,如Redirect、RedirectAction、Stream等,来控制请求的流向和响应的生成方式。 3. **Interceptor拦截器**:拦截器是Struts2的特色之一,它们在Action执行...
- `type="stream"`:指示Struts2将结果作为流处理,适合于文件下载。 - `inputPath`:从Action中获取文件的输入路径,这里使用了OGNL表达式`${inputPath}`来引用Action的属性。 - `contentType`:指定文件的MIME类型...
本篇文章将详细讲解如何利用Struts2.2和Hibernate3.6实现文件的上传与动态下载。 **一、文件上传** 1. **环境配置**:首先,你需要一个集成开发环境,例如MyEclipse8.6,并安装所需的Struts2.21、JUnit4.8.2以及...
Struts2中预定义了一些结果类型,例如dispatcher(用于转发到一个JSP页面)、stream(用于流式传输文件)和redirect(用于重定向到另一个URL)。XSLTResult是其中之一,它专门用于处理XML数据的转换。 要使用XSLT...
5. **结果类型与视图解析**:Struts 2支持多种结果类型,如dispatcher(用于转发到JSP)、stream(用于下载文件)等。结果类型定义了Action执行后的跳转方式。视图通常是JSP页面,通过OGNL(Object-Graph Navigation...
3. **结果类型(Result Types)**:Struts2支持多种结果类型,如dispatcher(转发到一个JSP页面)、stream(用于文件下载)、redirect(重定向URL)等,开发者可以根据需要选择合适的结果类型。 4. **OGNL(Object-...
4. **stream**:这个结果类型用于处理大文件下载或流式内容。它允许我们直接从Action返回字节流,而不会加载整个内容到内存。 5. **freemarker** 或 **velocity**:这些结果类型用于集成FreeMarker或Velocity模板...
常见的结果类型有`dispatcher`(用于转发到JSP页面)、`redirect`(重定向到新的URL)和`stream`(用于处理文件下载)。 5. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为默认表达式语言,...