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"));
总结:程序用什么码表输出数据,程序就一定要控制浏览器以什么码表打开,这样才不会出现乱码