摸鱼少学习多

day99-javaweb,response应用

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);
复制代码

 

状态的响应码

 int SC_CONTINUE = 100;
 int SC_SWITCHING_PROTOCOLS = 101;
 int SC_OK = 200;
 ......

 

200: 请求相应成功

3xx: 请求重定向,重新到新的位置去

4xx:找不到资源 404

5xx:服务器代码错误 500,502网管错误

常见应用

  1. 向浏览器输出消息

之前写过不少getwriter传递消息的

 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
     ServletContext servletContext = this.getServletContext();
     String username = (String) servletContext.getAttribute("username");
 ​
     resp.setContentType("text/html");
     resp.setCharacterEncoding("utf-8");
     resp.getWriter().print("name: "+username);
 }

 

  1. 下载文件

获取下载文件的路径

下载文件名字

设置浏览器支持下载需要的东西

获取下载文件的输入流

创建缓冲区

获取outputsream对象

将fileoutputstream流写入buffer缓冲区

使用outputstream将缓冲区得数据输出到客户端

复制代码
 public class FileServlet extends HttpServlet {
     @Override
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         //获取下载文件的路径
         String realPath = "D:\\Java\\code\\javaweb_02_Servlet\\response\\target\\classes\\1.jpg";
         System.out.println("path: "+realPath);
 ​
         //下载文件名字
         String filename = realPath.substring(realPath.lastIndexOf("\\") + 1);
 ​
 ​
         //设置浏览器支持下载需要的东西
         resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));
 ​
         //获取下载文件的输入流
         FileInputStream in = new FileInputStream(realPath);
 ​
         //创建缓冲区
         int len =0;
         byte[] buffer = new byte[1024];
 ​
         //获取outputsream对象
         ServletOutputStream outputStream = resp.getOutputStream();
 ​
         //将fileoutputstream流写入buffer缓冲区
         //使用outputstream将缓冲区得数据输出到客户端
         while ((in.read(buffer))>0){
             len = in.read(buffer);
             outputStream.write(buffer,0,len);
         }
         in.close();
         outputStream.close();
 ​
 ​
     }
 ​
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
         doGet(req, resp);
     }
 }
复制代码

 

 
posted @   北海之上  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
/* 粒子吸附*/
点击右上角即可分享
微信分享提示