HttpServlet请求响应与重定向总结

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,那么则显示“HelloAmerican”。

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 重定向响应案例

需求:创建一个搜索页面,通过百度搜索引擎完成内容搜索。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵广陆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值