百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Servlet总结十一:HttpServletRequest接口

wxin55 2024-10-27 15:57 12 浏览 0 评论

1、HttpServletRequest是一个接口,Servlet规范中重要的接口之一;

2、继承关系:public interface HttpServletRequest extends ServletRequest;

3、HttpServletRequest接口的实现类是Web容器负责的,Tomcat服务器有自己的实现。但是程序要还是只需要面向HttpServletRequest接口调用方法即可,不需要关心具体的实现类;

4、HttpServletRequest这个对象中封装了哪些信息?

1、请求方式

2、URI

3、协议版本号

4、表单提交的数据

5、HttpServletRequest对象代表一次请求,一次请求执行一次service()方法,对应一个request对象,100个请求对应100个request对象,所以request对象的生命周期是短暂的;

什么是一次请求?到目前为止,我们可以这样理解一次请求:在网页上点击超链接,到最终网页停下来,这就是一次完整的请求;(后面学习重定向,浏览器会自动跳转到其他地址,会重新发送新的请求,这句话就不正确了)

6、表单提交的这些数据被自动封装在request对象中了 表单数据是这样的格式提交的,POST请求,在请求体中提交,数据格式:

username=admin&password=123&sex=boy&interest=sport&interest=music&grade=gz&introduce=student

表单提交的数据会自动封装到request对象中,request对象中有一个Map集合,存储这些数据

Map<String, String>

key value(value是数组)

----------------------------------------------------------------------

username {"admin"}

password {"123"}

sex {"boy"}

interest {"sport",music}

grade {"gz"}

introduce {"IAmAStudent"}

7、HttpServletRequest中常用的方法

表单提交的数据会封装在request对象的Map集合中,key是name,value是一个一维数组

/*获取浏览器提交的数据*/
String getParameter(String name) 获取key对应的一维数组的首元素
Map getParameterMap() 获取request对象中的Map集合
Enumeration getParameterNames() 获取所有的Map集合中所有的key
String[] getP arameterValues(String name) 返回String数组,数组包含key对应的多个value值

/*获取路径、URL、URI、IP*/
String getContextPath() 获取上下文路径(web项目根路径)
String getMethod() 获取浏览器请求方式
String getRequestURI() 获取请求的URI
StringBuffer getRequestURL() 获取请求的URL
String getServletPath() 获取请求的ServletPath,即servlet对应的请求路径
String getRemoteAddr() 获取客户端IP地址

/*从一次请求对应的HttpServletRequest对象范围中增删查数据*/
Object getAttribute(String name) 从此次请求对应的request对象范围中获取数据
void setAttribute(String name, Object o) 从此次请求对应的request对象范围中存储数据
void removeAttribute(String name) 从此次请求对应的request对象范围中删除数据

/*请求转发器*/
RequestDispatcher getRequestDispatcher(String path) 获取请求转发器

/*编码*/
void setCharacterEncoding(String env) 覆盖此请求正文中使用的字符编码的名称

/**/
HttpSession getSession() 返回与此请求关联的当前会话,或者如果该请求没有会话,则创建一个。
Cookie[] getCookies() 返回一个数组,其中包含Cookie 客户端与此请求一起发送的所有对象。


8、HttpServletRequest和ServletContext的范围

1、HttpServletRequest是一次请求对应一个request对象,所以范围小

2、ServletContext是webapp的上下文对象,范围极大

3、setAttribute、getAttribute、removeAttribute这些方法,在ServletContext和ServletContext接口中都存在,用来在其各自的范围内进行数据的增删查,所以在request对象的范围增删查和在Servlet上下文对象的范围增删查是不一样,且互不干扰的

9、一次请求Servlet对应的request对象,在此request中存储数据,可以在此request对象中取出;但是在另一次请求Servlet对应的request对象,是没有第一次请求时在request对象中添加的数据的。要解决这个不同请求对应的不同request对象之间无法共享数据的问题,需要使用请求转发技术



相关推荐

Java框架 —— Spring简介

简介一般来说,Spring指的是SpringFramework,它提供了很多功能,例如:控制反转(IOC)、依赖注入(DI)、切面编程(AOP)、事务管理(TX)主要jar包org.sprin...

Monkey自动化测试

Monkey1.通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常;2.Monkey主要用于Android的压力...

十年之重修SpringBoot启动&amp;自动装载&amp;Bean加载过程

总结Springboot的自动装载,完全是依赖Bean的自动注册,其中默认的规则,是把需要自动装载的bean全名称编辑在spring.factories(2.7之后的版本,还支持.imports文件)...

一些可以显著提高大型 Java 项目启动速度的尝试

我们线上的业务jar包基本上普遍比较庞大,动不动一个jar包上百M,启动时间在分钟级,拖慢了我们在故障时快速扩容的响应。于是做了一些分析,看看Java程序启动慢到底慢在哪里,如何去优化,...

class 增量发包改造为 jar 包方式发布

大纲class增量发包介绍项目目录结构介绍jar包方式发布落地方案class增量发包介绍当前项目的迭代修复都是通过class增量包来发版本的将改动的代码class增量打包,如下图cla...

Flink架构及其工作原理(很详细)

原文链接:https://www.cnblogs.com/code2one/p/10123112.html关键词:Flink架构、面试杀手锏!更多大数据架构、实战经验,欢迎关注【大数据与机器学习】,...

大促系统优化之应用启动速度优化实践

作者:京东零售宋维飞一、前言本文记录了在大促前针对SpringBoot应用启动速度过慢而采取的优化方案,主要介绍了如何定位启动速度慢的阻塞点,以及如何解决这些问题。希望可以帮助大家了解如何定位该类问...

Maven工程如何使用非Maven仓库jar包

使用Maven之前,一直都是自己手工在网上搜索需要的jar包,然后添加到工程中。以这样的方式开发,工作了好多年,曾经以为以后也会一直这样下去。直到碰上Maven,用了第一次,就抛弃老方法了。Maven...

【推荐】一款开源免费、功能强大的短链接生成平台

项目介绍reduce是一款开源免费、功能强大的短链接生成平台。部署在服务器,使用短域名解析即可提供服务。CoodyFramework首秀,自写IOC、MVC、ORM、TASK、JSON、DB连接池、...

K8S官方java客户端之七:patch操作

欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;...

Java 的业务逻辑验证框架 之-fluent-validator

开发人员在维护核心业务逻辑的同时,还需要为输入做严格的校验。当输入不合法时,能够给caller一个明确的反馈,最常见的反馈就是返回封装了result的对象或者抛出exception。一些常见...

互联网大厂后端必看!手把手教你替换 Spring Boot 中的日志框架

在互联网大厂的后端开发工作中,SpringBoot框架是搭建项目的“得力助手”,使用十分普遍。但不少开发者都遇到过这样的困扰:SpringBoot默认集成的Logback日志框架,在实际...

测试经理教你如何用monkey进行压力测试!

一、monkey是什么1、monkey程序由android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/system/framework/monkey.jar2、Mo...

Java-Maven详解

一、什么是Maven?ApacheMaven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理...

SpringBoot打包部署最佳实践

springboot介绍SpringBoot目前流行的javaweb应用开发框架,相比传统的spring开发,springboot极大简化了配置,并且遵守约定优于配置的原则即使0配置也能正常运...

取消回复欢迎 发表评论: