在上一章节,我们大概的描述了servlet的规范以及servlet和servlet容器的概念和用途,我们清楚的知道servlet容器提供了接收来自client端的请求,然后根据请求进行处理(如:执行对应的servlet生成动态内容,或读取静态资源等),最后将client请求的资源响应给client端。在以上过程中,有一点需要注意,那就是根据servlet容器的作用,client端和server端需要交互传输数据,而在internet上的数据传输一定是基于某种传输协议的,如http、ftp等. 而上一章描述的Servelt规范是不基于协议的。 在这一章,我们将主要描述基于Http协议传输的servlet接口规范。 以下是基于Http 协议的Servlet结构图.
 
    
 
       通过以上servlet结构类图,有以下几点我们是需要注意的:
         
         HttpServlet在Servlet规范上的增强
         HttpServlet是满足Servlet规范、基于Http作为传输协议而设计的一个接口。所以,它不仅满足Servlet规范,继承了Servlet中的所有功能(接口方法),并且,它还具有自己的一些特有的功能,而这些功能即是专门用来处理通过http所传输的信息的。这么说可能有点晦涩难懂,还是举几个例子吧: 例如HttpServlet中不仅仅有service方法,它还包含有doGet、doPost、doPut等一系列方法,如果你熟悉http协议,你应该清楚,http请求类型有post、get、put、delete等,而httpServlet中doGet、doPost方法就是专门用来处理相关的http请求类型.  再举个例子,如果你仔细看看HttpServletRequest接口,你就会发现,除了继承ServletRequest中的方法外,它还有getHeader、getMethod方法,而getHeader就是专门用来获得http的头(header)信息的,getMethod就是专门用来获得client基于http协议请求的方式的,如post、get等。
      
         ServletRequestWrapper和HttpServletRequestWrapper的作用是什么?
         看看ServletRequestWrapper的类结构图,你可能会发现它有两个特点:1,它实现了ServletRequest接口; 2,ServletRequestWrapper 类里有一个对ServletRequest对象的引用.  发现了吧,很明显,这就是java设计模式中的装饰模通过式嘛。结合装饰模式的作用可知,ServletRequestWrapper/HttpServletRequestWrapper提供了一种对ServletRequest/HttpServletRequest进行装饰和扩展的作用。例如,如果你想在调用ServletRequest.setAttribute方法前需要记录这次操作的日志,则可以通过创建个自定义的Servlet,集成ServletRequestWrapper,然后重写setAttribute方法即可.
 
         ServletResponseWrapper和HttpServletResponseWrapper的作用是什么?
        作用和上描述类似。 ServletResponseWrapper长被用来将本该响应给client端的信息提取出来,然后作进一步修饰或增强。如比较常用的页面布局框架SiteMesh就是采用这种机制来捕获页面内容,然后对这些内容进行装饰。

Servlet 规范笔记—基于http协议的servlet的更多相关文章

  1. Servlet 规范笔记—servlet概念及结构

     Servlet, 这个词对java程序员并不陌生,我想几乎每个java程序员在学习J2EE知识时,首先学习的就是servlet,这是一种正确的学习方式,在我看来Servlet是J2EE的基础,要熟练 ...

  2. Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext

    Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用.Servlet的配置信息包 ...

  3. Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系

    Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...

  4. servlet规范--Servlet 规范其实就是对 HTTP 协议做面向对象的封装

    Servlet规范 一个最基本的 Java Web 项目所需的 jar 包只需要一个 servlet-api.jar ,这个 jar 包中的类大部分都是接口,还有一些工具类,共有 2 个包,分别是 j ...

  5. servlet规范

    Servlet规范 一个最基本的 Java Web 项目所需的 jar 包只需要一个 servlet-api.jar ,这个 jar 包中的类大部分都是接口,还有一些工具类,共有 2 个包,分别是 j ...

  6. servlet.txt笔记

    javase jdbc ==>java访问数据库html ==>浏览器显示内容,无法把数据提交给后台?==>动态网页技术(servlet)解决前台.后台交互问题动态网页技术:serv ...

  7. Servlet规范总结

    Servlet接口 Servlet规范的核心接口即是Servlet接口,它是所有Servlet类必须实现的接口,在Java Servelt API中已经提供了两个抽象类方便开发者实现Servlet类, ...

  8. Servlet学习笔记(四)

    目录 Servlet学习笔记(四) 一.会话技术Cookie.session 1. 什么是会话技术? 2. 会话技术有什么用? 3. Cookie 3.1 什么是Cookie? 3.2 使用Cooki ...

  9. Java Servlet规范

    截自网址:http://blog.csdn.net/u010391029/article/details/46521051 JavaServlet Specification  Version 2.3 ...

随机推荐

  1. ddr sdram self-refresh & auto-refresh

    以下是EDD5116AFTA数据手册的摘录.不过看过了还是不太明白二者的区别. self-refresh:Self-refresh entry [SELF]This command starts se ...

  2. RedHat Linux 多媒体学习指南 (共 36 部原创视频)

    1.为sco unix 添加第二块网卡 [url]http://you.video.sina.com.cn/b/11695632-1443650204.html[/url]   2.为sco unix ...

  3. C++实现矩阵求逆

    最近实现一个算法要用到求逆等矩阵运算,在网上搜到一个别人写的矩阵类,试了一下效果不错,贴在这里,做个保存. matrix.h文件: #ifndef __MATRIX_H__ #define __MAT ...

  4. uni-app 地图初用 map

    一.uni-app 地图初用 map 代码如下: <template> <view> <!-- <page-head :title="title" ...

  5. Java Web学习总结(10)——Session详解

    摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术.本文将详细讨论session的工作机制并且对在Java ...

  6. 洛谷 P1913 L国的战斗之伞兵

    P1913 L国的战斗之伞兵 题目背景 L国即将与I国发动战争!! 题目描述 为了在敌国渗透作战,指挥官决定:派出伞兵前往敌国!然而敌国的风十分强烈,能让伞兵在同一高度不停转悠,直到被刮到一个无风区… ...

  7. android 4.4最新官方源代码下载

    国内网络,日夜不休花了一个多月才下载成功android标准源代码,有些开发同人须要.已上传到网盘,分享给大家 微云地址: http://url.cn/PkkSzC 百度云盘地址(更新) http:// ...

  8. 百度地图ios环境配置

    1 前言 由于工作需要,要开始捣腾百度地图了,今天上午初始牛刀,各种碰壁,无奈之下,中午睡了一觉,养精蓄锐,以备下午大战三百回合,所幸下午中午把百度地图Demo捣腾出来了,在此与大家分享,环境搭建教程 ...

  9. [转]C语言字节对齐问题详解

    C语言字节对齐问题详解 转载:https://www.cnblogs.com/clover-toeic/p/3853132.html 引言 考虑下面的结构体定义: typedef struct{ ch ...

  10. docker -mysql服务设置远程连接 解决1251 client does not support ..问题

    前提: 安装MYSQL实例 docker pull mysql 启动mysql(做了端口映射) [root@localhost ~]# docker run -p 3306:3306 --name m ...