在前面的几篇文章中,介绍了servlet的一些基本的知识。接下来的几篇开始介绍一下servlet中的几个常用的对象。本文主要先简单的了解一下HttpServletRequest对象。
HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求中的所有信息都封装在这个对象中。HttpServletReques代表请求象,其中封装了对请求中具有请求行、请求头、实体内容的操作的方法。(对于请求行、请求头、请求实体内容这里不做过多的解释,后期会补上一片讲解HTTP协议的文章围绕这个知识点再做详细的分析和学习。)
下面从一下几个方面来介绍该对象的一些特性:
一、获取请求头信息
getHeader(name)方法 --- String ,获取指定名称的请求头的值
getHeaders(String name)方法 --- Enumeration<String> ,获取指定名称的请求头的值的集合,因为可能出现多个重名的请求头
getHeaderNames()方法 --- Enumeration<String> ,获取所有请求头名称组成的集合
getIntHeader(name)方法 --- int ,获取int类型的请求头的值
getDateHeader(name)方法 --- long(日期对应毫秒) ,获取一个日期型的请求头的值,返回的是一个long值,从1970年1月1日0时开始的毫秒值
二、获取客户端相关信息
1.资源路径
getRequestURL 方法返回客户端发出请求完整URL【网络地址,eg:http://****:8080/……】
getRequestURI 方法返回请求行中的资源名部分,在权限控制中常用【服务器端地址】
2. 协议和版本号
getScheme 协议--http
getProtocal版本号--http/1.1
3.请求信息
getQueryString方法返回请求行中的参数部分
getRemoteAddr 方法返回发出请求的客户机的IP地址
getRemotePort 方法返回发出请求的客户机的端口号
4.请求方式
getMethod 得到客户机请求方式
5. 项目名称
getContextPath 获得当前web应用虚拟目录名称
三、获取请求实体内容
getParameter(name) --- String 通过name获得值
getParameterValues(name) --- String[ ] 通过name获得多值 checkbox
getParameterNames() --- Enumeration<String> 获得所有请求参数名称组成的枚举
getParameterMap() --- Map<String,String[ ]> 获取所有请求参数的组成的Map集合,注意,其中的键为String,值为String[]
四、request实现请求转发
ServletContext可以实现请求转发,request也可以。在forward之前输入到response缓冲区中的数据,如果已经被发送到了客户端,forward将失败,抛出异常。
在forward之前输入到response缓冲区中的数据,但是还没有发送到客户端,forward可以执行,但是缓冲区将被清空,之前的数据丢失。注意丢失的只是请求体中的内
容,头内容仍然有效。在一个Servlet中进行多次forward也是不行的,因为第一次forward结束,response已经被提交了。
总之,一条原则,一次请求只能有一次响应,响应提交走后,就再没有机会输出数据给浏览器了。
五、利用请求域传递对象
作用域:就是在某一个范围中可以使用。作为作用域对象,一般都有getAttribute(),setAttribute,removeAttribute三个方法,其内部就是维持了一个
Map<String,Object>对象。
对于HttpServletRequest作用域对象有一下特点:
1. 生命周期:在service方法调用之前由服务器创建,传入service方法。整个请求结束,request生命结束。
2.作用范围:整个请求链。
3.作用:在整个请求链中共享数据。
六、RequestDispatcher进行include操作【了解即可】
forward没有办法将多个servlet的输出组成一个输出,因此RequestDispatcher提供了include方法,可以将多个Servlet的输出组成一个输出返回个浏览器。
分享到:
相关推荐
本文将深入探讨这些技术,帮助开发者温故知新,理解它们的功能、工作原理以及如何在实际项目中应用。 ### JSP(JavaServer Pages) JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态内容...
行业报告“温故知新,从4G看5G”为我们揭示了移动通信技术从4G到5G的演进历程、技术变革及其对社会经济的深远影响。这份报告深入探讨了5G的关键特性,包括超高速率、低延迟、大规模连接以及网络切片等,这些都是5G...
通信行业:温故知新,从4G看5G-1202-中信建投-12页.pdf
ZYNQ7100,PL 纯逻辑,简单入门 FPGA LED 例程 工程对应的视频教程(1.1 ZYNQ学习分享-温故知新-PL-led):https://www.ixigua.com/6878303436048335371/
农林牧渔行业专题研究:温故知新,复盘上两轮生猪疫情影响-0213-广发证券-17页.pdf
工业机器人是现代制造业中不可或缺的重要组成部分,其发展水平是衡量一个国家制造业自动化、智能化程度的重要标志。本文档探讨了工业机器人在汽车行业中的应用,并结合美国汽车行业历史上的“2mm工程”,分析了工业...
纺织服装行业“温故知新”系列之百丽复盘:渠道为王铸就龙头,改革初见成效 纺织服装行业是一个复杂且多样化的行业,涉及到多个领域,如女鞋、运动、服饰等。百丽作为行业龙头,凭借“多品牌+快速渠道扩张+强供应链...
C#是一种面向对象的编程语言,是ASP.NET开发的主要语言之一,以其简洁、类型安全和高性能著称。在这个“温故知新ASP.NET 2.0(C#)”的学习资源中,我们将深入探讨ASP.NET 2.0的关键特性和C#的编程技巧。 首先,ASP...
价格变动主要可划分为五个阶段,反映了债市不同阶段的情绪和市场动态。 2. **策略表现总结** - **期现策略**:IRR(投资回报率)和基差策略在不同时间段表现出不同的特征。2018年11月至12月,IRR水平基本稳定,...
科创板采取市场化定价和前五天无涨跌幅限制,使得卖出策略变得尤为关键。 新股初期的涨幅可以分解为定价偏差和情绪偏差两个部分。在定价机制市场化的情况下,首日涨幅受新股定价水平和市场情绪的影响。定价偏差主要...
【五年级英语上册Recycle 1单元教案3 人教PEP版】这份教案针对的是小学五年级上册的英语教学,旨在复习前三单元所学的语言知识,并将其运用到实际的语言交际中。课程设计注重学生的积极参与和语言实践,旨在提升学生...
初中语文文学讨论现当代文学温故知新
- 确定辅导对象:帮助他人学习也能提升自身能力。 - 课前预习:找出学习难点,提高课堂学习效率。 - 课堂专注:专心听讲,做好笔记,积极参与课堂活动。 - 课后复习:巩固知识,定期回顾,温故知新。 - 时间...
《中信建设温故知新,从 4G 看 5G》这份资料主要探讨了移动通信技术从第四代(4G)到第五代(5G)的演进过程,以及这一演变带来的技术创新和产业影响。4G 和 5G 作为两个重要的通信时代,它们之间的差异和联系构成了...
- **教学对象**:小学四年级学生 - **教学内容**:《爱因斯坦和小女孩》 - **教材版本**:苏教版 - **课程性质**:语文阅读与理解 - **教学目的**: - **知识目标**:掌握新字词,学会使用特定结构造句。 - **能力...
在本项目"温故知新,通过学习尚学堂飞机游戏项目,理解Java语言基础知识.zip"中,我们可以深入探讨Java编程语言的基础知识,并结合实际的游戏开发经验来加深理解。这是一个非常适合初学者或者想要巩固Java基础的...
中信建设温故知新,从 4G 看 5G.pdf
代理模式允许我们在不修改原有对象的情况下,为对象增加额外的功能。在Spring AOP中,我们可以创建一个`SpeakerProxy`代理类,它实现了`ISpeaker`接口,并持有真实对象的引用。在代理类的`say()`方法中,我们可以在...