HttpServletResponse对象:
web服务器接收到客户端的HTTP请求,会针对这个请求,分别创建一个代表请求的HttpServletRequest对象,一个代表响应的HttpServletResponse对象;
如果要获取我们客户端请求过来的参数:找HttpServletRequest;
如果要给客户端响应一些信息:找HttpServletResponse;
简单分类:
负责向浏览器发送数据的方法:
ServletOutputStream getOutputStream() throws IOException; PrintWriter getWriter() throws IOException;
负责向浏览器发送响应头的方法:
void setCharacterEncoding(String var1); void setContentLength(int var1); void setContentLengthLong(long var1); void setContentType(String var1); void setDateHeader(String var1, long var2); void addDateHeader(String var1, long var2); void setHeader(String var1, String var2); void addHeader(String var1, String var2); void setIntHeader(String var1, int var2); void addIntHeader(String var1, int var2);
响应的状态码:
int SC_OK = 200; int SC_NOT_FOUND = 404; int SC_INTERNAL_SERVER_ERROR = 500; int SC_BAD_GATEWAY = 502;
常见应用:
向浏览器输出消息;
下载文件;
要获取下载文件的路径;
下载的文件名是什么;
设置让浏览器支持下下载我们需要的东西;
获取下载文件的输入流;
创建缓冲区
获取OutputStream对象;
将FileOutputStream流写入到buffer缓冲区;
使用OutputStream将缓冲区中的数据输出到客户端;
代码案例:
/** * 下载文件 */ public class FileServlet extends HttpServlet { /** * 1. 要获取下载文件的路径; * 2. 下载的文件名是什么; * 3. 设置让浏览器支持下下载我们需要的东西; * 4. 获取下载文件的输入流; * 5. 创建缓冲区 * 6. 获取OutputStream对象; * 7. 将FileOutputStream流写入到buffer缓冲区; * 8. 使用OutputStream将缓冲区中的数据输出到客户端; * * @param req * @param resp * @throws ServletException * @throws IOException */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 要获取下载文件的路径; //String realPath = this.getServletContext().getRealPath("/1.png"); String realPath = "D:\\demo\\1.PNG"; System.out.println("下载文件的路径;"+realPath); //2. 下载的文件名是什么; String fileName = realPath.substring(realPath.lastIndexOf("//") + 1); //3. 设置让浏览器支持下载我们需要的东西 //中文文件名需要使用URLEncoder.encode()编码,否则有可能乱码 resp.setHeader("Content-disposition","attachment;filename="+ URLEncoder.encode(fileName,"UTF-8")); //4. 获取下载文件的输入流; FileInputStream in = new FileInputStream(realPath); //5. 创建缓冲区 int len=0; byte[] buffer = new byte[1024]; //6. 获取OutputStream对象; ServletOutputStream out = resp.getOutputStream(); //7. 将FileOutputStream流写入到buffer缓冲区; //8. 使用OutputStream将缓冲区中的数据输出到客户端; while ((len=in.read(buffer))!=-1){ out.write(buffer,0,len); } out.close(); in.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }