1. HttpServletResponse
-
服务器接收到客户端的http请求,针对这个请求,服务端会分别创建一个HttpServletResponse和一个HttpServletRequest对象,
- 想要获得客户端请求来的参数即找到HttpServletRequest对象
- 想要获得服务器端响应的数据就得看HttpServletResponse对象
-
源码分类
-
负责向浏览器发送数据的方法
ServletOutputStream getOutputStream() throws IOException;平常流使用这个, PrintWriter getWriter() throws IOException; 一般而言写中文流使用这个,如果使用其写平常流,会造成字符串丢失
-
负责向浏览器发送一些响应头的
//来自于接口ServletResponse void setCharacterEncoding(String var1); void setContentLength(int var1); void setContentLengthLong(long var1); void setContentType(String var1); //来自于类HttpServletResponse 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_MULTIPLE_CHOICES = 300; int SC_NOT_FOUND = 404; int SC_INTERNAL_SERVER_ERROR = 500; int SC_BAD_GATEWAY = 502;
-
-
常见应用
-
向浏览器展示输出信息
-
下载文件(下载步骤)
- 要获取下载文件的路径
- 下载文件的文件名
- 设置让浏览器能支持我们下载的东西
- 获取文件的输入流
- 创建缓冲区
- 获取OutputStream对象
- 将文件FileOutputStream流写入到buffer缓冲区
- 将缓冲区OUtputStream中的数据输出到客户端
以下为实现文件下载的源码
public class HttpServletResponsedeo extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1. 要获取下载文件的路径 // String realPath = this.getServletContext().getRealPath("/1.png"); String realPath = "E:\\WorkSpaceIdea\\javaweb-01-servlet\\servlet-demo-02\\src\\main\\resources\\1.png"; System.out.println("下载的文件路径:"+realPath); //E:\WorkSpaceIdea\javaweb-01-servlet\servlet-demo-02\src\main\resources\1.png //2. 下载文件的文件名 String fileName = realPath.substring(realPath.lastIndexOf("\\")+1); //3. 设置让浏览器能支持我们下载的东西涉及到resp resp.setHeader("Content-disposition","attachent;fileName="+fileName); //4. 获取文件的输入流 FileInputStream in = new FileInputStream(realPath); //5. 创建缓冲区 int len = 0; byte[] buffer = new byte[1024]; //6. 获取OutputStream对象 ServletOutputStream out = resp.getOutputStream(); //7. 将文件FileOutputStream流写入到buffer缓冲区 while((len = in.read(buffer)) > 0){ out.write(buffer,0, len); in.close(); out.close(); } //8. 将缓冲区OutputStream中的数据输出到客户端 //在web.xml文件里配置服务 } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { super.doPost(req, resp); } }
-