一起学习java
一、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的更多相关文章
- 零基础如何学习java更有效呢?
零基础学java,不知道该如何入手?也不知道学习的方向,很多人会问零基础怎么样学习,有没有什么入门的书籍推荐:只要方法正确,零基础学好java也是有机会的哦. 一.理解Java思想 Java是一门面向 ...
- 积极主动敲代码,使用Junit学习Java程序设计
积极主动敲代码,使用JUnit学习Java 早起看到周筠老师在知乎的回答软件专业成绩很好但是实际能力很差怎么办?,很有感触. 从读大学算起,我敲过不下100本程序设计图书的代码,我的学习经验带来我的程 ...
- 如何接触学习java
信息科技必将是未来的潮流,Java语言必将在时代的进步中发挥不可估量的作用,未来,掌握好一门实用而且有良好应用前景的技术是你们的首要任务. 零基础怎么学Java 多年Java教育培训经验事实表明,零基 ...
- 零基础如何系统学习Java Web
零基础如何系统学习Java Web? 我来给你说一说 你要下决心,我要转行做开发,这样你才能学成. 你要会打字,我公司原来有一个程序员,打字都是两个手一指禅,身为程序员你一指禅怎么写出的代码,半个 ...
- (转)如何学习Java技术?谈Java学习之路
51CTO编者注:这篇文章已经是有数年“网龄”的老文,不过在今天看来仍然经典.如何学习Java?本篇文章可以说也是面对编程初学者的一篇指导文章,其中对于如何学习Java的步骤的介绍,很多也适用于开发领 ...
- 《疯狂Java讲义》(一) ---- 关于学习Java的反思
"听到Spring很火,就立马买来一本Spring的书来读,最后结果往往是失败,因为这种学习没有积累,没有根基,学习过程中困难重重,每天都被一些相同.类似的问题所困扰,起初热情十足,经常上论 ...
- 十天来学习java的心得体会
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
- 【转】学习JAVA的步骤
好东西大家分享: JAVA学习的一些重点 . Java语言基础 谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的 ...
- 应用JConsole学习Java GC
应用JConsole学习Java GC 关于Java GC的知识,好多地方都讲了很多,今天我用JConsole来学习一下Java GC的原理. GC原理 在我的上一篇中介绍了Java运行时数据区,在了 ...
- 【ZZ】Java : 一个帝国的诞生 & 假如时光能够倒流, 我会这么学习Java
Java : 一个帝国的诞生 http://dy.qq.com/article.htm?id=20160523A06XFS00 写的很有意思,一下子了解了JAVA的历史. 假如时光能够倒流, 我会这么 ...
随机推荐
- struts2 之 struts2类型转换
1. 在struts2中,相比servlet来时,获取数据时,程序员没有进行手动的类型转换,类型转换工作都有struts2来完成处理,但愿对于自定义类型数据,struts2不会帮助我们完成类型转换工作 ...
- MidpointRounding 枚举值简要说明
1. MidpointRounding.AwayFromZero 当小数点后取舍时5 时会取绝对值大的如 4.5 会取5 及正常的4舍5入. -- 官方解释翻译解释取绝对值小值感觉反译错了. 2.Mi ...
- css伪类的组合用法
利用伪类组合,可以用css代替js以达到目的,少些一下js .textarea:empty:before { display: block; content: '请输入'; color: #ababa ...
- 新型钓鱼手段预警:你看到的 аррӏе.com 真是苹果官网?
研究人员发现一种"几乎无法检测"的新型钓鱼攻击,就连最细心的网民也难以辨别.黑客可通过利用已知漏洞在 Chrome.Firefox 与 Opera 浏览器中伪造显示合法网站域名(例 ...
- MySQL常见建表选项以约束
一.CREATE TABLE 选项 1.在定义列的时候,指定列选项 1)DEFAULT <literal>:定义列的默认值 当插入一个新行到表中并且没有给该列明确赋值时,如果定义了列的默认 ...
- PHP count() 函数
count() 函数计算数组中的单元数目或对象中的属性个数. 对于数组,返回其元素的个数,对于其他值,返回 1.如果参数是变量而变量没有定义,则返回 0.如果 mode 被设置为 COUNT_RECU ...
- 使用PhpIniDir加载php配置文件出错,不能解析。
我也是在apache服务器上配置php,在加载了php的配置文件之后,就出问题了. PHPIniDir "H:/php54/"增加了类似这句话之后,服务器就启动不了了,或者.php ...
- 【Spark2.0源码学习】-5.Worker启动
Worker作为Endpoint的具体实例,下面我们介绍一下Worker启动以及OnStart指令后的额外工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/ ...
- swoole使用 常用案例
swoole使用 服务器及客户端 4种服务器[tcp/udp/web/websocket] TCP服务器 //创建Server对象,监听 127.0.0.1:9501端口 $serv = new sw ...
- 基于ABP框架的权限设置
需求:在界面展示中,"定向包管理","竞价管理","竞拍管理","发布定向资源","添加竞价资源", ...