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.例子

 

地址栏发生变化

 

 

posted on 2022-10-10 23:50  201812  阅读(97)  评论(0编辑  收藏  举报