response响应对象(代码片段)

alphajuns alphajuns     2023-01-18     410

关键词:

1、HttpServletResponse

HttpServletResponse是一个定义在Servlet API中的接口,继承自ServletReponse接口,用于封装HTTP响应消息。HTTP相应分为响应行、响应头和响应体三部分。在HttpServletResponse中定义了向客户端发送相应状态码、响应头、响应体的方法。

2、发送状态码相关方法

常见的相应状态码:

200 OK,302 重定向,304 取本地缓存,404 找不到资源,500 服务器内部错误(内部java代码逻辑错误)

  1. setStatus(int status)方法:用于设置相应消息的状态码
  2. sendError(int sc):发送表示错误信息的状态码

3、发送响应头的相关方法

void addHeader(String name, String value):用于增加响应头

void setHeader(String name, String value):用于设置响应头

void addIntHeader(String name, int value):增加整数响应头

void setIntHeader(String name, int value):设置整数响应头

void setContentLength(int len):用于设置响应消息的实体大小,单位为字节

void setContentType(String type):用于设置输出文件的MIME类型

void setLocale(Locale loc):用于设置响应消息的本地化信息

void setCharacterEncoding(String charset):用于设置输出内容使用的字符集编码

4、发送响应体的相关方法

  1. getOutputStream():用于获取类型为ServletOutputStream类型的字节流输出对象
  2. getWriter():用于获取的字符输出流对象为PrintWriter类型

5、文件下载实例

文件下载要解决问题:文件名中文乱码问题,浏览器自动解析,读取服务器上文件,写到本地

 1 package com.alphajuns.content;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.IOException;
 5 import java.io.InputStream;
 6 import java.net.URLEncoder;
 7 
 8 import javax.servlet.ServletException;
 9 import javax.servlet.ServletOutputStream;
10 import javax.servlet.http.HttpServlet;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 
14 import sun.misc.BASE64Encoder;
15 
16 public class DownloadServlet2 extends HttpServlet 
17 
18     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
19         /*
20          * 文件名是中文的下载乱码问题解决
21          */
22         // 获取要下载的文件的名称
23         String filename = request.getParameter("filename");
24         // 解决中文乱码问题
25         filename = new String(filename.getBytes("iso8859-1"), "UTF-8");
26         // 获得请求头中的User-Agent
27         String agent = request.getHeader("User-Agent");
28         // 根据不同的浏览器进行不同的解码
29         String filenameEncoder = "";
30         if (agent.contains("MSIE")) 
31             // IE浏览器
32             filenameEncoder = URLEncoder.encode(filename, "utf-8");
33             filenameEncoder = filenameEncoder.replace("+", " ");
34          else if (agent.contains("Firefox")) 
35             // 火狐浏览器
36             BASE64Encoder base64Encoder = new BASE64Encoder();
37             filenameEncoder = "=?utf-8?B?"
38                     + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
39          else 
40             // 其它浏览器
41             filenameEncoder = URLEncoder.encode(filename, "utf-8");                
42         
43         // 告诉客户端不是直接解析,而是以附件形式下载
44         response.setHeader("Content-Disposition", "attachment;filename=" + filenameEncoder);
45         // 获取文件的绝对路径
46         String realPath = this.getServletContext().getRealPath("download/" + filename);
47         // 获取的该文件的字节输入流
48         InputStream in = new FileInputStream(realPath);
49         // 获得文件的字节输出流
50         ServletOutputStream out = response.getOutputStream();
51         int len = 0;
52         // 定义读写数据的字节数组缓冲区
53         byte[] buffer = new byte[1024];
54         // 读取数据到字节数组中
55         while ((len = in.read(buffer)) != -1) 
56             out.write(buffer, 0, len);
57         
58         // 关闭资源
59         out.close();
60         in.close();
61     
62 
63     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
64         doGet(request, response);
65     
66 

 

flask基础之response响应对象(代码片段)

前言Response对象负责对客户端的响应,每一个请求都会有一个Response对象,那么它在一个请求的声明周期内是怎么发挥作用的呢?Response对象响应发生的位置先回顾一下http请求的flask处理流程:接收请求--》创建请求上下文--》请... 查看详情

response增强案例—压缩响应=学习笔记(代码片段)

应用HttpServletResponseWrapper对象,压缩响应正文内容。思路:通过filter向目标页面传递一个自定义的response对象。在自定义的response对象中,重写getOutputStream方法和getWriter方法,使目标资源调用此方法输出页面内容时,获得的是我们... 查看详情

response对象转发重定向(代码片段)

1.response:响应。     该对象是用来响应用户请求后的结果。2.response中的常用方法:    response.setCharacterEncoding();该方法用来处理响应时的字符集编码问题。    response.sendRedirect("要跳转的url地址").该方... 查看详情

响应对象response(代码片段)

问题:视图函数的return和普通函数的return有什么区别。视图函数会返回状态码(status)、content-type(放置在http请求的headers中)。content-type还会告诉http请求的接收方如何解析返回的主体内容。Flask中content-type默... 查看详情

javaweb学习笔记8(response对象)(代码片段)

Response对象功能:设置响应消息设置响应行格式:HTTP/1.1200ok设置状态码:setStatus(intsc)设置响应头:setHeader(Stringname,Stringvalue)状态码的设置和响应头的设置,可以集合到sendRedirect(String路径)方法里面一把嗦设置... 查看详情

servlet第五篇response总结(代码片段)

一、Response概述response是Servlet.service方法的一个参数,类型为javax.servlet.http.HttpServletResponse。在客户端发出每个请求时,服务器都会创建一个response对象。response对象是用来对客户端进行响应的,这说明在HttpServletResponse的doXXX()方法... 查看详情

flask的rsponse响应对象(代码片段)

返回值可以为元组、字符串、字典、response对象和make_response对象fromflaskimportFlask,Response,make_responseapp=Flask(__name__)#元组@app.route('/tuple')defindex1():return('元组',200)#字典@app.route('/dict')defindex2():return'a':... 查看详情

response响应相关(代码片段)

response是响应的对象 response.text   #返回的是字节,数据的原内容response.content#返回的是字符串,默认是utf-8解码importrequestsresponse=requests.get(‘http://httpbin.org/get‘)t1=response.text#返回是str类型的数据t2=response.content#返回... 查看详情

request对象(代码片段)

目录request对象和response对象的原理request对象继承体系结构request功能获取请求消息数据获取请求行数据获取请求头数据获取请求体数据其他功能获取请求参数通用方式请求转发共享数据获取ServletContextrequest对象和response对象的原... 查看详情

响应对象response(代码片段)

...ask中content-type默认是text/html。视图函数返回的内容永远是Response对象。返回对象的写法有两种方式。方式一:make_response举例一:fromflaskimportFlask,make_responseapp=Flask(__name__)#载入整个配置文件app.config.from_object('config')... 查看详情

响应对象response(代码片段)

...ask中content-type默认是text/html。视图函数返回的内容永远是Response对象。返回对象的写法有两种方式。方式一:make_response举例一:fromflaskimportFlask,make_responseapp=Flask(__name__)#载入整个配置文件app.config.from_object('config')... 查看详情

httpservletresponse响应(代码片段)

自我体会:  HttpServletResponse中response主要是设置响应行,响应头,响应体其中响应行主要设置状态码(重定向时设置为302)响应头主要设置(键值对形式)Location重定向 Content-Type编码类型 取值:text/html;charset=UTF-8 Re... 查看详情

request和response简介(代码片段)

...求,分别创建一个代表请求的request对象、和代表响应的response对象。既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。response对象代表http响应,那么我们向浏览器输出数据,找response对象即可... 查看详情

scrapy中的response对象的属性及方法,附加mate属性的使用方法(代码片段)

responseScrapy中的`response`对象是一个包含HTTP响应的Python对象,具有以下属性和方法:**属性**url:响应的URL。status:响应的HTTP状态码。headers:包含响应头信息的字典。body:响应正文的原始二进制数据。text:响应正文的Unicode编码字符串。... 查看详情

flask中的orm(代码片段)

1响应(response)1什么是响应响应就是由服务器端带给客户端的内容,对应着请求,响应可以是普通的字符串,模板或重定向return‘普通字符串‘returnrender_template(‘xxx.html‘)2响应对象响应对象:将响应的内容封装到一个对象中,... 查看详情

flask学习-7.make_response()自定义响应内容(代码片段)

前言视图函数的返回值会自动转换为一个响应对象。如果返回值是一个字典,那么会调用jsonify()来产生一个响应。响应转换规则视图函数的返回值会自动转换为一个响应对象。如果返回值是一个字符串,那么会被转换为... 查看详情

servlet之response对象(代码片段)

Response对象功能:设置响应消息设置响应行格式:HTTP/1.1200ok设置状态码:setStatus(intsc)设置响应头:setHeader(Stringname,Stringvalue)设置响应体使用步骤获取输出流字符输出:PrintWritegetWriter()字节输出流:ServletOutputStreamgetOutStream()... 查看详情

djangorequest与response对象(代码片段)

...为第一个参数传递给视图函数。每个视图都负责返回HttpResponse对象。 一、HttpRequestHttpRequet.schema:所使用的Http协议(http,https)Htt 查看详情