(HTTP请求消息)Servlet之Request

Request

请求消息数据格式

  1. 请求行
    请求方式 请求url 请求协议/版本
    eg:Get/hello.html HTTP/1.1
请求方式:HTTP有7种请求方式,常用两种
 1. GET:请求参数在请求行种,跟在url后,请求长度有限
 2. POST:请求参数在请求体中,长度没有限制
  1. 请求头
    请求头名称:请求头值
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Referer:http://localhost/hello.html
Connection: keep-alive
Host: localhost:8080
Upgrade-Insecure-Requests: 1
 1. User-Agnet:浏览器告诉服务器,我访问服务器使用的浏览器版本信息。可以在服务器端获取浏览器信息,解决兼容问题
 2. Referer:http://localhost/hello.html
	告诉服务器我从哪里来,防止其他网址盗链,也可以进行统计
  1. 请求体
    和报文头部中间 有空行负责分割,内部放置请求参数。内部存储POST访问消息
    参数名=参数内容

Request对象

使用流程
  1. tomcat服务器根据url请求资源,创建对应Servlet对象
  2. tomcat创建requestresponse对象,request中封装请求消息数据
  3. tomcat 将requestresponse两个对象传递给service方法
  4. 通过service处理请求数据,通过response对象设置响应消息数据。
  5. 服务器再给浏览器做出响应之前,会从response对象中拿出程序员设置的响应消息,放入响应内容中。
继承关系

ServletRequest接口HttpServletRequest接口继承,org.app.catalina.connector.RequestFacade是tomcat对上述接口的实现类

Request功能

获取请求消息数据

http://localhost:8080/day08_web/demo?name=zhangsan HTTP/1.1

获取请求行数据
方法功能
String getMethod()获取请求方式:GET POST
🌟String getContextPath()获取虚拟目录 /day08_web
String getServletPath()获取Servlet路径 /demo
String getQueryString()获取get方式请求参数 name=zhangsan
🌟String getRequestURI()获取请求URI /day08_web/demo
String getRequestURL()获取请求URL http://localhost:8080/day08_web/demo
String getProtocol()获取协议及版本 HTTP/1.1
String getRemoteAddr()获取客户机IP地址
获取请求头数据
方法功能
🌟String getHeader(String name)根据请求头名称,获取请求头值
Enumeration< String> getHeaderNames()获取所有请求头名称
获取请求体数据

只有POST才有请求体,首先获取流对象,在从流对象中拿数据

方法功能
BufferedReader getReader()获取字符流
ServletInputStream getInputStream()获取字节流数据,可以操作所有类型数据
其他功能
获取请求参数通用方式
方法功能
🌟String getParameter(String name)根据参数名称获取参数值 username=zhangsan&password=123
String[] getParameterValues(String name)根据参数名称获取参数值数组 grade=80&grade=90
Enumeration< String> getParameterNames()获取所有参数名称
🌟Map< String,String[]> getParameterMap()获取所有参数的map集合

通过GET方法接受参数,中文不会报错但是POST方法会报错,方法获取参数前设置编码方式

request.setCharacterEncoding("utf-8");
请求转发
  • 服务器内部资源跳转的方式
  • 转发资源后浏览器地址没有改变
  • 不能访问服务器外部资源
  • 转发是一次请求,但是调用多个Servlet
  • Response的重定向和转发不同
方法功能
🌟RequestDispatcher getRequestDispatcher(String path)通过request对象获取请求转发器对象
🌟forward(ServletRequest request,ServletResponse response)使用RequestDispatcher对象来进行转发
共享数据

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

方法功能
setAttribute(String name, Object o)存储此请求中的属性。在请求之间重置属性。此方法常常与 RequestDispatcher 一起使用。
removeAttribute(String name)从此请求中移除属性。此方法不是普遍需要的,因为属性只在处理请求期间保留。
Object getAttribute(String name)以 Object 形式返回指定属性的值,如果不存在给定名称的属性,则返回 null。
获取ServletContext
方法功能
ServletContext getServletContext()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值