HttpServletRequest介绍和头信息的获取

2024-06-22 17:32

本文主要是介绍HttpServletRequest介绍和头信息的获取,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1 Tomcat请求响应
  • 2 HttpServletRequest基本功能
    • 2.1 HttpServletRequest的功能
    • 2.2 request获取请求头数据
    • 2.3 request获取请求相关的其它方法

1 Tomcat请求响应

Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象,request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了

2 HttpServletRequest基本功能

2.1 HttpServletRequest的功能

HttpServletRequestJavaWeb中非常重要的一个类。它是Servletservice()方法的参数之一!所以必须必须要掌握它!
request的功能可以分为以下几种:

  1. 封装了请求头数据;
  2. 封装了请求正文数据,如果是GET请求,那么就没有正文;
  3. request是一个域对象,可以把它当成Map来添加获取数据;
  4. 做请求的转发

2.2 request获取请求头数据

String value = request.getHeader(“请求头名称”);

request对象可以用来获取请求头数据,当然,这些请求数据都是Tomcat封装到request中去的。我们在service()方法中可以直接来获取!
request与请求头相关的方法有:

  1. String getHeader(String name):获取指定名称的请求头;
  2. Enumeration getHeaderNames():获取所有请求头名称;
  3. int getIntHeader(String name):获取值为int类型的请求头。
package com.rl.servlet;import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class HelloServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//根据头信息的key获得值String headVal = request.getHeader("Host");System.out.println("Host:" + headVal);// Host:localhost:8080//通过getHeaderNames获得所有头名字的Enumeration集合Enumeration<String> headNames = request.getHeaderNames();while(headNames.hasMoreElements()){String headName = headNames.nextElement();System.out.println(headName+":"+request.getHeader(headName));}
//  打印结果:          
//           host:localhost:8080
//           connection:keep-alive
//           cache-control:max-age=0
//           upgrade-insecure-requests:1
//           user-agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87Safari/537.36
//           accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
//           accept-encoding:gzip, deflate, sdch, br
//           accept-language:zh-CN,zh;q=0.8}
}

2.3 request获取请求相关的其它方法

request中还提供了与请求相关的其他方法,有些方法是为了我们更加便捷的方法请求头数据而设计,有些是与请求URL相关的方法。

  • int getContentLength():获取请求正文的字节数,GET请求没有正文,没有正文返回-1;
  • String getContentType():获取请求类型,如果请求是GET,那么这个方法返回null;如果是POST请求,那么默认为application/x-www-form-urlencoded(理解为字符串类型),其它类型以后再学;
  • String getMethod():返回请求方法,例如:GET
  • Locale getLocale():返回当前客户端浏览器支持的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用;
  • String getCharacterEncoding():获取请求编码,如果没有setCharacterEncoding(),那么返回null。表示使用ISO-8859-1编码;
  • void setCharacterEncoding(String code):设置请求编码,只对正文有效!注意,对于GET而言,没有正文!!!所以此方法只能对POST请求中的参数有效!

http://localhost:8080/hello/oneServlet?name=zhangSan

  • String getContextPath():返回上下文路径,例如:/项目名称
  • String getQueryString():返回请求URL中的参数,例如:name=zhangSan
  • String getRequestURI():返回请求URI路径,例如:/hello/oneServlet
  • StringBuffer getRequestURL():返回请求URL路径,例如:http://localhost/hello/oneServlet,即返回除了参数以外的路径信息;
  • String getServletPath():返回Servlet路径,例如:/oneServlet
  • String getRemoteAddr():返回当前客户端的IP地址;
  • String getRemoteHost():返回当前客户端的主机名,但这个方法的实现还是获取IP地址;
  • int getRemotePort():返回客户端的端口号,每次请求都会变;
  • String getSchema():返回请求协议,例如:http;
  • String getServerName():返回主机名,例如:localhost
  • int getServerPort():返回服务器端口号,例如:80

在这里插入图片描述
注意:要想获得服务器的绝对路径,之前是使用request.getRealPath(File.separator)现在已经不推荐使用了
但是可以使用这个方法request.getServletContext().getRealPath(File.separator)来获取服务器绝对路径
获得的服务器绝对路径如下:

================
D:\SoftWare-NeedSoftWare\Tomcat-Environment\Tomcat8.5\tomcat 8.5 8081\webapps\student-manage
================

代码实战:

    System.out.println("request.getContentLength(): " + request.getContentLength());System.out.println("request.getContentType(): " + request.getContentType());System.out.println("request.getContextPath(): " + request.getContextPath());System.out.println("request.getMethod(): " + request.getMethod());System.out.println("request.getLocale(): " + request.getLocale());System.out.println("request.getQueryString(): " + request.getQueryString());System.out.println("request.getRequestURI(): " + request.getRequestURI());System.out.println("request.getRequestURL(): " + request.getRequestURL());System.out.println("request.getServletPath(): " + request.getServletPath());System.out.println("request.getRemoteAddr(): " + request.getRemoteAddr());System.out.println("request.getRemoteHost(): " + request.getRemoteHost());System.out.println("request.getRemotePort(): " + request.getRemotePort());System.out.println("request.getScheme(): " + request.getScheme());System.out.println("request.getServerName(): " + request.getServerName());System.out.println("request.getServerPort(): " + request.getServerPort());

获取结果:
在这里插入图片描述

这篇关于HttpServletRequest介绍和头信息的获取的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084943

相关文章

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息