HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的相关方法,即可以获得客户的这些信息。
一、通过request常用方法获得相关信息
1:获得请求行消息
<!--请求行消息的格式如下--> GET /ServletStudy/requestServlet?name=bill&age=20 HTTP/1.1 <!--通过如下URL可以产生上面的请求行消息--> http://localhost:8080/ServletStudy/requestServlet?name=bill&age=20
常用方法说明:
方法名 | 功能 | 示例值 |
getMethod | 返回请求行中的请求方法(如GET、POST、PUT) | GET |
getRequestURI | 返回请求行中的资源部分(不包括参数部分) | /ServletStudy/requestServlet |
getQueryString | 返回查询字符串(即“?”后面的内容) | name=bill&age=20 |
getProtocol | 返回请求行中的协议部分 | GET |
getContextPath | 返回该请求所属的Web应用的路径 | /ServletStudy |
各方法执行结果如下:
2:获取请求头消息
方法名 | 功能 | 示例值 |
getHeader | 返回指定的头字段的值 | |
getHeaders |
返回重名头字段的值 这个方法返回一个java.util.Enumeration |
|
getHeaderNames | 返回一个包含所有头字段名字的Enumeration对象 | |
getIntHeader | 返回指定的头字段的值,并将其转换为int | |
getDateHeader | 返回指定的头字段的值,并将其转换为Date | |
getContentType | 返回请求正文的内容类型 | |
getContentLength |
返回请求正文的长度,单位是字节。 如果未指定长度,则返回-1。 |
|
getCharacterEncoding |
返回请求正文的字符集编码。 如果没有指定,则返回null。 |
3:获取网络连接消息
方法名 | 功能 | 示例值 |
getRemoteAddr |
返回客户端的ip地址 | 127.0.0.1 |
getRemoteHost |
返回客户端的主机名。 如果无法解析出主机名,则返回客户端的ip地址。 |
127.0.0.1 |
getRemotePort |
返回客户端的端口号。 | 50278 |
getLocalAddr |
返回服务器的ip地址 | 127.0.0.1 |
getLocalName |
返回服务器的主机名 | localhost |
getLocalPort |
返回服务器的端口号 | 8080 |
getServerName |
返回HTTP请求消息的Host字段的主机号部分 | 127.0.0.1 |
getServerPort |
返回HTTP请求消息的Host字段的端口号部分 | 8080 |
getScheme |
返回请求的协议名 | http |
getRequestURL |
返回完整的请求URL | http://127.0.0.1:8080/ServletStudy/requestServlet |
各方法执行结果如下:
4:获取客户端提交的数据
方法名 | 功能 |
getParameter(name) | 获取指定名称的参数值 |
getParameterValues(String name) | 获取指定名称参数的所有值数组 |
getParameterNames() | 返回一个包含请求消息中的所有参数名的Enumeration对象 |
getParameterMap() | 返回一个保存了请求消息中的所有参数名和值的Map对象。Map对象的key是字符串类型的参数名,value是这个参数所对应的Object类型的值数组。 |
二、request对象实现请求转发
Servlet API中定义了一个RequestDispatcher接口,俗称请求分派器。它定义了如下两个方法:
public void forward (ServletRequest request, ServletResponse response) public void include (ServletRequest request,ServletResponse response)
获取RequestDispatcher实例的方式主要有两种:
- 调用ServletContext接口提供的getRequestDispatcher(String url)方法。
- 调用ServletRequest接口提供的getRequestDispatcher(String url)方法。
被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的 执行结果将被忽略。
例:
request.getRequestDispatcher("./Welcome.jsp").forward(request,response);
即可从当前应用跳转到相应的"./Welcome.jsp"页面。
request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。
三、关于请求转发的一些细节
- forward方法用于将请求转发到RequestDispatcher对象封装的资源。
- 如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正地传送到了客户端,forward方法将抛出IllegalStateException异常。
- 如果在调用forward方法之前向Servlet引擎的缓冲区 (response)中写入了内容,只要写入到缓冲区中的内容还没有被真正输出到客户端,forward方法就可以被正常执行,原来写入到输出缓冲区中的 内容将被清空,但是,已写入到HttpServletResponse对象中的响应头字段信息保持有效。
相关推荐
**JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...
### Servlet学习笔记精炼知识点 #### 一、Servlet初始化与加载机制 1. **Servlet注册与实例化**:在Web应用中,一个Servlet的生命周期始于它的注册与实例化过程。通常,这一过程是在Web服务器启动时,根据`web.xml...
### Servlet学习笔记4 #### 一、URL Pattern详解 在Servlet配置中,URL Pattern是非常重要的一个概念,它决定了Servlet能够响应哪些请求路径。通常来说,URL Pattern可以分为三种类型: 1. **确切路径匹配**:...
### servlet学习笔记详解 #### Tomcat介绍 **Tomcat服务器**是基于Sun公司的JSWDK(Java Servlet and Web Development Kit)发展而来的杰出Servlet/JSP容器。作为Apache-Jakarta项目的一部分,Tomcat不仅能够执行...
【标题】:“韩顺平servlet笔记”是一个关于Servlet编程技术的学习资料,主要由知名IT讲师韩顺平讲解。这个笔记涵盖了Tomcat服务器的配置、Cookie和Session的使用,是针对初学者和进阶者的一份实用教程。 【描述】...
本章学习笔记重点介绍了Servlet的基本概念和生命周期管理,以及相关的寒假作业安排。对于Java Web开发者来说,掌握Servlet的工作原理及其生命周期是非常重要的。同时,按照计划完成寒假作业可以帮助巩固所学知识,并...
**JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们为构建动态、交互式的Web应用程序提供了强大的支持。** ### JSP基础 JSP是一种基于Java的服务器端技术,它允许开发者将HTML或者XML标记与...
### Servlet基础知识与核心技术详解 #### 一、Servlet简介与Web服务器配置 ##### 1.1 Servlet简介 - **Servlet** 是服务器端的小程序,相对于客户端的 Applet 而言。它可以在服务器端运行,接收来自客户端的 ...
【Servlet技术详解】 Servlet是Java Web开发中的核心组件之一,它是Java编程语言中用来扩展Web服务器功能的接口。Servlet主要用于处理HTTP请求,并返回响应数据,是动态网页开发的关键技术。在本笔记中,我们将深入...
JavaWeb是基于Java语言开发Web应用的一种技术体系,涉及众多组件和概念,包括HTTP协议、JSP、Servlet...通过这样的学习笔记,可以有效地帮助开发者对JavaWeb技术有更全面、深入的理解,从而在实际工作中更加得心应手。
在"jsd1906 达内 07-Servlet.rar"这个压缩包中,包含了关于Servlet的学习笔记和源码,这些都是深入理解Servlet技术的重要资料。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。...
### 全方位Java学习笔记知识点总结 #### JSP内置对象详解 ##### 1. `page`对象 - **定义**:`page`对象是当前JSP页面本身的引用,类似于面向对象编程中的`this`关键字。 - **实现**:它是`java.lang.Object`类的...
在学习JSP内置对象的过程中,阅读相关文档、实践案例以及参考博客(如《web学习笔记 —— jsp内置对象》)是非常有益的。不断实践和探索,将使你更好地理解和运用这些对象,从而在Web开发领域更加游刃有余。
#### 三、Struts框架快速入门实例详解 ##### 1. 创建Web工程并引入依赖 - **创建Web工程**:使用Eclipse或其他IDE创建一个新的Web项目。 - **引入依赖**:在项目的`lib`目录下添加Struts框架所需的jar包,例如`...
### Struts学习笔记 #### 一、Struts框架概述 Struts是一个开源的MVC(Model-View-Controller)框架,用于开发Java EE Web应用程序。它简化了Web应用的开发流程,提供了一种结构化的解决方案来组织代码。Struts的...
### JSP学习笔记知识点梳理 #### 一、JSP中的隐式对象 JSP提供了九个内置对象(也称为隐式对象),它们分别是:`request`、`response`、`out`、`session`、`application`、`config`、`pageContext`、`page` 和 `...
### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...
### JSP 学习笔记详解 #### 一、JSP 概述与基本结构 **JSP (JavaServer Pages)** 是一种基于 Java 的服务器端脚本技术,它允许在 HTML 页面中嵌入 Java 代码来动态生成网页内容。JSP 技术的主要优势在于能够将业务...
### Java学习笔记之Spring框架工作原理 #### 一、Spring框架概述 Spring框架是一个轻量级的开源框架,主要用于简化企业级应用开发。它通过提供一种简单的方式来管理对象的生命周期和依赖关系,使得开发者能够更加...
"JSP--main"可能是包含学习资料的主目录,可能包含了JSP和Servlet的实例代码、笔记、教程等资源。 **JSP和Servlet详解** JSP是Java平台上的一个标准,用于创建动态web应用。它允许开发者在HTML页面中嵌入Java代码...