this.getServletContext().getResourceAsStream问题

问题描述

小弟初学java,在对着孙卫琴的书练的时候,有这么段程序(片段)InputStreamin=this.getServletContext().getResourceAsStream(filename);if(in==null){PrintWritererr=response.getWriter();err.println("filenameError:"+filename);err.close();return;}

本来的意思是,在url里面带上filename参数就把对应的磁盘文件下载下来,比如http://localhost:8080/javaweb001/Download?filename=/WEB-INF/web.xml这个就是成功的但是http://localhost:8080/javaweb001/Download?filename=/WEB-INF/test.zip就失败了已经确定把test.zip放入WEB-INF目录下面了,并且换成其他的目录页不行,比如http://localhost:8080/javaweb001/Download?filename=/files/test.zip这是怎么回事?对了,是在Eclipse里面调试的,而且我还发现,我修改web.xml后直接下载还是修改前的,一定要重启tomcat后才生效

解决方案

本帖最后由 u012272641 于 2014-08-12 15:10:53 编辑
解决方案二:
失败了指的是什么。是不是因为字符流的问题。你可以不用字符流,全部用字节流试试。因为zip文件不同于xml文件,xml文件可以用字符流,但是zip文件却不可以。

时间: 2024-09-09 03:43:43

this.getServletContext().getResourceAsStream问题的相关文章

struts2 下载文件

服务端action代码  public String downloadReport() {    try {    String path = new String(filePath.getBytes("ISO-8859-1"),"utf-8");//处理get请求传过来的中文参数乱码,filePath文件路径需要set方法接收页面参数   System.out.println(path);   //输入流(相对于浏览器是输入流,服务器是输出流)   inputSt

JavaWeb:Http协议你真的懂吗

一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程.客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式. 二.HTTP协议的版本 HTTP协议的版本:HTTP/1.0.HTTP/1.1 三.HTTP1.0和HTTP1.1的区别 在HTTP1.0协议中,客户端

使用XML创建 EMAIL 模板

xml|创建|模板 发送邮件是web应用系统的一个基本功能.一般来说,邮件都有特定的类型,比如说密码提醒,欢迎信息,订单确认或者收信确认.尽管不同应用邮件的内容各不相同,但是发送邮件的过程基本上是一样的. 构建消息,发送给邮件服务器,发送. 当使用java开发的时候,我们常常使用JavaMail API 来连接邮件服务器发送邮件.但是这种方式过于笨重(主要由邮件的灵活性造成的),所以当你需要多次使用这种方式发送邮件的时候,最好写一个wrapper.根据使用的方式不同,wrapper可以是发送某一

利用Struts2 实现文件下载

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dba10g.blog.51cto.com/764602/851613   需求如下: 进来项目中需要添加文件下载Excel功能;决定使用Struts2自带的文件下载功能 减轻工作量,提高工作效率,不需要再写常常的Header头了 要求不需要生成中间文件 Java Code /*  * $Id: FileDownloadAction.java 496318 2007-01-15

[Servlet&JSP] HttpServletResponse的使用

使用HttpServletResponse可以对浏览器进行响应.大部分情况下,可以使用setContentType()设置响应类型,使用getWriter()取得PrintWriter对象,而后使用PrintWriter对象的println()等方法输出HTML内容. 还可以进一步使用setHeader().addHeader()等方法进行响应标头的设置,或者是使用sendRedirect().sendError()方法,对客户端要求重定向网页,或是传送错误消息状态.也可以使用getOutput

Struts2文件下载

<struts> <package name="default" extends="struts-default"> <action name="download" class="action.DownloadAction"> <result type="stream"> <param name="contentType">ap

【JSP开发】用ServletContext读取资源文件

两种读取资源文件的方法. db.properties文件中放了三个参数,分别是url.username和password信息. 测试代码: package cn.edu; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.Properties; import javax.servle

Struts 框架 之 文件上传下载案例

Struts 框架 文件上传 1. 先准备 Struts 环境 (我使用的是struts 2.3.4版本) 导jar包:   jar包的具体作用在前面的文章有讲. 配置 web.xml <!-- Struts核心拦截器 --> <filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepare

[Servlet&amp;amp;JSP] 封装器的使用

过滤器可以在执行Servlet的service()方法前后,进行前置和后置处理.但是有些信息无法更改,例如请求参数.使用请求封装器及相应封装器,将容器产生的请求与相应对象加以封装,可以针对某个请求信息或响应进行加工处理. 请求封装器 HttpServletRequestWrapper实现了HttpServletRequest接口,以下范例通过继承HttpServletRequestWrapper实现了一个请求封装器,可以请请求参数中的角括号替换为替代字符. import java.util.It