一:response对象:
1.发送状态码的方法:
(1)setStatus(int status)方法:
该方法用于设置HTTP响应消息的状态码,并生成响应状态行。由于响应状态行中的状态描述信息直接与状态码相关,而HTTP版本由服务器确定,因此,只要通过setStatus(int status)方法设置了状态码,即可实现状态行的发送。需要注意的是,正常情况下,Web服务器会默认产生一个状态码为200的状态行。
(2)sendError(int sc)方法:
该方法用于发送表示错误信息的状态码,例如,404状态码表示找不到客户端请求的资源。在response对象中,提供了两个重载的sendError(int sc)方法,具体如下:

在上面重载的两个方法中,第一个方法只是发送错误信息的状态码,而第二个方法除了发送状态码外,还可以增加一条用于提示说明的文本信息,该文本信息将出现在发送给客户端的正文内容中。
2. 设置HTTP响应头字段的方法:


3. 在发送响应消息体时,定义了两个与输出流相关的方法:
(1)getOutputStream()方法:
该方法所获取的字节输出流对象为ServletOutputStream类型。由于ServletOutputStream是OutputStream的子类,它可以直接输出字节数组中的二进制数据。因此,要想输出二进制格式的响应正文,就需要使用getOutputStream()方法。
(2)getWriter()方法:
该方法所获取的字符输出流对象为PrintWriter类型。由于PrintWriter类型的对象可以直接输出字符文本内容,因此,要想输出内容全为字符文本的网页文档,需要使用getWriter()方法。
注意:虽然response对象的getOutputStream()和getWriter()方法都可以发送响应消息体,但是,它们之间互相排斥,不可同时使用,否则会发生IllegalStateException异常
4.重定向:
在某些情况下,针对客户端的请求,一个Servlet类可能无法完成全部工作。这时,可以使用请求重定向来完成。所谓请求重定向,指的是Web服务器接收到客户端的请求后,可能由于某些条件限制,不能访问当前请求URL所指向的Web资源,而是指定了一个新的资源路径,让客户端重新发送请求。
(1)sendRedirect()方法:
工作原理:
在图中,当客户端访问Servlet1时,由于在Servlet1中调用了sendRedirect() 方法将请求重定向到Servlet2,因此,Web服务器在收到Servlet1的响应消息后,会立刻向Servlet2发送请求。Servlet2对请求处理完毕后,再将响应消息回送给客户端。

该方法用于生成302响应码和Location响应头,从而通知客户端重新访问Location响应头中指定的URL,sendRedirect()方法的完整语法如下所示:

注意:参数location可以使用相对URL,Web服务器会自动将相对URL翻译成绝对URL,再生成Location头字段。
二:request对象:
1.获取请求行的方法:包含请求方法、请求资源名、请求路径等信息:


2.用于获取HTTP请求头字段的方法:

3.用于获取请求参数的方法:

4.Request对象不仅可以获取一系列数据,还可以通过属性传递数据。在ServletRequest接口中,定义了一系列操作属性的方法:
(1)setAttribute()方法:
该方法用于将一个对象与一个名称关联后存储进ServletRequest对象中,其完整语法定义如下:
![]()
注意:如果ServletRequest对象中已经存在指定名称的属性,setAttribute()方法将会先删除原来的属性,然后再添加新的属性。如果传递给setAttribute()方法的属性值对象为null,则删除指定名称的属性,这时的效果等同于removeAttribute()方法。
(2)getAttribute()方法:
该方法用于从ServletRequest对象中返回指定名称的属性对象,其完整的语法定义如下:
![]()
(3)removeAttribute()方法:
该方法用于从ServletRequest对象中删除指定名称的属性,其完整的语法定义如下:
![]()
(4)getAttributeNames()方法:
该方法用于返回一个包含ServletRequest对象中的所有属性名的Enumeration对象,在此基础上,可以对ServletRequest对象中的所有属性进行遍历处理。getAttributeNames()方法的完整语法定义如下:
![]()
注意:只有属于同一个请求中的数据才可以通过ServletRequest对象传递数据,数据只储存在request域中。
(5)getRequestDispatcher()方法:

该方法会返回一个RequestDispatcher对象,该对象拥有两个方法分别用于请求转发和请求包含,如图所示:

在此就不介绍请求转发和包含了。
本文详细介绍了HTTP响应中的关键元素,包括如何设置状态码、发送错误信息,以及使用ServletOutputStream和PrintWriter发送响应消息体。同时,讨论了请求重定向的原理及sendRedirect()方法的应用。对于HTTP请求,文章讲解了获取请求行、请求头、请求参数的方法,并阐述了ServletRequest对象中属性操作的相关方法,如setAttribute()、getAttribute()等。
689

被折叠的 条评论
为什么被折叠?



