
任务五 Servlet处理头信息
任务描述
1.向服务器发送请求时,将请求头信息输出。
2.设置响应类型为image/jpeg,并向客户端输出一个验证码图片。
必备知识
1.请求头信息
当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容并发送给浏览器。一个典型的请求头信息如下:

请求头信息详解如表2-5所示。
表2-5 请求头信息意义详解

HttpServletRequest类中提供了访问请求头信息的相关API,如表2-6所示。
表2-6 请求头相关方法

续表

2.响应头信息
响应头向客户端提供一些额外信息,比如谁在发送响应、响应者的功能,甚至与响应相关的一些特殊指令。这些头部有助于客户端处理响应,并在将来发起更好的请求。对响应头域的扩展要求通信双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。
典型的响应头信息包含下列字段:

各字段的详解如表2-7所示。
表2-7 响应头信息字段详解

3.MIME类型
MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型)是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问时,浏览器会自动使用指定应用程序打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
①MIME是一个互联网标准,扩展了电子邮件标准,使其能够支持:非ASCII字符文本;非文本格式附件(如二进制文件、声音、图像等);由多部分(Multiple Parts)组成的消息体;包含非ASCII字符的头信息(Header Information)。
②MIME意为多功能Internet邮件扩展,它设计的最初目的是在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。然而当它被HTTP协议支持之后,它的意义就更为显著。它使得HTTP传输的不仅是普通的文本,而变得丰富多彩。
③最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识数据类型。
每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图像image等,后面定义具体的种类。
常见的MIME类型(通用型):

在Tomcat的目录文件apache-tomcat-7.0.70-windows-x86\apache-tomcat-7.0.70\conf中也定义了服务器所支持的MIME类型,如图2-20所示。

图2-20 常用的MIME类型
任务透析
【子任务1】在Servlet中读取并显示当前所有的请求头信息。
步骤1:编写Servlet,读取所有请求头信息名称和值。


步骤2:发布工程,运行Servlet,在浏览器中运行结果如图2-21所示。

图2-21 请求头信息运行结果
【子任务2】用Servlet设置响应的MIME类型为Word文档。
步骤1:编写Servlet,设置Servlet的响应类型为application/msword。

步骤2:发布工程,Servlet的运行结果如图2-22所示。

图2-22 响应的MIME类型为application/msword
【子任务3】登录验证码的实现。
步骤1:编写生成验证码的Servlet程序。

步骤2:编写登录页面,采用<img>标签将验证码图片嵌入登录界面。

程序运行结果如图2-23所示。

图2-23 响应的MIME类型为图片
课堂提问
1.请求头信息和响应头信息的意义是什么?
2.列举请求头信息和响应头信息的典型消息字段。
3.如果将验证码修改为从100个中文字库中随机挑选的4个文字,如何修改?