热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

HttpServletRequest对象简介_动力节点Java学院整理

这篇文章主要为大家详细介绍了HttpServletRequest对象简介的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

通过getMethod方法获得的是客户端访问该web应用的Http请求方式。

代码和结果如下:

String requestMethod = request.getMethod();
System.out.println(requestMethod); 

想获取客户端发来的HTTP请求头中的内容可以使用如下方法:

getDateHeader()

getHeader(String)

getHeaderNames()

getHeaders(String)

getIntHeader(String);

这些方法在各个特定的情况下能有不同的用途,体现出获取客户端请求头方式的多样性。

如通过getHeader(String)可以获取指定请求头的数据内容:

String cOnnectionState= request.getHeader("Connection");
System.out.println(connectionState);

而通过getHeaderNames()可以获取发送的所有请求头,例:

Enumeration e = request.getHeaderNames();
 while(e.hasMoreElements()) {
    String headerName = (String) e.nextElement();
    String headerValue = request.getHeader(headerName);
    System.out.println(headerName+":"+headerValue);
 }

而通过getHeaders(String)方法获取的是某个同名头的内容,适用于当某个请求头有多个内容时使用。

介绍完获取请求行和请求头,下面介绍获取请求数据中内容的方法:

getPatameter(String)

getParameterNames()

getParameterValues(String)

getParameterMap()

和getInputStream()

使用getPatameter(String)方式可以获取请求数据中指定的数据值

代码如下:

String value = request.getParameter("username");
System.out.println(value);

常可以在浏览器地址URL后直接写入参数数据来模拟GET方式:

最终在控制台得到:

通过getParameterNames()可以获取多个参数:

Enumeration e = request.getParameterNames();
 while(e.hasMoreElements()) {
  String paramName = (String)e.nextElement();
  String paramValue = request.getParameter(paramName);
  System.out.println(paramName+":"+paramValue);
 }

使用getParameterValues(String)有助于获取当请求数据参数名有相同时的情况:

比如下面这种情况:

代码:

String[] values = request.getParameterValues("username");
  for(int i=0;i

在控制台观察:

  

(注意:像getPatameter(String)、getParameterValues(String)等等这样的方法,都要小心空指针异常,可能的原因在于并没有这样的参数,还有一种就是在URL后没有任何参数传入,所以要特别注意,应该加入健壮性判断。这也是编程过程中会碰到传入参数都应该注意的问题。)

使用getParameterMap()可以获取以请求数据中参数和参数值作为的键值对的Map集合。这样我们就能同时获取键值对。假设有如下情况:

代码为:

Map map = request.getParameterMap();
  for(Map.Entry entry :map.entrySet()) {
  String paramName = entry.getKey();
  for(int i=0;i

如果请求数据参数为:

那么在控制台上看到的则是:

以上说明了常用的获取数据的方式,还有一种属于request响应对象的getInutStream方法,而这个方法一般只用于大容量的数据获取,比如文件上传,将在之后的篇章中介绍。

下面介绍其他常用方法

通过getRequestURI方法和getRequestURL可以获取http请求服务器资源的URI和URL,关于URI和URL的区别可以通过获取后的字符串来查看:

代码:

String fileURI = request.getRequestURI();
System.out.println("URI: "+fileURI);

StringBuffer fileURL = request.getRequestURL();
System.out.println("URL: "+fileURL.toString());

访问该Servlet,得到:

可以看出URI只包括在服务器中的web应用名和资源对外访问路径(虚拟目录)。

通过getQueryString()方法可以获取URL上由GET方式带来的参数:

若代码为:

System.out.println(request.getQueryString());

而我在访问这个Servlet的URL上添加:“?username=fjdingsd&password=123”:

那么当访问这个Servlet之后,在MyEclipse的控制台将看到:

通过getRemoteAddr方法可以获取访问该web应用的客户端IP地址。

代码:

System.out.println(request.getRemoteAddr());

而通过getRemoteHost方法获取的是访问该web应用的客户端主机名,如果没有在DNS服务器上注册的则是获取IP地址。这里说的主机名是指在DNS上注册的,比如www.baidu.com,那么通过该方法如果从该主机上来访问,则获取到的是:baidu.com。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • 本文介绍了Spring 2.0引入的TaskExecutor接口及其多种实现,包括同步和异步执行任务的方式。文章详细解释了如何在Spring应用中配置和使用这些线程池实现,以提高应用的性能和可管理性。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • 如何使用 `org.eclipse.rdf4j.query.impl.MapBindingSet.getValue()` 方法及其代码示例详解 ... [详细]
  • 在Eclipse中提升开发效率,推荐使用Google V8插件以增强Node.js的调试体验。安装方法有两种:一是通过Eclipse Marketplace搜索并安装;二是通过“Help”菜单中的“Install New Software”,在名称栏输入“googleV8”。此插件能够显著改善调试过程中的性能和响应速度,提高开发者的生产力。 ... [详细]
  • Eclipse安装教程:解决Genymotion配置中的疑难杂症
    Eclipse安装教程:解决Genymotion配置中的疑难杂症 ... [详细]
  • 基于JSP和SSM框架的超市收银系统毕业设计论文及源代码分析
    本研究基于JSP和SSM框架开发了一套超市收银系统,旨在提升超市收银效率和管理便捷性。系统运行环境包括JDK 1.8、Tomcat 7.0、MySQL数据库以及HBuilderX(也可使用WebStorm)作为前端开发工具,后端开发则采用Eclipse(IntelliJ IDEA亦可)。该系统实现了商品管理、订单处理、库存管理和报表生成等核心功能,具有良好的稳定性和扩展性。通过详细的设计与实现过程,本文为相关领域的研究提供了有价值的参考。 ... [详细]
  • 基于试题数据的智能化管理平台采用Java语言进行面向对象编程,旨在构建一个高效的试题信息管理系统。该系统在JDK 6.0和MyEclipse 10.6环境下开发,通过优化试题数据管理和处理流程,提升系统的稳定性和用户体验。平台支持多用户操作,具备强大的数据处理能力和灵活的扩展性,适用于各类教育机构和考试组织。 ... [详细]
  • Eclipse项目重新编译指南:提升开发效率的关键步骤
    在Eclipse中,可以通过以下步骤来提高项目的编译效率:首先,在“Project”菜单中选择“Clean”选项,然后在弹出的对话框中选择需要清理的项目,并点击“OK”。完成清理后,重新运行或调试项目以确保代码的最新状态。此外,定期清理项目有助于消除编译错误和缓存问题,从而提升开发体验。 ... [详细]
  • Eclipse中解决JDK源码断点调试失效的问题 ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 如何在Eclipse中配置不同文件类型的默认打开方式
    在Eclipse中配置不同文件类型的默认打开方式是一项常见的需求。本文将指导您如何轻松地修改Eclipse中各种文件类型的默认打开方式。具体步骤如下:首先,启动Eclipse,然后依次点击【Window】--【Preferences】进入设置界面。接下来,您可以根据需要选择相应的文件类型,并指定其默认打开的编辑器或工具。通过这些设置,您可以显著提升开发效率和工作便捷性。 ... [详细]
  • 在使用SSH框架进行项目开发时,经常会遇到一些常见的问题。例如,在Spring配置文件中配置AOP事务声明后,进行单元测试时可能会出现“No Hibernate Session bound to thread”的错误。本文将详细探讨这一问题的原因,并提供有效的解决方案,帮助开发者顺利解决此类问题。 ... [详细]
author-avatar
爱在明天2502870673
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有