HttpServletRequest 对象
HttpServletRequest 对象代表客户端浏览器的请求,当客户端浏览器通过 HTTP 协议访问服务器时,HTTP 请求中的所有信息都会被 Tomcat 所解析并封装在这个对象中,通过这个对象提供的方法,可以获得客户端请求的所有信息。
7.1获取请求信息
req.getRequestURL()
返回客户端浏览器发出请求时的完整 URL。
req.getRequestURI()
返回请求行中指定资源部分。
req.getRemoteAddr()
返回发出请求的客户机的 IP 地址。
req.getLocalAddr()
返回 WEB 服务器的 IP 地址。
req.getLocalPort()
返回 WEB 服务器处理 Http 协议的连接器所监听的端口。
7.2获取请求数据
7.2.1 在 Servlet 获取请求数据的方式
req.getParameter("key")
根据 key 获取指定 value。
String str = req.getParameter("key");
7.2.2 获取复选框(checkbox 组件)中的值
req.getParameterValues("checkboxkey")
获取复选框(checkbox 组件)中的值,返回一个 String[]。
String[] userlikes = req.getParameterValues("checkboxkey");
327.2.3 获取所有提交数据的 key
req.getParameterNames()
获取请求中所有数据的 key,该方法返回一个枚举类型。
Enumeration<String> parameterNames = req.getParameterNames();
7.2.4 使用 Map 结构获取提交数据
req.getParameterMap()
获取请求中所有的数据并存放到一个 Map 结构中,该方法返回一个 Map,其中 key 为
String 类型 value 为 String[]类型。
Map<String, String[]> parameterMap = req.getParameterMap();
7.3设置请求编码
req.setCharacterEncoding("utf-8")
请求的数据包基于字节在网络上传输,Tomcat 接收到请求的数据包后会将数据包中的
字节转换为字符。在 Tomcat 中使用的是 ISO-8859-1 的单字节编码完成字节与字符的转换,
所以数据中含有中文就会出现乱码,可以通过 req.setCharacterEncoding("utf-8")方法来对提
交的数据根据指定的编码方式重新做编码处理。
7.4资源访问方式
7.4.1 绝对路径
绝对路径访问资源表示直接以”/”作为项目的 Content Path。该方式适用于以”/”作为项目
的 Content Path。
<form action="/getInfo.do" method="post">
337.4.2 相对路径
相对路径访问资源表示会相对于项目的 Content Path 作为相对路径。该方式适用于为项
目指定的具体的 Content Path。
<form action="getInfo.do" method="post">
7.5获取请求头信息
7.5.1 获取请求头信息
req.getHeader("headerKey")
根据请求头中的 key 获取对应的 value。
String headerValue = req.getHeader("headerKey");
req.getHeaderNames()
获取请求头中所有的 key,该方法返回枚举类型。
Enumeration<String> headerNames = req.getHeaderNames();
7.5.2 获取请求头案例
需求:编写一个 Servlet,如果浏览器的语言是 zh-CN,显示“你好,聪明的中国人!”,
如果浏览器的语言设置为 en-US,那么则显示“Hello,American”。
7.6HttpServletRequest 对象的生命周期
当有请求到达 Tomcat 时,Tomcat 会创建 HttpServletRequest 对象,并将该对象通过参数
的方式传递到我们 Servlet 的方法中,当处理请求处理完毕并产生响应后该对象生命周期结
束。
8 HttpServletResponse 对象
HttpServletResponse 对象代表服务器的响应。这个对象中封装了响应客户端浏览器的流对象,以及向客户端浏览器响应的响应头、响应数据、响应状态码等信息。
8.1设置响应类型
resp.setContentType("MIME")
该方法可通过 MIME-Type 设置响应类型。
Type
Meaning
application/msword
Microsoft Word document
application/octet-stream
Unrecognized or binary data
application/pdf
Acrobat (.pdf) file
application/postscript
PostScript file
application/vnd.lotus-notes
Lotus Notes file
application/vnd.ms-excel
Excel spreadsheet
application/vnd.ms-powerpoint
PowerPoint presentation
application/x-gzip
Gzip archive
application/x-java-archive
JAR file
application/x-java-serialized-ob
ject
Serialized Java object
application/x-java-vm
Java bytecode (.class) file
application/zip
Zip archive
application/json
JSON
audio/basic
Sound file in .au or .snd
format
audio/midi
MIDI sound file
audio/x-aiff
AIFF sound file
audio/x-wav
Microsoft Windows sound file
image/gif
GIF image
image/jpeg
JPEG image
image/png
PNG image
image/tiff
TIFF image
image/x-xbitmap
X Windows bitmap image
text/css
HTML cascading style sheet36
Type
Meaning
text/html
HTML document
text/plain
Plain text
text/xml
XML
video/mpeg
MPEG video clip
video/quicktime
QuickTime video clip
8.1.1 设置字符型响应
常见的字符型响应类型:
resp.setContentType("text/html")
设置响应类型为文本型,内容含有 html 字符串,是默认的响应类型
resp.setContentType("text/plain")
设置响应类型为文本型,内容是普通文本。
resp.setContentType("application/json")
设置响应类型为 JSON 格式的字符串。
8.1.2 设置字节型响应
常见的字节型响应:
resp.setContentType("image/jpeg")
设置响应类型为图片类型,图片类型为 jpeg 或 jpg 格式。
resp.setContentType("image/gif")
设置响应类型为图片类型,图片类型为 gif 格式。
8.2设置响应编码
response.setCharacterEncoding("utf-8");
设置服务端为浏览器产生响应的响应编码,服务端会根据此编码将响应内容的字符转换为字节。
response.setContentType("text/html;charset=utf-8");
设置服务端为浏览器产生响应的响应编码,服务端会根据此编码将响应内容的字符转换
为字节。同时客户端浏览器会根据此编码方式显示响应内容。
8.3在响应中添加附加信息
8.3.1 重定向响应
response.sendRedirect(URL 地址)
重定向响应会在响应头中添加一个 Location 的 key 对应的 value 是给定的 URL。客户端
浏览器在解析响应头后自动向 Location 中的 URL 发送请求。
重定向响应特点:
重定向会产生两次请求两次响应。
重定向的 URL 是有客户端浏览器发送的。
8.3.2 重定向响应案例
需求:创建一个搜索页面,通过百度搜索引擎完成内容搜索。