您的位置:首页 > 理论基础 > 计算机网络

HttpServletResponse的getWriter()和getOutputStream()以及sendRedirect()方法

2016-12-04 19:31 531 查看
HttpServletResponse:

注明:

1.HttpServletResponse实例对象获得输出流有两种方式

①PrintWriter out=response.getWriter();

out对象用于输出字符流数据

②ServletOutputStream  os=response.getOutputStream();

os用于输出字符流数据或者二进制的字节流数据都可以

首先我们来看一下浏览器和服务器端是如何来关闭我们的response获得的输出流的。



所以只要有一个流被创建了,并且已经完成了流的输出那么servlet容器就会将response对象交给服务器

服务器将response对象中的内容做拆解响应给客户端。然后在检查该response的输出流有没有关闭,如果没有关闭

就将输出流关闭。当response再有另外一个流被创建并尝试做输出时就会发生异常。所以response的两个输出流只

能使用一个,不能同时使用两个输出流。这也是为我们没有关闭流程序不出错的原因,当然更提倡我们自己关闭流。

代码如下:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
PrintWriter out=resp.getWriter();
//OutputStream os=resp.getOutputStream();  //会报错
out.println("你好啊我是一个好人");
out.println("你是一个好人");
out.close();
}


2.关于HttpServletResponse对象的sendRedirect("url?参数名1=参数值&参数名2=参数值")方法。

该方法称为重定向。浏览器和服务器是如何来完成重定向的呢?具体的步骤是这样的我们这里假设有三个页面

LoginServlet:登陆页面

LoginControlServlet:登陆验证处理类

ShowServlet:显示登陆成功页面

下图主要以http的形式来清楚的介绍了服务器和浏览器是如何来完成重定向的:



这里需要强调的是:重定向不可以在页面中共享HttpServletRequest对象中的数据。但是可以通过重定向的url中携带需要

的参数,但这里的参数只能携带字符串的参数。但是其优点是重定向时浏览器默认是使用get请求方式,这样的请求方式速度

更快一点。但是安全性却不高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐