Web学习历程记录(九)
案例一:完成文件下载
HttpServletReaponse概述
在Servlet API中,定义了一个HttpServletReaponse接口,它继承自SeveletResponse接口,专门用来封装HTTP响应消息
Http响应消息分为响应行,响应消息头,消息体三部分
对应的在该接口中定义了向客户端发送响应状态码、响应头、响应体的方法
操作响应三部分
操作响应行
一般是第一行
常用的状态码:
200:成功
302:重定向
304:访问缓存
404:客户端错误
500:服务器错误
操作响应头
一个key可以对应多个value,也可以对应一个value
掌握的方法:setHeader(String key,String value)
常用的响应头:
Refresh:定时跳动
Location:重定向
Content-Disposition:设置文件下载时候的头
Content-Type:设置响应内容的MIME类型
响应体
文件下载方式
第一种:超链接方式
直接将服务器上的文件的路径写到href属性中,如果浏览器不支持该格式文件,那么就会提示进行下载,如果浏览器支持这个格式的文件,那么直接打开,不再下载了
第二种:手动编码方式
手动编码实现下载,无论浏览器是否识别该格式,都会下载
手动编码格式要求
设置两个头和一个流
两个头:
Content-Dispostion:浏览器识别该格式文件,提示浏览器下载
Content-Type:文件类型(MIME类型)
一个流:
获得要下载的文件的输入流
import sun.misc.BASE64Encoder;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
@WebServlet("/downloadServletDemo01")
public class DownloadServletDemo01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String fileName