一、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. 用react开发一个新闻列表网站(PC和移动端)

    最近在学习react,试着做了一个新闻类的网站,结合ant design框架, 并且可以同时在PC和移动端运行: 主要包含登录和注册组件.头部和脚部组件.新闻块类组件.详情页组件.评论和收藏组件等: ...

  2. Unity3D 正六边形,环状扩散,紧密分布,的程序

    最近在做一个正六边形的游戏,被一开始的布局难倒了. 需求:中心有个正六边形,输入围绕中心扩散的环数,自动创建和摆放. 大概就是这样的吧,我觉得这个非常轻松的就可以搞定了.啊~~~~~啊~~~ 五环~~ ...

  3. Python-一些实用的函数

    一,返回值为bool类型的函数 1.any()函数 any(iterable)->bool 当迭代器中有一个是Ture,则返回Ture:若interable=NUll,则返回False. > ...

  4. Java 工具类—日期获得,随机数,系统命令,数据类型转换

    package tems; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Calendar; ...

  5. Java匿名内部类使用与示例

    首先说为什么有匿名类 两个原因(产生的使命) 1.简化代码编写 某种情况下,类只需要扩展一个方法,没必要为了一个方法单独去写一个子类,然后然后调用子类,此时需要匿名类 2.在不同的包内的类内调用类的p ...

  6. 【渗透测试】hydra使用小结

    -R:继续从上一次进度接着破解 -S:大写,采用SSL链接 -s <PORT>:小写,可通过这个参数指定非默认端口 -l <LOGIN>:指定破解的用户,对特定用户破解 -L ...

  7. java并发程序——并发容器

    概述 java cocurrent包提供了很多并发容器,在提供并发控制的前提下,通过优化,提升性能.本文主要讨论常见的并发容器的实现机制和绝妙之处,但并不会对所有实现细节面面俱到. 为什么JUC需要提 ...

  8. SQL SERVER大话存储结构(2)_非聚集索引如何查找到行记录

              如果转载,请注明博文来源: www.cnblogs.com/xinysu/   ,版权归 博客园 苏家小萝卜 所有.望各位支持!      1 行记录如何存储     这里引入两个 ...

  9. Java中的StringTokenizer类

    /*//在java.util中的StringTokenizer类可以分析一个字符串并将字符串分解成可被独立使用的单词//1.StringTokenizer(String s)-----------为字 ...

  10. C#文件下载(适用于各个浏览器)

    1.cs代码 public void DownFile(string filePath ,string fileName ) { // filePath 文件路径 例如:/File/记录.xlsx / ...