response、request对象

Web服务器收到客户端的http请求,会针对每一次请求,分别创建(服务器创建的)一个用于代表请求的request对象、和代表响应的response对象。当请求完成,这二个对象生命周期也结束了

request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。

HttpServletResponse对象服务器的响应。这个对象中封装了向客户端发送数据、发送响应头,发送响应状态码的方法

下面看下response常见应用

1:向客户端输出中文数据,分别以OutputStream和PrintWriter输出,针对get请求

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data= "中国";
OutputStream out  = response.getOutputStream();
out.write(data.getBytes());
}

当我们打开浏览器访问的时候 并不会出现乱码

当我们把要输入到客户端的数据以utf-8编码方式进行编码

代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String data= "中国";
OutputStream out  = response.getOutputStream();
out.write(data.getBytes("UTF-8"));//
}

这时浏览器再进行访问:发 现出现了乱码,如图:




分析:

我们输入客户端指定是以utf-8的编码方式对数据进行了编码,比如在utf-8中字对应的是100,国字对应的是101,当浏览器接到中国这二个字时,默认是去查gb2312码表,在gb2312码表中100,101对应的就是乱码中显示的文字,现在看看浏览器默认是什么码表:



解决这问题二种方式

1:客户自己手动去改浏览器默认的码表,这种方式不能用,除非你公司做的软件不想赚钱

2:在程序里告诉浏览器以什么码表来显示打开的数据,这个是我们常用的解决方法,因为我们是程序员


解决问题:

/**
* 通知浏览器以utf-8编码方式打开
*/
response.setHeader("content-type", "text/html;charset=UTF-8");//这是解决问题的重点
String data= "中国";
OutputStream out  = response.getOutputStream();
out.write(data.getBytes("UTF-8"));

总结:程序用什么码表输出数据,程序就一定要控制浏览器以什么码表打开,这样才不会出现乱码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值