Java的HttpServletResponse对象使用(请求和响应)

一、学习目标
1.HttpServletResponse对象
2.HttpServletResponse应用
3.RequestDispatcher接口
二、重点知识
Servlet最主要的作用就是处理客户端请求,并向客户端做出响应。为此,针对 Servlet 的每次请求, Web 服务器在调用service()方法之前,都会创建两个对象,分别是HttpServletRequest和HttpServletResponse。其中HttpServletReauest 用干封装HTTP请求消息,简称request对象。HttpServletResponse 用寸封装HTTP 响应消息,简称response对象。request 对象和response 对家仕有X ServIet 过程中至关重要,接下来,通过一张图来描述浏览器访问Servlet的交互过程,如图4-1所示。
Java的HttpServletResponse对象使用(请求和响应)_第1张图片
在 Web 服务器运行阶段,每个Servlet都只会创建一个实例对象。然而,每次 HTTP请求,Web 服务器都会调用所请求 Servlet 实例的 servrice(HttpServletRequestrequest,HttpServletResponse response)方法,重新创建一个request 对象和一个response对象。
1.HttpServletResponse对象
在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自ServletResponse接口,专门用来封装HTTP响应消息,由于Http响应消息分为状态行、响应消息分为状态行、响应消息头、消息体三部分,因此在HttpServletResponse中定义了状态行、响应消息头、消息体三部分。
(1)setStatus(int status)方法
该方法用于设置HTTP响应消息的状态码,并生成相应代码;默认会生成一个状态码为200的状态行;
(2)sendError(int sc)方法
此方法出现了Error可想而知是来告知程序人员或者访客,这是个用来表示错误的状态码,404状态码表示找不到客户端请求的资源;

public void sendError(int code) throws java.io.IOException
public void sendError(int code,String message) throws java.io.IEOxception

(3)getWriter()方法
该方法是用来获取字符,获取到的字符输出流对象为PrintWriter类型,由于printWriter类型的对象可以直接输出字符文本内容,因此需要想输出内容全为字符文本的网页文档,需要使用getWriter()方法.
1.2 发送响应消息头相关的方法:
响应消息头的数据格式:key-value的形式,有的是一个key、一个value,有的是一个key、多个value。
当 Servlet向客户端发送响应消息时,由于HTTP 协议的响应字段有很多种,为此,在HtpServletResponse接口中,定义了一系列设置HTTP响应头字段的方法,如表

方法声明 功能描述
void addHeeder(String name, String value)
void setHeader(String name,String value) 这两个方法都是用来设置 HTTP 协议的响应头字段,其中,参数name用于指定响应头字段的名称,参数vaue用于指定响应头字段的值。不同的是,addHeader()方法可以增加同名的响应头字段而 setHeader)方法则会覆盖同名的头字段
void addlntHeader(String name,int value)
void setlntHeader(String name,int value) 这两个方法专门用于设置包含整数值的响应头。避免了使用addHeader()与setHeader)方法时,需要将int突型的攻置值转换为String类型的麻烦
void setContentLength(int len) 该方法用于设置响应消息的实体内容的大小,单位为字节。对于HTTP协议来说,这个方法就是设詈Content-Length 问N头字段的值
void setContentType(String type) 该方法用于设置 Servlet 输出内容的MIME类型,对于HTTP协议来说,就是设置Content-Type响应头字段的值。例如,如果发送到客户端的内容是 jpeg 格式的图像数据,就需要将响应头字段的类型设置为“imageljpeg"。需要注意的是,如果响应的内容为文本,setContentType()方法还可以设置字符编码,如:text/html;charset=UTF-8
void setLocale(Locale loc) 该方法用于设置响应消息的本地化信息。对HTTP 来说,就是设置Content-Language 啊应头子段和 Content-Type头字段中的字符集编码部分。需要注息的是,如果 HTTP 消息没有设置Content-Type 头子段,SeILocale()万法设置的字符集编码不会出现在HTTP 消息的啊应头十,如未调用 setCharacterEncoding()setLocale()方法将不再具有指定字符集编码的功能
void setCharacterEncoding(Stringcharset) 该方法用于设置内容使用的字符编码,对HTTP协议来说,,就是设置Content-Type头字段中的字符集编码部分。如果没有设置 Content-Type头字段,setCharacterEncoding方法设置的字符集编码不会出现在HTTP消息的响应头中。SetCharaclerEncoding()方法比setContentType()和setLocale()方法的优先权高,它的设置结果将覆盖setContentType()和setLocale()方法所设置的字符码表

(1)设置响应消息头:
一个key ,一个value

setHeader(String key,String value);
比如:setHeader(“aa”,“AA”);
如果:setHeader(“aa”,“AA”);
setHeader(“aa”,“BB”);
结果:aa这个头对应的值就是BB

一个key,对应多个value

addHeader(String key,String value);
比如:addHeader(“aa”,“AA”);
addHeader(“aa”,“BB”);
结果:aa这个头对应的值AA和BB

(2)设置响应数据的长度:setContentLength(int src)方法
1.3 发送响应体相关的方法:
(1)getOutputStream(),通过response向浏览器返回图片、视频等二进制数据的文件,当然也可以向浏览器、
返回文本数据;

ServletOutputStream out = response.getOutputSt

你可能感兴趣的:(JavaWeb,服务器)