Servlet 的原理----无脑笔记

Servlet 的原理

最近在啃<<独门架构:Java Web开发应用详解>>.好记性不如烂笔头,更何况自己脑子也不怎么好使.做下笔记,加深印象.

正文:

1.所有的Servlet类必须实现Servlet接口(接口在servlet-api.jar中可以找到)

2.Servlet程序的层次结构:

Servlet1,Servlet2.....------>继承HttpServlet------>继承GenericServlet-------->实现Servlet

3.让Servlet支持所有的HTTP方法:

a.将处理HTTP协议方法的代码写在一个方法中,或是写在其中一个doXXX()方法中,然后再其他的doXXX()方法中调用(就是覆盖每一个doXXX()方法)

b.直接覆盖HttpServlet类中的servlet方法(如果在Servlet中要支持所有的HTTP方法,建议用这种方法处理)

4.init()方法在建立Servlet对象时调用,用于为Servlet做一些初始化工作,其中config参数可以读取Servlet的配置信息(web.xml)

5.destroy()当一个Web应用程序被卸载或重新启动之前,destroy被调用.

6.运行Servlet的三要素:Servlet类,web.xml,Servlet引擎.

7.Servlet引擎流程

(1)在接收到客户端的某个HTTP请求后,Servlet引擎获得了一个URL,并对其进行分析

(2)在<<Tomcat安装目录>>\conf\servlet.xml查找path为/xxx的<Context>标签(也可以在webapps目录中去找),获得doBase所指的web应用程序的目录或war包

(3)根据上一步找到的web应用程序的具体位置,找到web.xml并读取其中内容,在获取信息后,将从URL中的信息跟web.xml中的信息进行比较,相匹配就可以获取相应的Servlet类

(4)获取相应的类后,Servlet引擎就会动态装载这个Servlet类

(5)在创建Servlet对象后,开始执行相应的方法.先调用init(),然后开始调用servlet()方法.在调用servlet方法时,Servlet引擎会创建两个对象,他们分别实现了HttpServletRequest(处理客户端请求)和HttpServletResponse(向客户端发送响应信息)接口

(6)在Web应用程序被卸载或重新启动之前,Servlet引擎将卸载其中的Servlet,这是引擎将调用destroy()方法.

以上就是今天的笔记,好囧!看来还要多加练习,多记笔记才行了!

时间: 2024-08-02 12:07:55

Servlet 的原理----无脑笔记的相关文章

Servlet工作原理(转)

Servlet运行在Servlet容器中,由容器负责Servlet实例的查找及创建工作,并按照Servlet规范的规定调用Servlet的一组方法,这些方法也叫生命周期的方法.具体调用过程如下图所示: Servlet生命周期详解 如上图所示,Servlet的生命周期可以分为四个阶段,即装载类及创建实例阶段.初始化阶段.服务阶段和实例销毁阶段.下面针对每个阶段的编程任务及注意事项进行详细的说明. (1)装载类及创建实例 客户端向Web服务器发送一个请求,请求的协议及路径必须遵守如下的格式:    

JSP/Servlet 工作原理

JSP/Servlet 工作原理(转载) 2014-03-08 23:20 1829人阅读 评论(0) 收藏 举报 Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器. Servlet 运行在 Servlet 容器中,并由容器管理从创建到销毁的整个过程. 对于用户到达Servlet的请求,Servlet容器会创建特定于这个请求的ServletRequest对象和 ServletResponse对象

Servlet 工作原理解析

-----转自许令波老师Servlet 工作原理解析  感觉写的很不错,保存下来,留着以后温习 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servlet 容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力.虽然它们是彼此依存的,但是又相互独立发展,这一切都是为了适应工业化生产的结果.从技术角度来说是为了解耦,通过标准化接口来相互协作.既然接口是连接 Servlet 与 Servlet 容器的关键,那我们就

计蒜客 无脑博士和他的试管们

无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试管装满或原试管空了.当然每一次灌注都是完全的.由于无脑博士天天这么折腾,早已熟练,溶液在倒的过程中不会有丢失. 写一个程序去帮助无脑博士找出当A是个是空的时候,C试管中硫酸铜溶液所剩量的所有可能性. 输入包括一行,为空格分隔开的三个数,分别为整数A,B和C. 输出包括一行,升序地列出当A试管是空的时

VS2013+openCV3.0无脑配置方法+解决警告问题【windows平台】

VS2013+openCV3.0无脑配置方法+解决警告问题[windows平台] 本文介绍如何配置VS+openCV环境,并解决“opencv 3.0 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失的”警告 参考博客: http://my.phirobot.com/blog/2014-02-opencv_configuration_in_vs.html 下载 openCV 下载 Opencv for Windo

GlusterFS复制卷修复原理以及脑裂分析

裂脑 所谓脑裂,就是指两个或多个节点都"认为"自身是正常节点而互相"指责"对方,导致不能选取正确的节点进行接管或修复,导致脑裂状态.这种现象出现在数据修复.集群管理等等高可用场景. Glusterfs的冗余镜像(下文简称AFR)提供了数据副本功能,能够在即使只有一个冗余节点的情况下仍能正常工作,不中断上层应用.当节点恢复后,能够将数据修复到一致状态,保证数据的安全. AFR工作原理 AFR数据修复主要涉及三个方面:ENTRY,META,DATA,我们以冗余度为2即含

Functional Programming Principles in ScalaScala函式编程原理 第一章笔记

所有non-trival编程语言都提供了 基本表达式(expression)去表示最简单的表达式 组合表达式的方法 抽象表达式的方法,也就是为表达式引入一个名字去引用它 substitional model 替代模型 sumOfSquares(3,2+2) sumOfSquares(3,4) square(3)+square(4) 9+square(4) 9+16 25 这种模型的核心概念是所有的表达式都规约成值,替代模型在lamada表达式中被形式化,构成了函数式编程的基石 substitio

Spring中AOP原理,使用笔记

AOP(面向切面编程):通过预编译和运行期动态代理的方式在不改变代码的情况下给程序动态的添加一些功能.利用AOP可以对应用程序的各个部分进行隔离,在Spring中AOP主要用来分离业务逻辑和系统级服务. 系统级服务指的是:事务处理,日志记录,性能统计,安全控制,异常处理等,因为这些功能分散在程序的各个模块中,又是通用的,所以可以将它从业务逻辑中分离出来. 连接点(joinpoint):在连接点可以拦截方法的执行,在连接点前后织入上述的这些系统级服务(织入的就是通知). 切入点(pointcut)

智慧解析第13集:无脑盲从者

智慧解析第13集:无脑盲从者,布布扣,bubuko.com