遇到这个问题的人很多,大致情形如下:
1. 客户端向servlet请求一个 .xls 文件的下载;
2. servlet正确响应,向客户端提供一个输出流;
3. 客户端浏览器接收输出流,自动调用Office-Excel软件的浏览器插件在浏览器窗口里直接打开这个.xls 文件,用户无法控制“另存为”。
网上搜了很多帖子和文章,基本都没有说到点子上。有人就此提问,下面跟帖的就七嘴八舌地争论应该set什么content-type,也就是response.setContentType("xxx");。其实这些都是没用的,无论xxx设成什么,浏览器想怎么干还是怎么干,关键在哪儿呢?这是我找到的一个帖子,楼主遇到同样的问题并已经给出了正确的代码,但显然他并不清楚到底正确在哪里,属于典型瞎猫撞到死耗子:
http://www.cjsdn.net/post/view?bid=2&id=5367&sty=3&tpg=127&age=0
关键在哪里呢?请注意这一行:
response.addHeader("Content-Disposition", "attachment; filename=" + response.encodeURL(downloadfile));
注意到第一个值项是attachment,这是真正的关键,设定了这个值,浏览器就会老老实实地显示另存为对话框,如果这个值设成inline,则无论怎样浏览器都会自动尝试用已知关联的程序打开文件。
分享到:
相关推荐
- 客户端浏览器接收到响应后,通常会自动打开一个新窗口或标签页显示PDF,用户可以进行预览和打印操作。 4. **MyJasperReportWebPrint项目结构** - 该项目可能包含以下关键部分: - `web.xml`配置文件:定义...
总结,Servlet文件上传和下载是Java Web开发中必不可少的功能。理解和熟练掌握这些技术,有助于构建更健壮、安全的Web应用程序。在实际应用中,结合最佳实践和安全措施,可以确保系统的稳定性和用户数据的安全。
在IT行业中,自动生成静态网页技术与Servlet的结合使用是一种高效的方法,特别是在处理高并发访问和提高网站性能时。Servlet是Java服务器端编程的一个重要组件,它允许开发者创建动态、交互式的Web应用。本篇文章将...
2. **设置响应头**:在Servlet中,使用`HttpServletResponse`设置响应头,包括Content-Disposition(指定文件名,浏览器将自动弹出保存对话框),Content-Type(指定文件的MIME类型)和Content-Length(文件大小)。...
HTTP-FLV协议允许服务器推送视频流到客户端,如Web浏览器中的Flash Player插件,实现实时传输,而无需用户进行任何下载操作。 二、Tomcat服务器 Tomcat是一个开源的、基于Java的Web应用服务器,广泛用于小型到中型...
5. **触发下载**:客户端接收到响应后,浏览器会自动触发文件下载。 **文件打开** 文件打开通常涉及在服务器端或客户端打开一个文件。在Struts中,这可能需要使用重定向或JavaScript来实现: 1. **服务器端打开**...
在Java Web开发中,"Ajax + Servlet 实现搜索提示列表效果"是一个常见的需求,它能够提升用户在输入查询时的体验。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页...
2. **设置Content-Disposition**:为了避免浏览器自动打开文件,你可以设置`setContentDisposition(null)`,这样文件将以下载方式提供给用户。 ```java su.setContentDisposition(null); ``` 3. **下载文件**:...
在Java Web开发中,实现一个具有“记住我”功能的登录页面是一项常见的需求。这个功能允许用户在选择“记住用户名和密码”后,下一次访问网站时,系统能自动填充登录表单,提供便捷的用户体验。这个过程涉及到浏览器...
为了避免每次修改Servlet代码后都需要重启Tomcat服务器,可以通过修改`context.xml`文件来实现自动部署更新。具体操作步骤如下: 1. 打开Tomcat安装目录下的`conf/context.xml`文件。 2. 在`<Context>`标签内添加`...
- 这样设置后,浏览器将自动使用GBK编码来解码URL中的中文字符,从而避免乱码问题。 - **验证方法**:更改前,在IE浏览器中,选择“查看 | 编码”,可以看到“西欧(ISO)”被选中;更改后,“简体中文(GB2312)”将...
2. 设置响应头:在Servlet或JSP中,使用`HttpServletResponse`设置响应头,包括`Content-Type`(文件类型)、`Content-Disposition`(定义如何打开文件,通常为"attachment; filename=文件名",提示浏览器以附件形式...
- **自动部署**: 使用 Eclipse 或其他 IDE 自动部署应用。 **2.5 总结** Tomcat 作为一款轻量级的 Java Web 服务器,不仅安装配置简单,而且具有良好的性能和稳定性,是学习和开发 JSP 和 Servlet 的理想选择。 #...
2. **读取文件**:使用`FileInputStream`打开文件并读取其内容,然后通过`ServletOutputStream`写入HTTP响应的输出流。 3. **响应发送**:完成文件读取后,发送响应,客户端会自动开始下载。 在描述中提到的"一个...
- **读取文件**:使用`FileInputStream`打开文件并读取其内容,然后将其写入到`HttpServletResponse`的输出流中。 - **断点续传**:为了支持断点续传,需要在HTTP头中添加`Accept-Ranges`和`Content-Length`信息,...
在Java编程中,实现文件的上传与下载是常见的需求,特别是在Web应用中。Struts是一个流行的MVC(Model-View-Controller)框架,它为Java应用程序提供了强大的控制层支持。本篇文章将深入探讨如何利用Java和Struts...
- `Content-Disposition`用于指示浏览器如何处理响应数据,`attachment`表示应提示用户下载文件,而`inline`则表示应在浏览器内直接打开文件。 ### 三、导出word文件 在导出word文件时,除了设置正确的`Content-...
- 浏览器自动打开,显示项目首页。 #### 四、数据库操作 - **配置 MySQL 服务器**: - 安装 MySQL Server。 - 设置 MySQL 服务属性,如端口号等。 - **启动 MySQL 服务器**: - 使用命令行工具启动 MySQL 服务...
作为一款轻量级应用服务器,Tomcat8.0在性能和稳定性上都有显著提升,并且它是Servlet、JSP和Java EE Web应用程序的标准实现。 【描述】:“tomcat容器,8.0.51版本 windows使用tomcat容器,8.0.51版本 windows使用...
- **定义**:Cookie是由服务器端发送到浏览器的一小段文本信息,浏览器在后续请求中会自动携带回服务器。 - **用途**:主要用于保持用户的登录状态、存储用户设置、跟踪浏览行为等。 - **生命周期**:默认情况下...