Servlet-客户端请求

Servlet 客户端 HTTP 请求 Servlet 是一种 Java 类,运行在 Web 服务器或应用服务器上。当客户端发送 HTTP 请求时,Servlet 会接收该请求并生成相应的 HTTP 响应。Servlet 通常用于处理表单数据、上传文件、生成动态 Web 内容等。Servlet 是 Java Web 应用程序中处理客户端 HTTP 请求的核心组件。通过本文的介绍,您应该已经了解了 Servlet 如何接收、解析和响应 HTTP 请求。掌握 Servlet 的使用对于开发 Java Web 应用程序至关重要。 阅读详情


当浏览器请求网页时,它会将大量信息发送到Web服务器,该信息无法直接读取,因为该信息作为HTTP请求标头的一部分传播。
以下是来自浏览器端的重要标头信息,您将在网络编程中经常使用:

序号标头和说明
1Accept:此标头指定浏览器或其他客户端可以处理的MIME类型。值一般为image/png或image/jpeg两种情况。
2Accept-Charset:此标头指定浏览器可用于显示信息的字符集。例如UTF-8。
3Accept-Encoding:此标头指定浏览器知道如何处理的编码类型。值一般为gzip或compress两种情况。
4Accept-Language:如果servlet可以使用多种语言生成结果,则此标头指定客户机的首选语言。例如en,en-us,ru等
5Authorization:客户端使用此标头在访问受密码保护的网页时标识自己。
6Connection:此标头指示客户端是否可以处理持久HTTP连接。持久连接允许客户端或其他浏览器通过单个请求检索多个文件。保持活动的值表示应使用持久连接。
7Content-Length:此标头仅适用于POST请求,并以字节为单位给出POST数据的大小。
8Cookie:此标头将cookie返回到先前已将其发送到浏览器的服务器。
9Host:此标头指定原始URL中给定的主机和端口。
10If-Modified-Since:此标头表示仅在指定日期之后更改页面,客户端才需要该页面。服务器发送代码304,如果没有可用的新结果,则表示未修改的标头。
11If-Unmodified-Since:此标头与If-Modified-Since相反;它指定仅当文档早于指定日期时,操作才能成功。
12Referer:此标头指示引荐网页的URL。例如,如果您在Web页1上并单击指向Web页2的链接,则当浏览器请求Web页2时,Referrer标头中将包含Web页1的URL。
13User-Agent:该标头标识了发出请求的浏览器或其他客户端,可用于将不同的内容返回给不同类型的浏览器。

读取HTTP标头的方法

有以下方法可用于读取servlet程序中的HTTP标头。这些方法可用于HttpServletRequest对象

序号方法与说明
1Cookie[] getCookies():返回一个数组,其中包含客户端与此请求一起发送的所有Cookie对象。
2Enumeration getAttributeNames():返回一个枚举,其中包含可用于此请求的属性的名称。
3Enumeration getHeaderNames():返回此请求包含的所有标头名称的枚举。
4Enumeration getParameterNames():返回一个String对象的枚举,其中包含此请求中包含的参数的名称
5HttpSession getSession():返回与此请求关联的当前的session,或者如果该请求没有session,则创建一个session。
6HttpSession getSession(boolean create):返回与此请求关联的当前的HttpSession;如果没有当前的session且create的值为true,则返回一个新的session。
7Locale getLocale():根据Accept-Language标头返回客户端将在其中接受内容的首选语言环境。
8Object getAttribute(String name):将命名属性的值作为Object返回;如果不存在给定名称的属性,则返回null。
9ServletInputStream getInputStream():使用ServletInputStream以二进制数据的形式检索请求的主体。
10String getAuthType():返回用于保护servlet的认证方案的名称,例如“ BASIC”或“ SSL”;如果未保护JSP,则返回null。
11String getCharacterEncoding():返回此请求正文中使用的字符编码的名称。
12String getContentType():返回请求正文的MIME类型;如果类型未知,则返回null。
13String getContextPath():返回请求URI中指示请求上下文的部分。
14String getHeader(String name):以字符串形式返回指定请求标头的值。
15String getMethod():返回发出此请求的HTTP方法的名称,例如GET,POST或PUT。
16String getParameter(String name):以字符串形式返回请求参数的值,如果参数不存在,则返回null。
17String getPathInfo():返回与客户端发出此请求时发送的URL相关的任何其他路径信息
18String getProtocol():返回请求的协议的名称和版本。
19String getQueryString():返回路径后面的请求URL中包含的查询字符串。
20String getRemoteAddr():返回发送请求的客户端的Internet协议(IP)地址。
21String getRemoteHost():返回发送请求的客户端的标准名称
22String getRemoteUser():如果用户已通过身份验证,则返回发出此请求的用户的登录名;如果用户未通过身份验证,则返回null。
23String getRequestURI():返回此请求的URL的一部分,从协议名称到HTTP请求第一行中的查询字符串。
24String getRequestedSessionId():返回客户端指定的会话ID。
25String getServletPath():返回此请求的URL中调用JSP的部分。
26String[] getParameterValues(String name):返回一个String对象数组,其中包含给定请求参数具有的所有值;如果该参数不存在,则返回null。
27boolean isSecure():返回一个布尔值,该布尔值指示是否使用安全通道(例如HTTPS)发出此请求。
28int getContentLength():返回请求主体的长度(以字节为单位),并由输入流提供;如果未知,则返回-1。
29int getIntHeader(String name):以int形式返回指定请求标头的值。
30int getServerPort():返回接收到该请求的端口号

HTTP标头请求示例

以下是使用HttpServletRequest的getHeaderNames()方法读取HTTP标头信息的示例。此方法返回一个Enumeration,其中包含与当前HTTP请求关联的标头信息。

一旦有了枚举,就可以使用hasMoreElements()方法确定何时停止并使用nextElement()方法获取每个参数名称,以标准方式循环枚举。

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response Header
      response.setHeader("contentType","text/html;charset=UTF-8");
      response.setContentType("text/html");
      response.setCharacterEncoding("UTF-8");
 
      PrintWriter out = response.getWriter();
      String title = "HTTP标头请求示例";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";

      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n"+
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n" +
         "<table width = \"100%\" border = \"1\" align = \"center\">\n" +
         "<tr bgcolor = \"#949494\">\n" +
         "<th>Header Name</th><th>Header Value(s)</th>\n"+
         "</tr>\n"
      );
 
      Enumeration headerNames = request.getHeaderNames();
    
      while(headerNames.hasMoreElements()) {
         String paramName = (String)headerNames.nextElement();
         out.print("<tr><td>" + paramName + "</td>\n");
         String paramValue = request.getHeader(paramName);
         out.println("<td> " + paramValue + "</td></tr>\n");
      }
      out.println("</table>\n</body></html>");
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

在这里插入图片描述
上一篇:Servlet-表单数据
下一篇:Servlet-Http状态代码

二、Servlet客户端HTTP请求和服务端HTTP响应 Servlet客户端HTTP请求和服务端HTTP响应关于HTTP知识的补充 B/S程序结构 JavaWeb是用于开发B/S模式的动态网页技术,主要包含 JSP、 Servlet等组件规范。 HTTP 消息结构:HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。 一个HTTP”服务器”同样也是一个应用程序(通常是一个Web服务,如Apac 阅读详情

相关推荐

使用sklearn学习多项式回归(三)

1,什么是线性 我们无数次提到”线性“这个名词。在支持向量机中,我们也曾经提到最初的支持向量机只能够分割线性可分的数据,然后引入了”核函数“来帮助我们分类那些非线性可分的数据。我们也曾经说起过,比如说决策树,支持向量机是”非线性“模型。所有的这些概念,让我们对”线性“这个词非常熟悉,却又非常陌生——因为我们并不知道它的真实含义。接下来我们看看线性回归模型改进的核心之一:帮助线性回归解决非线性问题。 1.1,变量之间的线性关系 ”线性“这个词用于描述不同事物时有着不同的含义。我们最常使用的线性是指“变量

理科男同学 5100

Servlet获取请求数据【HttpServletRequest】

HttpServletRequest方法了解getParamter 方法1.获取url QueryString中的数据2.获取body中表单格式3.获取form-data中的简单数据类型的数据getPart 方法getInputStream 方法 当 Tomcat 通过 Socket API 读取 HTTP 请求(字符串),并且按照 HTTP 协议的格式把字符串解析成 HttpServletRequest 对象 方法了解 部分方法: 方法 描述 String getProtocol() 返回

一朵花花 1万+

神经符号AI架构解析:如何通过V&V提升AI系统可信性

在人工智能领域,深度学习模型因其强大的模式识别能力而广泛应用,但其内部决策过程往往如同“黑盒”,难以追溯和解释,这给系统验证与确认带来了巨大挑战。验证与确认是确保复杂软件系统安全、可靠、符合预期的基石,其中验证关注“是否正确地构建了产品”,确认则关注“是否构建了正确的产品”。神经符号人工智能作为一种新兴范式,通过融合符号逻辑的透明推理与深度学习的强大感知,为解决这一难题提供了关键技术路径。它使得AI系统既能从数据中学习复杂模式,又能依据可形式化检验的规则进行逻辑推理,从而在自动驾驶、医疗诊断等高可靠性应用场

weixin_28681379的博客 356

java EE 获取请求行、请求头、请求正文

1、常用请求行信息获取的方法 1.1 获取请求提交的方式 // 统一编码方式防止中文乱码 response.setContentType("text/html;charset=utf-8"); // 获取请求方法 String method = request.getMethod(); 1.2 获取请求的协议 // 获取请求的协议 String protocol = request.getProtocol(); 1.3 获取项目名称 // 获取项目名称 String conttextPath = req

qq_43619461的博客 580

域控制器迁移后NETLOGON共享丢失的修复指南

本文详细解析了在Windows域控制器迁移后NETLOGON共享丢失的故障现象与修复方法。通过使用Dcdiag工具诊断,定位注册表键值SysVolReady异常及SCRIPTS目录缺失等核心原因,并提供了修改注册表、创建目录、重启Netlogon服务等逐步修复指南,帮助管理员快速恢复域用户登录功能,确保业务连续性。

weixin_29245767的博客 88

aubo i5 + realsense D435i识别抓取实践二

aubo i5 + realsense D435i识别抓取实践二前言一、手眼标定是什么?二、标定软件安装1.aruco_ros安装2.vision_visp安装3.easy_handeye安装4.realsense驱动安装5.安装realsense ROS软件包三、配置1.launch文件修改2.打印二维码四、手眼标定1.启动launch文件2.标定步骤3.发布tf关系 前言 前面配置好了aubo机械臂的ROS软件包,机械臂可以正常运行后,接下来我们进行机械臂与相机的手眼标定。手眼标定分为eye_on_ha

转角 6373

Servlet总结

三层架构:数据访问层,业务逻辑层,表示层。通常来说数据访问层放的是数据库的操作,一般写在dao包下,类名也以Dao结尾。业务逻辑层则是对业务逻辑的封装,用于判断数据库读取是否正常等判断。表示层是用来显示数据和接受用户的交互操作,分为前台和后台代码,前台为可视化界面,后台为调用业务逻辑层的代码,如servlet。和mvc设计模式相同,三层架构的目的是解耦,分层,代码复用。那么我们就来详细的说一下se...

全场梦游c的博客 603

OnePlus线刷救砖与OTA全量包:从故障恢复到系统升级的完整指南

本文详细介绍了OnePlus手机线刷救砖与OTA全量包的完整操作指南,包括故障诊断、线刷救砖实战教程、OTA全量包升级优势及进阶玩法。通过具体案例和实用技巧,帮助用户从系统故障恢复到安全升级,特别适合Android系统爱好者和OnePlus用户。

weixin_30338481的博客 619

Servlet编程---获取请求行信息

获取到对象后,我在通过循环依次输出请求头名称,再获取到请求头名称后面的内容 (request.getHeader(headerName))输出。第一种不仅发送到浏览器的内容会使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。在一个项目里面新建一个包,在包里面新建一个servlet文件,在doGet这个函数里面写获取请求行信息。我们request请求想要的请求行信息,由response返回数据,再用网页的方式输出内容。获取HTTP请求消息中的请求方式(GET/POST等)。

m0_63581842的博客 168

JLink 添加国产芯片手把手教程(雅特力 + 华大)

拷贝厂商算法文件夹 + 配置 JLinkDevices.xml。雅特力直接复制官方配置,华大按需添加芯片节点,操作一次,永久生效,以后调试 AT32、HC32 再也不用愁找不到型号。这套方法适配全版本 JLink,也是国产 MCU 替代项目的必备技能,看完照着做,新手也能轻松搞定。百度网盘资料分享:通过网盘分享的文件:jink驱动(包括新增芯片型号)链接: https://pan.baidu.com/s/14SLgrPfyof1lglD6VQguAw?pwd=cfuq 提取码: cfuq。

weixin_48867130的博客 710

寻路最终版哦

相信大家用unity3d寻路的时候,一定会碰到多人

yxriyin的专栏 6954

eclispe配置和tomact详解

JAVAweb第一天 目录 一、配置Tomcat以及eclpse集成Tomact 二、建立web项目,访问静态页面 1.建立项目 2.新建servlet 三、建立第二个servlet Servlet简介 Servlet是一种独立于平台和协议的服务器端的Java技术,可以用来生成动态的Web页面。 Servlet是使用Java Servlet应用程序设计接口(API)及相关类和方法的Java程序。 Servlet主要用户处理客户端传来的HTTP请求,并返回一个响应。通常Servlet是指HttpServlet

qq_55701820的博客 241

15 RK3568 RTL8111 PCIE

我这边扩了三个网卡。pcie3.0拆分了1+1lane。需要注意自己的reset引脚修改为自身rtl引脚即可。1、调试pcie 扩展网卡 RTL8111。

qq_39451352的博客 179

Servlet容器响应客户端请求访问特定的Servlet流程

Servlet容器响应客户端请求访问特定的Servlet流程如下: 1.客户端发出要求访问特定的Servlet的请求 2.Servlet容器接收到客户请求,对其解析 3.Servlet容器创建一个ServletRequest对象,在ServletRequest对象中包含客户请求信息及其它关于客户的信息,如:请求头,请求正文,以及客户机的ip地址等 4.Servlet容器创建一个Servle

gdn_wolf的专栏 1854

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Servlet处理客户端请求过程

前言 由于Servlet没有main函数,运行在容器中,所以整个生命周期由容器控制。具体可以分为5个状态: 加载,容器通过类加载器来加载Servlet。 创建,通过Servlet构造方法创建Servlet对象。 初始化,调用Servlet的init()方法,进行初始化工作,注意,只初始化一次。 处理客户端请求。容器在接到客户端请求时,都会创建一个新的线程,通过调用Servlet的serv...

Hollake的博客 2928

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Servlet处理客户端HTTP请求

本篇博客将在上一篇博客《Servlet第一个示例》的基础上继续介绍,Servlet如何处理客户端的请求,获得客户端的请求消息。

蒋固金(jianggujin)的专栏 4896

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Servlet 客户端 HTTP 请求(4)

Servlet 客户端 HTTP 请求 @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 设置响应内容类型 resp.setContentType("text/html;charset=UTF-8"); PrintWriter out = resp.getWrite

zhanghw的博客 171

java servlet 请求_Servlet 客户端 HTTP 请求

Servlet 客户端 HTTP 请求当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。您可以查看 HTTP 协议 了解更多相关信息。以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用:头信息描述Accept这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 ...

weixin_42498347的博客 231

从零开始学习Servlet(3):客户端请求和Servlet响应

Servlet 客户端请求 客户端请求后台数据,部分数据作为HTTP请求头的一部分,不能直接读取: 头信息 描述 头信息 描述 Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常见的两种可能值。 Accept-Charset 这个头信息指定浏览器可以用来显示信息的字符集。例...

yt618121的专栏 888

第六章 Servlet 客户端 HTTP 请求

文章目录关于本篇文章致谢Servlet 客户端 HTTP 请求读取 HTTP 头的方法HTTP Header 请求实例 关于本篇文章 了解一些 servlet 概念,本编文章只进行一些文章格式修改,文章内使用的图片均来自 Runoob 网站 致谢 感谢 Runoob 提供的相关资料,官方资料地址Servlet 教程 Servlet 客户端 HTTP 请求 当浏览器请求网页时,它会向 Web 服务器...

lee_ccr的博客 175

Android客户端HTTP请求服务端Servlet

*要想成为高级安卓工程师,必须掌握许多基础的知识。**在工作中,这些原理可以极大的帮助我们理解技术,在面试中,更是可以帮助我们应对大厂面试官的刁难。《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!对大厂面试官的刁难。[外链图片转存中…(img-Tbd44sif-1713804291025)][外链图片转存中…(img-O7FMsHpo-1713804291027)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

m0_74931244的博客 1052
上一篇: Servlet-生命周期
下一篇: Servlet-Http状态代码
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值