学习笔记-Request对象

请求消息数据格式

1.请求行
格式:请求方式 请求URL 请求协议/版本 如:GET /login.html HTTP/1.1
请求方式(Http协议有7种请求方式,常用的有2种GET和POST):

  • GET:
    1.请求参数在请求行中,在URL后
    2.请求的URL长度有限制
    3.不太安全
  • POST:
    1.请求参数在请求体中
    2.请求的URL长度没有限制的
    3.相对安全

2.请求头:客户端浏览器告诉服务器一些信息
格式: 请求头名称:请求头值(中间以冒号隔开,若有多个值用逗号隔开)
常见请求头:
1.User-Agent:浏览器告诉服务器当前浏览器的版本信息
2.Referer:告诉服务器当前请求从哪里来;作用:1.防盗链,2.统计工作
3.请求空行:用于分隔请求头和请求体
4.请求体(请求正文):封装Post请求消息的请求参数的,Get请求消息没有请求体和请求空行

Request

request和response对象的原理:
1.request和response对象由tomcat创建,传递给service方法并调用service方法
2.request对象封装了请求消息数据,可用来获取请求消息;response对象用于设置响应消息

request对象的继承体系结构:
ServletRequset --接口
| 继承
HttpServletRequest --接口
| 实现
org.apache.catalina.connector.RequestFacad --实现类,由tomcat编写

request对象的功能:

一、获取请求消息数据:
1.获取请求行数据
方法:

①getMethod():获取请求方式
②getContextPath():获取虚拟目录
③getServletPath():获取Servlet路径
④getQueryString():获取Get方式的请求参数
⑤getRequestURI():获取请求URI
⑥getRequestURL():获取请求URL
URI(统一资源标识符),范围相对URL来说更大
URL(统一资源定位符),范围相对URI来说更小
⑦getProtocol():获取协议及版本信息
⑧getRemoteAttr():获取客户机的IP地址

2.获取请求头数据
方法:

①getHeader(Srting name):通过请求头的名称获取请求头的值
②Enumeration<String> getHeaderNames():获取所有请求头的名称

3.获取请求体数据
注意:只有请求方式为Post才有请求体,在请求体中封装了Post请求的请求参数
步骤:

①获取流对象
BufferedReader  getReader():获取字符输入流
ServletInputStream  getInputSteram():获取字节输入流
②从流对象中获取数据

二、其他功能:
1.获取请求参数(通用方式,无论是get请求还是post请求都能使用)

①String  getParameter(String name) :根据参数名称获取参数值
②String[] getParameterValues(String name):根据参数名称获取参数值的数组
③Enumeration<String> getParameterNames():获取所有请求参数名称
④Map<String,String[]>  getParameterMap():获取所有参数的Map集合

注意:获取中文参数乱码问题
1.在tomcat 8 以上版本已经解决了get方式的乱码问题
2.在获取参数之前设置request编码request.setCharacterEncoding(“utf-8”),就可以解决post方式乱码问题。
2.请求转发:一种在服务器内部的资源跳转方式
步骤:

1.通过request对象获取请求转发器对象:
RequestDispatcher  getRequestDispatcher(String path)  
2.使用RequestDispatcher对象进行转发:
forward(SrevletRequest request,ServletResponse response)
  • 特点:
    1.浏览器地址不发生变化
    2.只能转发到当前服务器内部资源
    3.转发是一次请求

3.共享数据
域对象:一个有作用的范围的对象,在范围内共享数据
request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据
方法:

void  setAttribute(String name,Object obj):存储数据
Object  getAttribute(String name):通过键获取数据
void  removeAttribute(String name):通过键移除键值对

4.获取ServletContext
ServletContext getServletContext()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值