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

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请求方式,这样的请求方式速度
更快一点。但是安全性却不高。

  • 12
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: HttpServletResponse是Java Servlet API中的一个接口,它提供了一系列方法来处理HTTP响应。其中一些方法包括: 1. setContentType(String type):设置响应的内容类型。 2. setStatus(int sc):设置响应的状态码。 3. setHeader(String name, String value):设置响应头。 4. getWriter():返回一个PrintWriter对象,用于向客户端输出字符流。 5. getOutputStream():返回一个OutputStream对象,用于向客户端输出字节流。 6. sendRedirect(String location):重定向到指定的URL。 7. addCookie(Cookie cookie):添加一个Cookie到响应中。 8. setCharacterEncoding(String charset):设置响应的字符编码。 9. setContentLength(int len):设置响应的内容长度。 10. setBufferSize(int size):设置响应缓冲区的大小。 这些方法可以帮助开发人员控制HTTP响应的各个方面,从而实现更加灵活和高效的Web应用程序。 ### 回答2: HttpServletRequest和HttpServletResponse是Java EE中的两个非常重要的接口。其中,HttpServletResponse是一个用于将HTML,XML,文本数据或其他格式化的数据发送回客户端的接口。它是一个将Http响应发送到客户端的专用对象,包含在javax.servlet包中。 HttpServletResponse接口定义了一组方法来操作响应。这些方法可以用来设置 HTTP 响应头和正文,在客户端与服务器之间传输数据。以下是一些常用的HttpServletResponse方法: 1. setContentType(String type): 用于设置响应将返回的内容的类型。例如,如果需要返回HTML,则使用“text/html”作为参数传入。 2. setHeader(String name, String value): 用于设置响应标头。它的第一个参数表示要设置的标头名称,第二个参数是标头值。 3. sendRedirect(String url): 重定向客户端请求到另一个URL。这个方法将一个特殊的HTTP响应发送回客户端,使它重新请求新的URL。 4. sendError(int sc, String msg): 用来发送错误消息。如果发生错误,则可以使用该方法返回错误代码和错误消息。 5. setStatus(int sc): 用于设置HTTP响应状态码。例如,200是“成功”的状态码,如果状态是404,则表示请求的页面不存在。 6. getWriter(): 获取一个PrintWriter对象,可以使用它向客户端输出文本。 除了上述方法之外,HttpServletResponse还提供了其他很多方便的方法,可以方便地操作HTTP响应。这些方法是JavaEE中非常关键的一部分,Web开发者必须掌握它们的使用。 ### 回答3: HttpServletResponse方法是Java中用于HTTP响应的接口类。它提供了一系列的方法,可以用于向客户端发送HTTP响应,包括设置响应头、写入响应主体、设置响应状态码等等。 HttpServletResponse中的一些重要方法包括: 1. setHeader(String name, String value): 设置响应头中指定名称的值。例如:response.setHeader("Content-Type","text/html;charset=UTF-8");设置响应的MIME类型为text/html,字符编码为UTF-8。 2. setStatus(int sc): 设置响应状态码。例如:response.setStatus(404);设置响应状态码为404,表示请求的资源不存在。 3. getWriter(): 返回PrintWriter对象,可以用于向响应主体中写入内容。例如:PrintWriter out = response.getWriter(); out.print("Hello World!");将"Hello World!"写入响应主体中。 4. sendRedirect(String location): 重定向到指定的地址。例如:response.sendRedirect("example.jsp");将请求重定向到example.jsp页面。 5. setCharacterEncoding(String charset): 设置响应的字符编码。例如:response.setCharacterEncoding("UTF-8");设置响应的字符编码为UTF-8。 总之,HttpServletResponse类提供了丰富的方法,可以让开发者轻松地实现HTTP响应功能,并且还提供了许多便捷的方法,让开发者可以很方便地对响应的内容进行操作,使得Java Web开发更加方便、高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值