Servlet Response对象的响应数据和响应乱码和重定向
Servlet Response对象
一.响应数据
1.getWrite():字符流
//页面中输出 //获取字符输出流 PrintWriter write = response.getWriter(); //输出数据 write.write("Hello");
2.getOutputStream():字节流
//通过字节流 ServletOutputStream out = response.getOutputStream(); out.write("Hi".getBytes());//要转成byte类型
3.注意:这两种流不可以同时使用
二、响应乱码问题
1.getWrite()乱码:服务器端在进行编码时候默认编码是 ISO-8859-1,不支持中文
解决:在获取前设置服务端编码格式,但是要注意的是,客户端的编码格式和服务端的编码格式是不一样的,不能只指定一个,所以也要对客户端的编码格式进行设置。
//设置服务端的编码格式 response.setCharacterEncoding("UTF-8"); //设置客户端的编码格式 response.setHeader("content-type","text/html;charset=UTF-8");
也可以用以下一句同时设置服务端和客户端的编码格式
//同时设置服务端和客户端的编码格式的方式 response.setContentType("text/html;charset=UTF-8");
2.getOutputStream()乱码:响应中文的时候,传输的是字节,所以有可能出现乱码,不确定性
解决:
//同时设置服务端和客户端的编码格式的方式 response.setContentType("text/html;charset=UTF-8");
三、Servlet Response对象的重定向
1.特点
1)地址栏会发生改变
2)存在两次请求,即数据在 request域 不能共享
3)是一种客户端行为,而请求转发是一种服务端行为
4)绝对地址可以写到http://,而请求转发绝对地址定位到站点之后
5)重定向可以是任意地址,可以跨域的,例如:可以直接写response.sendRedirect(“http://www.baidu.com");
而请求转发的地址只能是站点名下的资源
2.格式:
response.sendRedirect(url); //response.sendRedirect("ser02");
3.例子
地址栏发生变化