一、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. 5 安装Alloc服务

    cnblogs-DOC 1.服务器环境 2.安装Redis3.安装Zookeeper4.安装MPush5.安装Alloc服务6.完整测试7.常见问题 一.Linux安装Mpush-Alloc [roo ...

  2. 一条SQL搞定信息增益的计算

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 周东谕,2011年加入腾讯,现任职于腾讯互娱运营部数据中心,主要从事游戏相关的数据分析和挖掘工作. 信息增益原 ...

  3. 需求收集实例 二 之 GF Phase 2

    GF Phase 2 做B2B的site, 需求收集过程与 需求收集过程实例之 - GF Phase 1主要的不同是在phase 1 开发在需求规格文档敲定后开始,而phase 2 把feature ...

  4. Jquery遍历数组之$().each()方法和$.each()方法

    前几天面试碰到了一个笔试问题:用jquery变了数组. 总结一下用jquery遍历数组的两种方法: 一.$().each()方法 <head><meta http-equiv=&qu ...

  5. python基本数据类型——tuple

    一.元组的创建与转换: ages = (11, 22, 33, 44, 55) ages = tuple((11, 22, 33, 44, 55))ages = tuple([]) # 字符串.列表. ...

  6. python基本数据类型——set

    一.集合的定义 set集合,是一个无序且不重复的元素集合. 集合对象是一组无序排列的可哈希的值,集合成员可以做字典中的键.集合支持用in和not in操作符检查成员,由len()内建函数得到集合的基数 ...

  7. 物理提取大绝招”Advanced ADB”???

    近来手机取证有个极为重大的突破,是由手机取证大厂Cellebrite所率先发表的"Advanced ADB" 物理提取方法,此功能已纳入其取证设备产品UFED 6.1之中. 这个所 ...

  8. 使用webpack打包css和js

    1.安装webpack. npm install webpack -g 2.创建一个文件夹app. 3.新建文件test.js. require("!style-loader!css-loa ...

  9. xmlplus 组件设计系列之七 - 路由

    在浏览器端,对路由的理解一般是根据不同的 URL 完成页面的切换.在服务器端,则是根据不同的 URL 请求回馈相关的页面.在本章,我们讲述的是根据接收到的不同命令,路由组件呈现出不同的页面,这算是广义 ...

  10. 实体类和数据表的映射异常(XXX is not mapping[ ])

    在使用SSH框架开发过程,使用hibernate框架提供的工具类实现与数据库数据交互,在执行cmd操作时,如果出现以下异常: org.hibernate.hql.ast.QuerySyntaxExce ...