response是一个对象,主要用于动态的给客户端反馈信息。
普通的Servlet中的response类型是ServletResponse,而HttpServlet中的是HttpServletResponse,它针对HTTP协议设计,功能更加强大.HttpServletResponse能设置header等HTTP协议的信息。而ServletResponse不行
response是用于动态给客户端反馈信息的类,所以我们就要知道怎么来用response给客户端反馈信息
首先了解下Http响应的结构,Http响应由响应头,响应行,响应体组成.
在谷歌浏览器response体现如下:
响应行主要是设置状态码。也就是400,401之类的。如果不设置。那系统会根据处理结果自己设置。比如请求成功就是200,服务器出错就是500,找不到路径就是404之类等等。
使用setStatus(int) 来设置状态码
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//获取状态码404
response.setStatus(404);
}
启动tomcat,并执行此servlet
就出现这样的页面(谷歌浏览器)
response.setHeader(String,String);根据key设置value,
这个方法很重要。什么头都可以用这个来设置值。
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置Content-Type = text/html;charset=UTF-8
//根据key设置value
response.setHeader("Content-Type","text/html;charset=UTF-8");
}
启动tomcat,并执行此servlet,然后在f12打开浏览器调试从network抓包
这样就设置成功了。
还有一些其他响应头的设置方法
response.setContentType(String);//设置content-type
response.addHeader(String,String);//添加一个自定义的响应头
响应体也就是能够渲染在页面上的信息。
使用getWriter()方法获取PrintWriter对象.在使用PrintWriter的write()方法来输入响应体的内容.
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.write("love you");
}
启动tomcat,执行该servlet
输出如下
当然你还可以写html标签
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter writer = response.getWriter();
writer.write("love you");
writer.write("hello world");
}
总结:
1,response是什么?
一个封装着响应信息并能够动态发送给客户端的对象.
2,response怎么用?
(1)response设置响应行,使用setStatus()方法
(2)response设置响应头,使用setHeader(),addHeader()等方法
(3)response设置响应体,使用getWriter()获取PrintWriter对象在使用write()方法