Java Web 回顾总结(五) - HttpServlet - Response - 5.1 发送数据

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于请求的request对象、和 用于响应的response对象。

接下来我们就将回顾 ,HttpServletResponse 响应接口

HttpServletResponse

HttpServletResponse 接口来 表示服务器的响应。
该 对象中封装的方法有:
将要向客户端发送的
数据
响应头
响应状态码
阿萨大

可以得知 的是该接口 实现了更底层的 ServletResponse

发送数据的方法

基本都来自于 ServletResponse 方法

1. 设置 和 得到 数据编码
方法作用
void setCharacterEncoding(java.lang.String charset)设置发送给客户端的响应的字符编码(MIME字符集

如果字符编码已经在 setContentType(java.lang.String) 或者 setLocale(java.util.Locale) 中设置 , 该方法会覆盖以上设置 .

调用 setContentType(text/html) 和 用 UTF-8 字符串传参
等价于 setContentType(text/html; charset=UTF-8)
asdas

可重复调用 ,但如果在调用getWriter之后或在提交响应之后 调用此方法,则此方法不起作用。

如果协议为此提供了方法,那么容器必须将 servlet的字符编码传达给客户端。

在 HTTP 中, 这个编码set 用于 设置Content-Type 返回头中的文本类型
但是这个方法使用 之前应该先设置servlet的编码


方法作用返回
java.lang.String getCharacterEncoding()返回用于在此响应中发送的正文的字符编码 (MIME 字符集) 的名称。返回文本的编码

字符编码可能已使用setCharacterEncoding (java.lang.String)setContentType (java.lang.String)方法显式指定, 或者隐式使用 setLocale (java.util.locale) 方法。

显式规范优先于隐式规范

调用 getWriter 后对这些方法所做的调用或在响应已提交后对字符编码没有影响。如果未指定字符编码, 则返回 ISO-8859-1


2. 返回数据
方法作用
java.io.PrintWriter getWriter()返回 一个java.io.PrintWriter对象,该对象可以储存发送给客户端的文本。

PrintWriter 中文本编码 将使用 getCharacterEncoding()返回的编码

如果没有如getCharacterEncoding()中返回 的 响应的字符编码(即该方法仅返回默认值ISO-8859-1), getWriter() 编码更新为 ISO-8859-1.

PrintWriter 中 调用flush() 提交 返回

throw java.io.IOException

Throws:
UnsupportedEncodingException - 如果由getCharacterEncoding返回的字符编码不能使用
IllegalStateException - 如果已经为此响应对象调用了getOutputStream方法
java.io.IOException - 如果发生输入或输出异常


方法作用
ServletOutputStream getOutputStream()返回 ServletOutputStream 对象 ,该对象能写二进制数据流

servlet 容器 不支持二进制编码
ServletOutputStream中 调用flush() 来提交 返回

throws java.io.IOException

Throws:
IllegalStateException - 如果在此响应中调用了getWriter方法
java.io.IOException - 如果输入输出发生异常


示例:
getWriter()getOutputStream() 这俩种方法不可以在同一返回 中都用来编写body

阿阿萨大萨大
阿萨大
但是可以使用flush() 来同时使用
啊实打实

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.setCharacterEncoding("UTF-8");
        PrintWriter pw =  response.getWriter();
        pw.append("Servlet at " + request.getContextPath() + "<hr/> charset : " + response.getCharacterEncoding());
//      ServletOutputStream outstream = response.getOutputStream();
//      byte b = 0;
//      outstream.write(b); 
    }

阿斯顿请问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值