day99-javaweb,response应用
web服务器接收到客户端的http请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,一个代表相应的HttpServletResponse对象。
如果给客户端传递一些消息,需要调用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网管错误
常见应用
-
向浏览器输出消息
之前写过不少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); }
-
下载文件
获取下载文件的路径
下载文件名字
设置浏览器支持下载需要的东西
获取下载文件的输入流
创建缓冲区
获取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); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南