`
TechBirds
  • 浏览: 82320 次
文章分类
社区版块
存档分类
最新评论

Struts2和Servlet下载文件的区别

 
阅读更多

不得不说使用了struts2,在下载文件时变得非常方便,不需要像servlet那样一个读流,一个写流,虽然就几行代码。但相比struts2还是弱爆了。

不过话说回来,框架倒是给你省了不少事,但掌握servlet的下载方式还是非常重要的,毕竟是根本的东西。

1.Servlet下载简单代码

protected void service(HttpServletRequest req, HttpServletResponse resp)
 			throws ServletException, IOException {
 		resp.setHeader("Cache-Control", "no-cache");
 		resp.setContentType("application/vnd.ms-excel");
 		resp.setHeader("Content-Disposition", "attachment; filename=file.xls");
 		OutputStream os = resp.getOutputStream();
 		FileInputStream in = new FileInputStream(new File("xxxxx"));
 		int n = 0;// 每次读取的字节长度
 		byte[] bb = new byte[1024];// 存储每次读取的内容
 		while ((n = in.read(bb)) != -1) {
 			os.write(bb, 0, n);// 将读取的内容,写入到输出流当中
 		}
 		os.close();// 关闭输入输出流
 		in.close();
 	}

2.Stuts2下载简单代码

public class TestAction {
 	private InputStream excelStream;
 	private String filename;
 	
 	/**
 	 * 物理存在的excel文件
 	 * @return
 	 * @throws UnsupportedEncodingException
 	 */
 	public String down() throws UnsupportedEncodingException{
 		File file = new File(
 			"xxxx");//文件路径
 		try {
 			excelStream=new FileInputStream(file);
 			filename=new String("真实excel文件".getBytes("UTF-8"),"ISO8859-1");
 		} catch (FileNotFoundException e) {
 			e.printStackTrace();
 		}
 		return "success";
 	}
 	/**
 	 * @return the excelStream
 	 */
 	public InputStream getExcelStream() {
 		return excelStream;
 	}
 
 	/**
 	 * @param excelStream the excelStream to set
 	 */
 	public void setExcelStream(InputStream excelStream) {
 		this.excelStream = excelStream;
 	}
 
 	/**
 	 * @return the filename
 	 */
 	public String getFilename() {
 		return filename;
 	}
 
 	/**
 	 * @param filename the filename to set
 	 */
 	public void setFilename(String filename) {
 		this.filename = filename;
 	}
 	
 }
struts.xml配置文件:
<action name="down" class="com.techbirds.action.TestAction" method="down">
 	<result name="success" type="stream">
 		<param name="contentType">application/vnd.ms-excel   </param>
 		<param name="inputName">excelStream</param>
 		<param name="contentDisposition">filename="${filename}.xls"   </param>
 		<param name="bufferSize">1024</param>
 	</result>
 </action>


总结:相比之前,struts2明显比较简单,除了一堆配置(固定的),还是简单总结下,servlet需要流之间的转换而struts2直接获取输入流便可。


3.ajax无法下载文件,替换window.location.href方式下载

误区:导致页面跳转....,理解不深。。



分享到:
评论

相关推荐

    Struts2之Servlet文件上传详解案例struts010

    参考博文:http://blog.csdn.net/u011638419/article/details/41642773

    Struts 2中文帮助文档

    Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    struts2学习文档

    Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts2以WebWork为核心,采用拦截器的机制来处理...

    xdoclet1 xdoclet1 spring3.0.5、struts1.3、struts2.1、 servlet

    其中包括xdoclet2与hibernate3.6的整合xdoclet1.2.3分别与spring3.0.5、struts1.3、struts2.1、 servlet的整合配置。其中还有相应的.xdt文件模板,其中struts2.1.xdt为自己写的。 需要xdoclet1.2.3 ...

    Servlet简单模拟Struts2

    用sevrlet模拟Struts2的简单功能。从拦截请求、解析自定义xml数据文件以及动态生成action的代理去执行目标方法,并实现了简单的日志拦截【interceptor】

    struts1和struts2区别

    不同点 Action 类 线程模式 Servlet 依赖 可测性 捕获输入 表达式语言 绑定值到页面(view) 类型转换 校验 Action执行的控制 文档更详细……

    struts2.1.8学习

    、Struts2 主要几句话: 1、Struts2 是由webwork2 发展来的而非Struts1,相比Struts1,Struts2 编码规范跟类似与webwork2 ...8、Struts2 提供了全局范围、包范围和Action 范围的国际化资源文件管理实现

    Struts2教程

    由于 MyEclipse6 目前并不支持 Struts2 ,所以我们需要到 struts.apache.org 去下载 Struts 2 安装包。要想正常使用 Struts2 ,至少需要如下五个包(可能会因为 Struts2 的版本不同,包 名略有差异,但包名的前半部...

    Struts2属性文件详解

    Struts2属性文件详解 struts.configuration 该属性指定加载Struts 2配置文件的配置文件管理器.该属性的默认值是org.apache.Struts2.config.DefaultConfiguration, 这是Struts 2默认的配置文件管理器.如果需要实现...

    03解决struts2配置文件无提示问题

    Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    Struts2.zip帮助文档

    Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    struts2 学习及讲解文档完美版

    Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理...

    struts 2.2 api文档

    最新版struts2帮助文档 软件包分层结构: org.apache.struts2, org.apache.struts2.components, org.apache.struts2.components.template, org.apache.struts2.config, org.apache.struts2.dispatcher, org.apache....

    struts2_mybatis_spring_框架实例整合_数据库 文档

    struts2_mybatis_spring_框架整合实例_数据库 源码中包括数据库文件 文档介绍

    Struts2入门教程(全新完整版)

    十二、总结 本教程对struts2的基本知识进行了一些说明,关于struts2的更多详细内容应参看struts2的官方文档及提供的app实例。 下面对struts2的基本执行流程作一简要说明,此流程说明可以结合官方提供的struts2结构图...

    struts2自定义标签案例详解

    这里在实现自定义标签时,继承的2个类分别是org.apache.struts2.views.jsp.ComponentTagSupport和org.apache.struts2.components.Component,ComponentTagSupport实际上是对BodyTagSupport的一次封装,看一下...

    struts2-jsondemo

    struts2和json的数据交互。包括json在jsp,servlet,action中的使用。

    struts2总结第一章

    a) Struts2是以web work优秀的设计思想为核心,吸收了struts1的部分优点,建立了一个基于webwork和struts1的MVC框架。 二、 优点: a) 结构清晰,使开发者只关注业务逻辑实现即可。 b) 提供了丰富的标签,大大提高了...

    让Struts2直接支持浏览FreeMarker的FTL文件

    这个文件是我从Struts2老版本中摘出来的FreemarkerServlet,将其加入到项目中,然后在web.xml中增加下面的代码即可。 &lt;!-- FreeMarker Servlet --&gt; &lt;servlet&gt; &lt;servlet-name&gt;freemarker&lt;/servlet-name&gt; ...

    struts2学习笔记

    Struts2环境搭建 Struts2类型转换 Struts2输入校验 拦截器 文件的上传与下载 Struts2的国际化 深入探析 struts2与servlet API耦合方法

Global site tag (gtag.js) - Google Analytics