`

Servlet学习笔记之HttpServletRequest详解

 
阅读更多

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实例的方式主要有两种:

  1.  调用ServletContext接口提供的getRequestDispatcher(String  url)方法。
  2. 调用ServletRequest接口提供的getRequestDispatcher(String  url)方法。

  被包含的Servlet程序不能改变响应消息的状态码和响应头,如果它里面存在这样的语句,这些语句的     执行结果将被忽略。

 

 例:

request.getRequestDispatcher("./Welcome.jsp").forward(request,response);

即可从当前应用跳转到相应的"./Welcome.jsp"页面。

 

request对象同时也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其它web资源处理。

 

三、关于请求转发的一些细节

 

  1. forward方法用于将请求转发到RequestDispatcher对象封装的资源。
  2. 如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正地传送到了客户端,forward方法将抛出IllegalStateException异常。
  3. 如果在调用forward方法之前向Servlet引擎的缓冲区 (response)中写入了内容,只要写入到缓冲区中的内容还没有被真正输出到客户端,forward方法就可以被正常执行,原来写入到输出缓冲区中的 内容将被清空,但是,已写入到HttpServletResponse对象中的响应头字段信息保持有效。

四、请求重定向和请求转发的区别

    一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理,称之为请求转发。

   一个web资源收到客户端请求后,通知浏览器去访问另外一个web资源,称之为请求重定向。

注意:

 

  1. RequestDispatcher.forward方法只能将请求 转发给同一个WEB应用中的组件;而HttpServletResponse.sendRedirect方法还可以重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源。 如果传递HttpServletResponse.sendRedirect方法的相对URL以“/”开头,它是相对于整个WEB站点的根目录;如果创建RequestDispatcher对象时指定的相对URL以“/”开头,它是相对于当前WEB应用程序的根目录。
  2. 调用HttpServletResponse.sendRedirect方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL 地址变成重定向的目标URL;调用RequestDispatcher.forward 方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。
  3. HttpServletResponse.sendRedirect 方法对浏览器的请求直接作出响应,响应的结果就是告诉浏览器去重新发出对另外一个URL的访问请求;RequestDispatcher.forward方法在服务器端内部将请求转发给另外一个资源,浏览器只知道发出了请求并得到了响应结果,并不知道在服务器程序内部发生了转发行为。
  4. RequestDispatcher.forward方法的调用者与 被调用者之间共享相同的request对象和response对象,它们属于同一个访问请求和响应过程;而 HttpServletResponse.sendRedirect方法调用者与被调用者使用各自的request对象和response对象,它们属于 两个独立的访问请求和响应过程。
  • 大小: 14.4 KB
  • 大小: 19.4 KB
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    jsp/servlet个人学习笔记

    **JSP(JavaServer Pages)/Servlet 知识详解** JSP 和 Servlet 是 Java Web 开发中的核心组件,它们在构建动态网站时起着至关重要的作用。以下是对这两个技术及其相关概念的详细解释: 1. **JSP 基础** JSP 是一...

    Servlet学习笔记

    ### Servlet学习笔记精炼知识点 #### 一、Servlet初始化与加载机制 1. **Servlet注册与实例化**:在Web应用中,一个Servlet的生命周期始于它的注册与实例化过程。通常,这一过程是在Web服务器启动时,根据`web.xml...

    Servlet学习笔记4

    ### Servlet学习笔记4 #### 一、URL Pattern详解 在Servlet配置中,URL Pattern是非常重要的一个概念,它决定了Servlet能够响应哪些请求路径。通常来说,URL Pattern可以分为三种类型: 1. **确切路径匹配**:...

    servlet学习笔记

    ### servlet学习笔记详解 #### Tomcat介绍 **Tomcat服务器**是基于Sun公司的JSWDK(Java Servlet and Web Development Kit)发展而来的杰出Servlet/JSP容器。作为Apache-Jakarta项目的一部分,Tomcat不仅能够执行...

    韩顺平servlet笔记

    【标题】:“韩顺平servlet笔记”是一个关于Servlet编程技术的学习资料,主要由知名IT讲师韩顺平讲解。这个笔记涵盖了Tomcat服务器的配置、Cookie和Session的使用,是针对初学者和进阶者的一份实用教程。 【描述】...

    jsp第七章学习笔记

    本章学习笔记重点介绍了Servlet的基本概念和生命周期管理,以及相关的寒假作业安排。对于Java Web开发者来说,掌握Servlet的工作原理及其生命周期是非常重要的。同时,按照计划完成寒假作业可以帮助巩固所学知识,并...

    JSP Servlet笔记 (by金万林)

    **JSP(JavaServer Pages)和Servlet是Java Web开发中的两个核心技术,它们为构建动态、交互式的Web应用程序提供了强大的支持。** ### JSP基础 JSP是一种基于Java的服务器端技术,它允许开发者将HTML或者XML标记与...

    servlet笔记

    ### Servlet基础知识与核心技术详解 #### 一、Servlet简介与Web服务器配置 ##### 1.1 Servlet简介 - **Servlet** 是服务器端的小程序,相对于客户端的 Applet 而言。它可以在服务器端运行,接收来自客户端的 ...

    servlet.rar

    【Servlet技术详解】 Servlet是Java Web开发中的核心组件之一,它是Java编程语言中用来扩展Web服务器功能的接口。Servlet主要用于处理HTTP请求,并返回响应数据,是动态网页开发的关键技术。在本笔记中,我们将深入...

    JavaWeb个人学习笔记

    JavaWeb是基于Java语言开发Web应用的一种技术体系,涉及众多组件和概念,包括HTTP协议、JSP、Servlet...通过这样的学习笔记,可以有效地帮助开发者对JavaWeb技术有更全面、深入的理解,从而在实际工作中更加得心应手。

    jsd1906 达内 07-Servlet.rar

    在"jsd1906 达内 07-Servlet.rar"这个压缩包中,包含了关于Servlet的学习笔记和源码,这些都是深入理解Servlet技术的重要资料。 1. **Servlet生命周期** Servlet的生命周期包括加载、初始化、服务、销毁四个阶段。...

    全方位java学习笔记

    ### 全方位Java学习笔记知识点总结 #### JSP内置对象详解 ##### 1. `page`对象 - **定义**:`page`对象是当前JSP页面本身的引用,类似于面向对象编程中的`this`关键字。 - **实现**:它是`java.lang.Object`类的...

    web学习笔记 —— jsp内置对象

    在学习JSP内置对象的过程中,阅读相关文档、实践案例以及参考博客(如《web学习笔记 —— jsp内置对象》)是非常有益的。不断实践和探索,将使你更好地理解和运用这些对象,从而在Web开发领域更加游刃有余。

    韩顺平struts视频学习笔记

    #### 三、Struts框架快速入门实例详解 ##### 1. 创建Web工程并引入依赖 - **创建Web工程**:使用Eclipse或其他IDE创建一个新的Web项目。 - **引入依赖**:在项目的`lib`目录下添加Struts框架所需的jar包,例如`...

    struts学习笔记

    ### Struts学习笔记 #### 一、Struts框架概述 Struts是一个开源的MVC(Model-View-Controller)框架,用于开发Java EE Web应用程序。它简化了Web应用的开发流程,提供了一种结构化的解决方案来组织代码。Struts的...

    jsp学习笔记

    ### JSP学习笔记知识点梳理 #### 一、JSP中的隐式对象 JSP提供了九个内置对象(也称为隐式对象),它们分别是:`request`、`response`、`out`、`session`、`application`、`config`、`pageContext`、`page` 和 `...

    webwork学习笔记

    ### WebWork学习笔记知识点 #### 一、WebWork框架简介 - **定义**: WebWork是一个由OpenSymphony组织开发的MVC(Model-View-Controller)框架,专注于组件化和代码重用,适用于J2EE应用程序开发。 - **最新版本**:...

    JSP学习笔记

    ### JSP 学习笔记详解 #### 一、JSP 概述与基本结构 **JSP (JavaServer Pages)** 是一种基于 Java 的服务器端脚本技术,它允许在 HTML 页面中嵌入 Java 代码来动态生成网页内容。JSP 技术的主要优势在于能够将业务...

    java学习笔记

    ### Java学习笔记之Spring框架工作原理 #### 一、Spring框架概述 Spring框架是一个轻量级的开源框架,主要用于简化企业级应用开发。它通过提供一种简单的方式来管理对象的生命周期和依赖关系,使得开发者能够更加...

    JSP-:内部有个人关于servlet的学习经历(2019年完成,现在上传)

    "JSP--main"可能是包含学习资料的主目录,可能包含了JSP和Servlet的实例代码、笔记、教程等资源。 **JSP和Servlet详解** JSP是Java平台上的一个标准,用于创建动态web应用。它允许开发者在HTML页面中嵌入Java代码...

Global site tag (gtag.js) - Google Analytics