一、Servlet学习

     下面是Servlet一个整体的继承结构

     

首先说一下Servlet这个接口这个主要包含的有init,service,destroy等方法,这里主要介绍这3个方法,这3个方法也就是我们经常说的Servlet生命周期,先介绍init(ServletConfig config)这个方法,在Servlet生命周期中init这个方法只执行一次,它是在服务器装入Servlet时执行的,负责初始化Servlet对象,当然如果你要初始化一些Servlet,可以通过配置<load-on-startup></load-on-startup>来初始化加载Servlet,比如说我们要做个统计多少人次登录过这个网站的时候,第一次访问需要读取之前登陆人数。接下来就是service()这个方法,这个方法是Servlet的核心方法,主要用来处理客户端请求响应,每当客户端每次发送请求就需要调用Service()方法。最后就是destroy()方法,这个方法仅执行一次,在服务器端停止且卸载Servlet时执行该方法。再稍微提一下这个方法ServletConfig getServletConfig()获取当前servlet的配置对象。Servlet这个接口基本说到这里。

GenericServlet我们来说一下这个抽象类,这个抽象类主要实现了Servlet,ServletConfig,Serializable这3个接口,还有一个不带参数的init方法和两个参数不同的log方法。Serializable这个主要是序列化,也就是说可以被写到磁盘或者通过网络传输。Servlet这个接口和上面基本一样不在做过多介绍。ServletConfig说一下这个接口,这个接口里面主要有getServletName,getServletContext,getInitParameter,getInitParameterNames,这里说一下getServletContext这个方法返回了ServletContext我们请求的上下文,这个也是我们比较主要的对象,功能主要包括一些获取文件类型,文件在服务器上的位置,获得全局初始化参数等吧;getServletName这个也很明确返回Servlet的名字,getInitParameter和getInitParameterNames主要是为了加载初始化参数的,这个类基本就说到这里喽。

HttpServlet重点喽,这个类主要是对GenericServlet扩展,提供了一个处理HTTP协议的框架,HTTP的请求方式包括DELETE,GET,OPTIONS,POST,PUT和TRACE,在HttpServlet类中分别提供了相应的方法,它们是,doDelete(),doGet(),doOptions(),doPost(), doPut()和doTrace(). 这几个类都没有具体实现都是返回了一个错误信息,所以这就是很明确当我们想使用其中的某一个方法的时候必须对该类型的方法进行重写。说完上面几个重要的对象,还必须说一下service这个方法,这个里定义了2个service的方法,一个是实现类型的转化将ServletRequest与ServletResponse转换为HttpServletRequest与HttpServletResponse,这个方法其实也是对servlet接口方法的一个实现,另外一个方法就是自身类的service方法,这个方法首先获取请求的方法,然后在分别对不同的do***的方法进行实现。以上对整个Servlet的继承结构说的也差不多,由于刚刚开始其中有错误希望大神指出,小弟一定虚心改正,谢谢!!

二、一个请求的流程简单说一下

1).客户端发送Http请求到服务器;

2).服务器交由Servlet容器处理;

3).Servlet容器创建ServletRequest对象,将Http的请求头封装到该协议中;

4).Servlet容器创建ServletResponse对象;

5).Servlet容器调用service的方法,把HttpServletRequest和HttpServletResponse对象作为service方法的参数传给HttpServlet对象,这里也就是HttpServlet内部包含的2个service方法;

6).HttpServlet调用HttpServletRequest的方法,获取Http请求信息;

7).HttpServlet调用HttpServletResponse的有关方法,生成响应信息(主要包括像响应头,响应体,响应行);

8).最终交由Servlet容器将HttpServlet的响应结果交给客户端。

三、结束语

 以上如果存在什么错误欢迎大神帮忙指出一下,小弟在此感谢!!另外小弟刚刚搞一个Java群438836709欢迎各种喜欢学习的人进来交流~一起畅谈人生~一起开心的学习~Go!!

一起学习java的更多相关文章

  1. 零基础如何学习java更有效呢?

    零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...

  2. 积极主动敲代码,使用Junit学习Java程序设计

    积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...

  3. 如何接触学习java

    信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...

  4. 零基础如何系统学习Java Web

    零基础如何系统学习Java Web?   我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...

  5. (转)如何学习Java技术?谈Java学习之路

    51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...

  6. 《疯狂Java讲义》(一) ---- 关于学习Java的反思

    "听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...

  7. 十天来学习java的心得体会

    有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...

  8. 【转】学习JAVA的步骤

      好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...

  9. 应用JConsole学习Java GC

    应用JConsole学习Java GC 关于Java GC的知识,好多地方都讲了很多,今天我用JConsole来学习一下Java GC的原理. GC原理 在我的上一篇中介绍了Java运行时数据区,在了 ...

  10. 【ZZ】Java : 一个帝国的诞生 & 假如时光能够倒流, 我会这么学习Java

    Java : 一个帝国的诞生 http://dy.qq.com/article.htm?id=20160523A06XFS00 写的很有意思,一下子了解了JAVA的历史. 假如时光能够倒流, 我会这么 ...

随机推荐

  1. 【CSS】如何用css做一个爱心

    摘要:HTML的标签都比较简单,入门非常的迅速,但是CSS是一个需要我们深度挖掘的东西,里面的很多样式属性掌握几个常用的便可以实现很好看的效果,下面我便教大家如何用CSS做一个爱心. 前期预备知识: ...

  2. T-SQL语句中的转换函数

    书接上回 前面讲了聚合函数.字符串函数 今天一起来看下转换函数 首先是 值类型转换 ),degree) 在C#里面是convert,现在在SQL中也是他,convert(转换类型,被转换列)from ...

  3. Python -堆的实现

    最小(大)堆是按完全二叉树的排序顺序的方式排布堆中元素的,并且满足:ai  >a(2i+1)  and ai>a(2i+2)( ai  <a(2i+1)  and ai<a(2 ...

  4. MSMQ队列学习记录

    微软消息队列-MicroSoft Message Queue(MSMQ) 使用感受:简单. 一.windows安装MSMQ服务 控制面板->控制面板->所有控制面板项->程序和功能- ...

  5. SpringMVC结合ajaxfileupload文件无刷新上传

    jQuery没有提供ajax的文件上传,我们可以通过ajaxfileupload实现ajax文件的上传.其实ajaxfileupload文件上传特别的简单.下面就演示一下在SpringMVC中实现aj ...

  6. Oracle数据泵(上)

    导出 (以导出表空间为例) 1.给用户创建密码 alter user system identified by 00000000;   2.创建导出目录 create or replace  dire ...

  7. BackgroundWorker的DoWork方法中发生异常无法传递到RunWorkedCompleted方法

    在使用C#的BackgroundWorker时需要在UI界面上显示DoWork中发生的异常,但怎么调试都无法跳转到界面上,异常也不会传递到RunWorkerCompleted方法中(e.Error为空 ...

  8. bzoj3939 【USACO 2015 FEB GOLD 】cow hopscotch

    Description 就像人类喜欢玩"跳房子"的游戏,农民约翰的奶牛已经发明了该游戏的一个变种自己玩.由于笨拙的动物体重近一吨打,牛跳房子几乎总是以灾难告终,但这是没有阻止奶牛几 ...

  9. [C#学习]1.Hello World

    在很多时候我们都是被helloworld带入编程的世界的,所以这句话应该算是我们程序员最熟悉的一句话了把.所以在这里,那我也照样以helloworld为例子来引入我们的C#学习. 在往常的hellow ...

  10. [Linux] Linux 中的基本命令与目录结构

    Linux 中的基本命令与目录结构 目录 一.Linux 基本目录结构 二.基本命令 三.浏览目录 四.中间命令 五.更改密码 六.环境变量和 shell 变量 七.命令路径 八.文本编辑器 九.获取 ...