序言

如果是铁,就要经历跳起炽热火海的痛苦,才能锻造出最具锋芒的剑;是石,就要经历海浪打的痛苦,才能将自己割得棱角分明。

学习是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。所以我说:学习贵在坚持!

每天,对我们来说,是一个挑战,是一个新的开始,是昨天的结束。每一天,我们在努力,在学习。但是当那一次次残忍的考试打击者我们,我们又失去斗志。

一生中总会遇到这样的时候,你的内心已经兵荒马乱天翻地覆了,可是在别人看来你只是比平时沉默了一点,没人会觉得奇怪。这种战争,注定单枪匹马。

Servlet

Servlet Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能。为了方便第三方准守这种规范,Sun公司(现在Oracle公司)提供了一系列相关的接口,即Servlet API。 Servlet应用 直接或间接实现了Servlet接口并且需要运行在Servlet容器中的Java程序,主要用来生成动态的Web页面。Servlet应用不能独立于运行,必须被部署到Servlet容器。 Servlet容器 Servlet容器(Servlet引擎)是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应,即Servlet容器用来接收客户端请求,处理协议、请求内容等,初始化Servlet实例(只需要第一次初始化)并调用Servlet应用的对应方法,然后Servlet应用返回处理结果,经Servlet容器再返回到用户客户端。 Tomcat容器 Tomcat容器,又叫应用服务器,也有人称之为Servlet容器。其实,本质上,Tomcat容器具有Servlet容器的功能,是Servlet容器的一种开源实现,但是它又不仅仅只是Servlet容器。

Servlet API的包结构   相关文档可以参考《Servlet 3.0 API 》。通过文档我们可以知道,在Servlet规范中,一种有4个java包,分别是: javax.servlet 该java包下面主要包含了定义了Servlet和Servlet容器之间契约的类和接口。 javax.servlet.annotation Servlet体系中定义的注解。包括了Servlet、Filter、Listener等注解。 javax.servlet.descriptor 包含为Web应用的配置信息提供编程式访问的类型,即提供了对通过 等标签进行的配置信息的访问方式。 javax.servlet.http 该包下的类,可以说是在javax.servlet包中类和接口的契约的基础上,又基于http协议的进一步的延伸,即定义了Http Servlet和Servlet容器之间契约的类和接口。

 Servlet生命周期的方法:   在Servlet接口的方法中,init( ),service( ),destroy( )是Servlet生命周期的方法。代表了Servlet从“出生”到“工作”再到“死亡 ”的过程,在后面会具体的分析Servlet的工作过程和工作原理。   剩下的两个方法,作用分别如下: getServletInfo(),这个方法会返回Servlet的一段描述,可以返回一段字符串。 getServletConfig(),这个方法会返回由Servlet容器传给init()方法的ServletConfig对象。 6、Servlet的工作过程和原理   Servlet工作过程中,涉及到了客户端(浏览器)、Servlet容器、Servlet应用三种角色。大致过程如下所示:   首先,由客户端发起请求。   然后,Servlet容器接收到客户端的请求,解析请求协议和数据,如果servlet程序还没有被加载,就会执行加载过程并调用service()方法,否则直接调用service()方法。   其中,加载Servlet程序的过程:根据Servlet容器与Servlet程序间的契约,当有请求过来时,如果Servlet程序还没有被载入Servlet容器中,这个时候Servlet容器就会通过调用init()方法将Servlet类载入内存,并产生Servlet实例。在调用init()方法的时候,Servlet容器会传入一个ServletConfig对象进来从而对Servlet对象进行初始化。该过程只会被执行一次,即在一个应用程序中,每类Servlet程序只能有一个实例。其中,在ServletConfig对象中还隐藏一个ServletContext实例对象,这个ServletContext实例对象就表示了Servlet程序在容器中的上下文环境。   而,service()方法执行的过程:首先由Servlet容器解析请求参数并封装成一个ServletRequest和ServletResponse对象。其中,ServletRequest中封装了当前的Http请求,开发者可以操作ServletRequest对象获取用户的请求数据;ServletResponse封装了当前用户的Http响应,开发者可以操作ServletResponse对象把响应内容发回给用户。Servlet容器把ServletRequest和ServletResponse作为参数传递给了service()方法,通过执行service()方法,实现响应的逻辑,并通过ServletResponse对象返回内容到客户端。

Copyright © 2023 王鸿的小站渝ICP备2021004476号-1