java Servlet api 文件下载

1 篇文章 0 订阅
1 篇文章 0 订阅
  1. DownloadAction.java
/**
 * 
 */
package com.igeek.download;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

import org.apache.struts2.ServletActionContext;

import com.igeek.utils.FileUtils;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author Administrator
 *
 */
public class DownloadAction extends ActionSupport {

	
	@Override
	public String execute() throws Exception {
		//指定下载路径:
		String path = "d://";
		String fileName = "你好.txt";
		//获取两头一流
		String contentType = ServletActionContext.getServletContext().getMimeType(fileName);
		//获取输入流
		InputStream inputStream = new FileInputStream(new File(path + fileName));
		//content-disposition
		//处理文件名的中文乱码问题
		String agent = ServletActionContext.getRequest().getHeader("user-agent");
		fileName = FileUtils.encodeDownloadFileName(fileName,agent);
		String contentDisposition = "attachment;filename=" + fileName;
		//将上面的三个信息放入值栈(容器)
		ActionContext.getContext().put("contentType", contentType);
		ActionContext.getContext().put("inputStream", inputStream);
		ActionContext.getContext().put("contentDisposition", contentDisposition);
		return SUCCESS;
	}
	
}

FileUtils.java

/**
 * 
 */
package com.igeek.utils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import sun.misc.BASE64Encoder;

/**
 * @author Administrator
 *处理中文乱码问题
 */
public class FileUtils {

	/***
	 * 下载文件时,针对不同的浏览器,进行附件名的编码
	 * @param filename 下载的文件名
	 * @param agent 客户端浏览器
	 * @return 编码后的附件名
	 * @throws IOException 
	 */
	public static String encodeDownloadFileName(String filename,String agent) throws IOException
	{
		if(agent.contains("Firefox")) //火狐浏览器
		{
			filename = "?UTF-8?B?"
					+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
					+ "?=";
			filename = filename.replaceAll("\r\n", "");
		}
		else //IE 及其它浏览器
		{
			filename = URLEncoder.encode(filename,"utf-8");
			filename = filename.replace("+", " ");
		}
		return filename;
	}
	
	
}

strtus.xml

<package name="default" extends="struts-default" namespace="/">
	<action name="download" class="com.igeek.download.DownloadAction">
			<!-- 使用strtus2提供的下载功能,需要配置结果集 -->
			<result type="stream"></result>
	 		
		</action>
		</package>

访问路径
http://localhost:8080/工程名/download.action
就可以下载我们指定路径中 你好.txt 中的文件啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:下文中的 *** 代表文件名中的版本号。 # 【javax.servlet-api-***.jar中文文档.zip】 中包含: 中文文档:【javax.servlet-api-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【javax.servlet-api-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【javax.servlet-api-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【javax.servlet-api-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【javax.servlet-api-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【javax.servlet-api-***.jar中文文档.zip】,再解压其中的 【javax.servlet-api-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'javax.servlet', name: 'javax.servlet-api', version: '***' Gradle (Short): implementation 'javax.servlet:javax.servlet-api:***' Gradle (Kotlin): implementation("javax.servlet:javax.servlet-api:***") ``` # 含有的 Java package(包): ``` javax.servlet javax.servlet.annotation javax.servlet.descriptor javax.servlet.http ``` # 含有的 Java class(类)(此处仅列举3个): ``` javax.servlet.AsyncContext javax.servlet.AsyncEvent javax.servlet.AsyncListener ...... ```
### 回答1: Java Servlet API.jar是Java Servlet API的一个JAR文件,其中包含了Java Servlet API的所有类和接口。Java Servlet APIJava EE平台的一部分,它提供了一种标准的方式来开发基于Java的Web应用程序。通过使用Java Servlet API,开发人员可以轻松地创建Web应用程序,并将其部署到任何支持Java的Web服务器上。Java Servlet API.jar是开发Java Web应用程序所必需的一个JAR文件。 ### 回答2: Java ServletJava Web开发中的一个重要组件,是用于处理HTTP请求和响应的Java类库。而Servlet API是一组接口和类的集合,它定义了Servlet的规范和使用方式。 servlet-api.jar是包含了所有Servlet API的JAR文件。在使用Java开发Web应用程序时,我们需要使用Servlet API提供的接口和类来开发Servlet,处理HTTP请求和生成HTTP响应。 servlet-api.jar中包含了javax.servletjavax.servlet.http包的类和接口,这些包提供了Servlet开发所需的核心功能。例如,javax.servlet包中的Servlet接口定义了Servlet应该实现的方法,如init()、service()和destroy()等。而javax.servlet.http包则提供了HttpServlet类,可以继承这个类来实现处理HTTP请求的Servlet。 为了使用servlet-api.jar,我们需要将它添加到我们的项目的类路径中。具体的做法是将servlet-api.jar文件拷贝到项目的WEB-INF/lib目录下,或者将它作为依赖项添加到我们使用的构建工具(如Maven或Gradle)的配置文件中。 在使用servlet-api.jar后,我们可以在我们的项目中创建和使用Servlet类,处理HTTP请求和生成HTTP响应。通过在web.xml文件中配置Servlet的映射关系,我们可以将特定URL请求交给相应的Servlet进行处理。 总结一下,servlet-api.jar是Java Servlet API的JAR文件,它提供了Servlet开发所需的接口和类。通过使用servlet-api.jar,我们可以方便地开发和部署Servlet应用程序,实现对HTTP请求和响应的处理。 ### 回答3: Java Servlet API是由Java提供的一种用于开发web应用程序的技术。它是在JavaEE(Java Enterprise Edition)规范中定义的,主要用于处理服务器端的HTTP请求和响应。 ServletJava编写的服务器端组件,与传统的CGI(Common Gateway Interface)脚本相比,具有更高的性能和可靠性。它可以在服务器端实时处理客户端发起的请求,并生成相应的响应。 Servlet API是一套接口和类的集合,其中包含了一系列用于处理与HTTP请求和响应相关的方法和工具。这些方法和工具可以让开发者方便地处理用户请求、读取请求参数、设置响应头和编写响应内容等操作。 API.jar文件是包含Servlet API相关类和接口的Java归档文件。它可以被添加到Java项目的依赖中,以便在项目中使用Servlet API提供的功能。开发者可以通过导入API.jar文件,来使用其中的类和接口,以实现web应用程序的开发和部署。 使用Servlet API,开发者可以通过扩展Servlet类或实现Servlet接口,来创建自己的Servlet组件。通过重写Servlet接口中的方法,可以实现对HTTP请求和响应的处理、会话管理、跨域请求等功能。 总之,Java Servlet API是一种用于处理web应用程序的技术,它提供了一套接口和类,用于方便地处理HTTP请求和响应。API.jar文件则是包含了Servlet API相关类和接口的Java归档文件,可以被导入到Java项目中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值