Servlet_6th_response对象

一、response对象

HttpServletResponse是一个接口,response对象指的是HttpServletResponse的实现类对象,该对象封装了发送给客户端的响应信息,由服务器将response对象传递给servlet。

1)服务器端的响应信息被封装在这个对象中。
2)响应信息由response对象传送给web服务器,再由web服务器发送给客户端。
3)其父接口是ServletResponse,定义一个对象协助servlet向客户端发送一个响应,服务器创建一个ServletResponse对象,并且传递一个参数到servlet的service方法中。
4)向客户端返回响应数据:
①使用PrintWriter对象的getWriter()方法来返回字符格式的响应数据。
②使用ServletOutputStream的getOutputStream()方法来返回一个二进制的响应数据。

5)响应的构成:
①状态行
②响应头
③响应实体


二、构建响应信息
1、状态行
状态行表示状态,无法人为构造,一个正常的状态行如:HTTP 200 ok,正常情况下是200,找不到内容是404,发生异常是500,

2、构建响应头
response.setHeader("content-type", "text/html:charset=gbk");
response.addHeader("refresh", "3;url=1.jsp");

3、构建响应体
response.getWriter()	//输出文本使用
response.getOutputStream() //输出非文本使用(比如:图片、视频、exe文件)


三、测试
1、设置响应头部信息
①在TestResponseServlet.java中重写doGet方法,并且使用resp.setHeader()的方式来设置响应头信息。
package com.hpe.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestResponseServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		
		resp.setHeader("content-type", "text/html;charset=gbk");
		
		PrintWriter pw = resp.getWriter();		//pw和pw2是同一个对象
		PrintWriter pw2 = resp.getWriter();
		pw.println("<strong>aaaa</strong>");
		pw.println("<strong>bbbb</strong>");
		System.out.println(pw);
		System.out.println(pw2);
	}
}

②在web.xml配置好这个类,然后通过浏览器访问,同时服务器在控制台的打印信息说明通过resp.getWriter()获取到的是同一个对象:


③在浏览器窗口右键F12来查看元素,按照下图中的顺序来查看Content-Type为text/html;charset=gbk,这是我们在doGet方法中通过resp.setHeader()的方式所设置的响应头信息:



④将Content-Type设置为text/plain;charset=gbk,"plain"表示普通文本,输出流中的内容将会以其本身的样子被浏览器解析:



⑤以下还有两种方法可以设置文本类型或字符编码:
package com.hpe.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestResponseServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		
		resp.setHeader("content-type", "text/html;charset=gbk");	//必须是分号隔开,不能是逗号或冒号等其它符号
		resp.setContentType("text/html;charset=gbk");	//必须是分号隔开,不能是逗号或冒号等其它符号
		resp.setCharacterEncoding("gbk");	//写上这3个方法中的任意一个,设置为gbk后,中文都可以正常显示,也推荐用utf-8
		
		PrintWriter pw = resp.getWriter();		//pw和pw2是同一个对象
		PrintWriter pw2 = resp.getWriter();
		pw.println("<strong>aaaa</strong>");
		pw.println("<strong>bbbb</strong>");
		System.out.println(pw);
		System.out.println(pw2);
	}
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值