HttpServletRequest

公共接口类HttpServletRequest继承自ServletRequest。客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。对象包含了客户端请求信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。HttpServletResponse继承了ServletResponse接口,并提供了与Http协议有关的方法,这些方法的主要功能是设置HTTP状态码和管理Cookie。

  request就是将请求文本封装而成的对象,所以通过request能获得请求文本中的所有内容,请求头、请求体、请求行 。

1.请求行(https://baike.baidu.com/item/HTTP请求/10882159)

  • String getRemoteAddr()返回发送请求的客户端或最后一个代理的Internet协议**(IP)地址**。对于HTTP servlets,与cgi变量remote_addr的值相同。

    返回:

    包含发送请求的客户端的IP地址的字符串
  • String getMethod()返回用于发出此请求的HTTP方法的名称,例如GET、POST或PUT。与CGI变量REEST方法的值相同。

    返回:

    指定用于发出此请求的方法的名称的字符串
  • String getQueryString() 返回路径后请求URL中包含的查询字符串。如果URL没有查询字符串,则此方法返回空值。与CGI变量查询字符串的值相同。

    返回:

    包含查询字符串的字符串,如果URL不包含查询字符串,则为空。该值未被容器解码。
  • String getRequestURI()返回从协议名到HTTP请求第一行查询字符串的该请求的URL部分。Web容器不解码此字符串。

    返回:

    包含从协议名到查询的URL部分的字符串
  • String getRequestURL()重新构造客户端用于发出请求的URL。返回的URL包含协议、服务器名称、端口号和服务器路径,但不包含查询字符串参数。

    如果此请求已使用RequestDispatcher.Forward(javax.servlet.servletRequest、javax.servlet.servletResponse)转发,则重建的URL中的服务器路径必须反映用于获取RequestDispatcher的路径,而不是客户端指定的服务器路径。

    由于此方法返回的是StringBuffer,而不是字符串,因此可以轻松修改URL,例如附加查询参数。

    此方法对于创建重定向消息和报告错误很有用。

    返回:

    包含重建的URL的StringBuffer对象
  • String getServletPath()返回此请求的URL中调用servlet的部分。此路径以“/”字符开头,包括servlet名称或servlet的路径,但不包括任何额外的路径信息或查询字符串。与cgi变量script_name的值相同。

    如果用于处理此请求的servlet使用“/”模式匹配,则此方法将返回空字符串(“”)。

    返回:

    包含被调用servlet的名称或路径的字符串,如请求URL中指定,已解码,或者如果用于处理请求的servlet使用“/
    ”模式匹配,则为空字符串。
  • String getContextPath()返回请求URI中指示请求上下文的部分。上下文路径总是位于请求URI的第一位。路径以字符开头,但不以字符结尾。对于默认(根)上下文中的servlet,此方法返回“”。容器不解码此字符串。

    servlet容器可能通过多个上下文路径匹配上下文。在这种情况下,此方法将返回请求使用的实际上下文路径,并且可能与servletcontext.getContextPath()方法返回的路径不同。servletContext.getContextPath()返回的上下文路径应被视为应用程序的第一个或首选上下文路径。

    返回:

    指定请求URI的一部分的字符串,该部分指示请求的上下文
		String remoteAddr = request.getRemoteAddr();
String remoteUser = request.getRemoteUser();
String method = request.getMethod();
String contextPath = request.getContextPath();
String servletPath = request.getServletPath();
String queryString = request.getQueryString();
String requestURI = request.getRequestURI();
StringBuffer requestURL = request.getRequestURL();

结果

		0:0:0:0:0:0:0:1
null
GET
/JdbcTemplate_war_exploded
/a
age=18&name=jack
/JdbcTemplate_war_exploded/a
http://localhost:8999/JdbcTemplate_war_exploded/a

2.请求头

key-value

请求头(Request Header)

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。

重要方法

  • String getHeader(String name)//返回指定请求头的值

    String getHeader(String name)以字符串形式返回指定请求头的值。如果请求不包含指定名称的头,则此方法返回空值。如果有多个具有相同名称的头,此方法将返回请求中的第一个头。头名称不区分大小写。您可以将此方法用于任何请求头。

    参数:

    名称-指定头名称的字符串

    返回:

    包含请求头的值的字符串,如果请求没有该名称的头,则为空。

  • Enumeration<String> getHeaderNames()

    返回此请求包含的所有头名称的枚举。如果请求没有头,则此方法返回空枚举。

    某些servlet容器不允许servlet使用此方法访问头,在这种情况下,此方法返回空值

    返回:

    与此请求一起发送的所有头名称的枚举;如果请求没有头,则为空枚举;如果servlet容器不允许servlet使用此方法,则为空

    枚举遍历类似迭代器

		Enumeration<String> headers = request.getHeaderNames();
while (headers.hasMoreElements()){
System.out.println(headers.nextElement());
}

结果

host
connection
cache-control
upgrade-insecure-requests
user-agent
sec-fetch-mode
sec-fetch-user
accept
sec-fetch-site
accept-encoding
accept-language
cookie

3.请求体

post方法才有请求体

HttpServletRequest对象,请求行、请求头、请求体的更多相关文章

  1. HTTP 笔记与总结(2 )HTTP 协议的(请求行的)请求方法 及 (响应行的)状态码

    (请求行的)请求方法 包括: GET,POST,HEAD,PUT,TRACE,DELETE,OPTIONS 注意:这些请求方法虽然是 HTTP 协议规定的,但是 Web Server 未必允许或支持这 ...

  2. HTTP请求行、请求头、请求体详解

    HTTP 请求头各参数具体含义 Header 解释 示例Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/htmlAccept-Charset 浏览器可以接 ...

  3. HTTP请求行、请求头、请求体详解(转)

    转自 https://blog.csdn.net/u010256388/article/details/68491509/     HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+ ...

  4. Http协议入门、响应与请求行、HttpServletRequest对象的使用、请求参数获取和编码问题

    1 课程回顾 web入门 1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动:  %tomcat%/bin/startup.bat 关闭: %tomcat%/ ...

  5. 【校招面试 之 网络】第3题 HTTP请求行、请求头、请求体详解

    1.HTTP请求报文解剖 HTTP请求报文由3部分组成(请求行+请求头+请求体): 下面是一个实际的请求报文: ①是请求方法,GET和POST是最常见的HTTP方法,除此以外还包括DELETE.HEA ...

  6. HTTP请求报文(请求行、请求头、请求体)

    HTTP协议 1.简介 HTTP协议(Hyper Text Transfer Protocol,超文本传输协议),是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的 ...

  7. 入门servlet:request获取请求行数据

    /** * 演示Request对象获取请求行数据 */ @WebServlet("/test") public class RequestDemo1 extends HttpSer ...

  8. http请求(get 和 post 请求)与响应

    版权声明:欢迎转载 https://blog.csdn.net/chenmoquan/article/details/36656101 一.http请求 http请求基本格式 ============ ...

  9. Java Web 之HttpServletRequest对象初识

    通过request对象获得请求行 获得客户端请求方式:String getMethod(); 获得请求的资源: String getRequestURL(); String getQueryStrin ...

随机推荐

  1. 报错:Maven创建An internal error occurred during: "Retrieving archetypes:". Java heap space

    在Eclipse中创建Maven的Web项目时出现错误:An internal error occurred during: "Retrieving archetypes:". J ...

  2. Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……

    #分析以下需求,并用代码实现: 1.定义动物类 属性: 年龄,颜色 行为: eat(String something)方法(无具体行为,不同动物吃的方式和东西不一样,something表示吃的东西) ...

  3. Mysql常用sql语句(17)- left/right join 外连接

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 外连接分为两种:left join.right ...

  4. zabbix-agent客户端安装与配置

    zabbix-agent客户端安装与配置 下载abbix-agent客户端源码软件包 解压agent源码包,并且切换到解压目录. [root@localhost ~]# tar -zxf zabbix ...

  5. python语法学习第七天--文件

    打开文件:open() 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法. open(file, mode='r', buffering=-1, encoding=None ...

  6. 设计模式之GOF23策略

    策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同 ...

  7. Android 编译系统

    1,Makefile编译方式 TARGET: PREREQUISITES COMMANDS 1,TARGET是需要生成的目标文件,PREREQUISTIES代表了目标所依赖的所有文件. 2,简单的Ma ...

  8. 2018-06-21 js正则表达式

    正则表达式:描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串.将匹配的子串替换或者从某个串中取出符合某个条件的子串等. 1.修饰符 i->忽略大小写: g->全部匹配: m- ...

  9. Excel 数据导入至Sqlserver 数据库中 ltrim() 、rtrim() 、replace() 函数 依次空格无效问题

    今天导一些数据从Excel中至Sqlserver 数据库中,在做数据合并去重的时候发现,有两条数据一模一样,竟然没有进行合并: 最后发现有一条后面有个“空格”,正是因为这个“空格”让我抓狂许久,因为它 ...

  10. layui菜单点击刷新,自适应

    最近在项目上用layui框架后台iframe版,遇到的一些问题分享: 1.项目的左侧菜单点击对应的子菜单能自动刷新问题. 2.除了在左侧有菜单,还需要在右侧需要一个菜单(跳转到新页面),并且能够伸缩自 ...