request与response的常见使用方法

request

在Servlet API中,定义了一个HttpServletRequest接口,它继承自ServletRequest接口,专门用来封装HTTP请求消息。由于HTTP请求消息分为请求行、请求头和请求体三部分,因此,在HttpServletRequest接口中定义了获取请求行、请求头和请求体的相关方法.

request作用
  • 操作请求三部分(行,头,体)
  • 请求转发 页面 | servlet
  • 作为域对象存取数据
1、操作请求行
返回值类型方法声明描述
StringgetMethod()该方法用于获取 HTTP 请求方式(如 GET、POST 等)。
StringgetRequestURI()该方法用于获取请求行中的资源名称部分,即位于 URL 的主机和端口之后,参数部分之前的部分。
StringgetQueryString()该方法用于获取请求行中的参数部分,也就是 URL 中“?”以后的所有内容。
StringgetContextPath()返回当前 Servlet 所在的应用的名字(上下文)。对于默认(ROOT)上下文中的 Servlet,此方法返回空字符串""。
StringgetServletPath()该方法用于获取 Servlet 所映射的路径。
StringgetRemoteAddr()该方法用于获取客户端的 IP 地址。
StringgetRemoteHost()该方法用于获取客户端的完整主机名,如果无法解析出客户机的完整主机名,则该方法将会返回客户端的 IP 地址。
2、操作请求头
返回值类型方法声明描述
StringgetHeader(String name)该方法用于获取一个指定头字段的值。 如果请求消息中包含多个指定名称的头字段,则该方法返回其中第一个头字段的值。
EnumerationgetHeaders(String name)该方法返回指定头字段的所有值的枚举集合, 在多数情况下,一个头字段名在请求消息中只出现一次,但有时可能会出现多次。
EnumerationgetHeaderNames()该方法返回请求头中所有头字段的枚举集合。
StringgetContentType()该方法用于获取 Content-Type 头字段的值。
intgetContentLength()该方法用于获取 Content-Length 头字段的值 。
StringgetCharacterEncoding()该方法用于返回请求消息的字符集编码 。
3、操作请求体
返回值类型方法声明功能描述
StringgetParameter(String name)返回指定参数名的参数值。
String [ ]getParameterValues (String name)以字符串数组的形式返回指定参数名的所有参数值(HTTP 请求中可以有多个相同参数名的参数)。
EnumerationgetParameterNames()以枚举集合的形式返回请求中所有参数名。
MapgetParameterMap()用于将请求中的所有参数名和参数值装入一个 Map 对象中返回。

response

在Servlet API中,定义了一个HttpServletResponse接口(doGet,doPost方法的参数),它继承自ServletResponse接口,专门用来封装HTTP响应消息。由于HTTP响应消息分为响应行、响应头、响应体三部分,因此,在HttpServletResponse接口中定义了向客户端发送响应状态码、响应头、响应体的方法.

response作用

操作响应的三部分(行, 头, 体)

1、操作响应行
返回值类型方法声明功能描述
voidsetStatus(int code)返回指定的响应状态码。

常用的状态码:
​ 200:成功
​ 302:重定向 ,重新定位方向
​ 304:访问缓存,告诉浏览器,缓存就是最新的内容。
​ 404:客户端错误
​ 500:服务器错误

2、操作响应头
方法声明功能描述
setHeader(String key,String value)设置字符串形式的响应头
setIntHeader(String key,int value)设值整形的响应头
setDateHeader(String key,long value)设值时间的响应头
addHeader(String key,String value)添加置字符串形式的响应头 之前设置过则追加,若没有设置过则设置
addIntHeader(String key,int value):添加整形的响应头
addDateHeader(String key,long value):添加时间的响应头

常用方法:setHeader(String name,String value);

常用的响应头
Refresh:定时跳转 (eg:服务器告诉浏览器5s之后跳转到百度)
Location:重定向地址(eg: 服务器告诉浏览器跳转到xxx) ,可以跳资源(网页|servlet)
Content-Disposition: 告诉浏览器现在打开的下载
Content-Type:设置响应内容的MIME类型(服务器告诉浏览器内容的类型)
例:
1、定时刷新
response.setHeader(“Refresh”,“秒数;url=跳转的路径”); //几秒之后跳转到指定的路径上定时刷新
2、重定向跳转
response.setHeader(“Location”, “register.html”); //重定向的路径(绝对路径,带域名/ip地址的,如果是同一个项目里面的,域名/ip地址可以省略)

常用方法: sendRedirect(String location)

重定向 response.sendRedirect(“重定向的路径”)
重定向两次请求,重定向的地址栏路径改变
例:
1、跳转HTML页面
response.sendRedirect(“register.html”);
2、跳转外面的公网资源
response.sendRedirect(“http://www.baidu.com”);

 转发和重定向区别【面试】
1. 转发是一次请求, 重定向是二次请求
2. 转发的路径不会改变,重定向的路径会改变
3. 转发只能转发到项目的内部资源,重定向可以重定向到项目的内部资源, 也可以是项目外部资源(eg:百度)
4. 转发可以转发到WEB-INF下面的资源, 重定向不可以重定向到WEB-INF下面的资源
5. 把数据存到request里面,转发有效, 重定向无效
6. 转发的路径写相对的(不带http,不带ip,不带项目名), 重定向的路径写绝对的(带http,带ip,带项目名)
3、操作响应体
返回值类型方法声明功能描述
PrintWritergetWrite()用于返回Servlet引擎创建的字符输出流对象,Servlet程序可以按字符形式输出响应正文
ServletOutputStreamgetOuputStream()用于返回Servlet引擎创建的字节输出流对象,Servlet程序可以按字节形式输出响应正文

操作响应体
getWrite()
1、会有乱码,需要设置 resp.setContentType(“text/html;charset=utf-8”);
2、可以写标签,浏览器可以认识的。
getOuputStream
1、不会有乱码,默认采用的是GBK编码,浏览器也认识。
2、不能识别标签
不能同时使用这两种来写数据。
页面输出只能使用其中的一个流实现,两个流是互斥的.

只是针对取值,也就是从浏览器传递过来的数据里面取出来中文乱码的解决办法

  req.setCharacterEncoding("utf-8");
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值