HttpServletResponse接口
HttpServletResponse接口继承ServletResponse 接口,该接口专门封装http响应消息,servlet首先通过每次请求创建ServletResponse 对象,最后返回客户端。
在响应消息时,需要在响应消息中写入状态码
返回类型 | 方法 | 说明 |
---|---|---|
void | setStatus(int status) | 设置http响应消息状态码,并生成响应消息状态行 |
void | sendError(int sc) | 用于发送错误的状态码 |
响应消息头方法
返回类型 | 方法名 | 说明 |
---|---|---|
void | setHeader (String name,String value) | 用于修改响应头字段名和值 |
void | addHeader(String name,String value) | 用于增添响应头字段名和对应值 |
void | setIntHeader(String name, int value) | 修改int型的响应头字段 |
void | addIntHeader(String name,int value) | 增加一个int型的响应头字段 |
void | setCharacterEncoding(String charset) | 用于设置输出内容的字符编码格式 |
void | setContentType(String type) | 设置输出内容的MME类型及编码格式 |
在使用HttpServletResponse接口的时候必须通过|/O形式来传递数据,例如字符串,数字,常用的还有json格式。
返回类型 | 方法名 | 说明 |
---|---|---|
OutputStream | getOutputStream() | 获取一个字节输出流 |
PrintWriter | getWriter() | 获取字符输出流 |
上述的两个方法只是获取输出流对象,要想输出内容则要使用下面的两个方法。
返回类型 | 方法名 | 说明 |
---|---|---|
void | print() | 支持输出字符类型数据,字符、字符数组、字符串等 |
void | write() | 将各种类型的数据通过默认编码转换成bytes字节形式,这些字节都通过write(int c)方法被输出 |
注意:
print()和write()不能同时使用,否则会发生 IllegalStateException 异常。
无论在使用字节流输出还是字节流输出,都要与浏览器打开时采用的字符集保持一致,否则会出现乱码。
字节流乱码处理
response.setCharacterEncoding("UTF-8"); //可以省略
response.setHeader("Content-type","text/html;charset=UTF-8");
byte[] a=字符串.getBytes("UTF-8")
response.write(a);
字符流乱码处理
在使用字符流时出现乱码也是按照上面的方法解决。
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "text/html;charset=UTF-8");
response.getWriter().write("字符串");
无论是在使用字节流时还是在使用字符流时,可以将
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Type", "text/html;charset=UTF-8");
替换
response.setContentType("text/html;charset=utf-8");