基于Tomcat的Servlet学习笔记

看的《深入分析Java技术内幕》

-------------Servlet-------------

1.大体介绍:JavaWeb如何基于Servlet工作,Servlet容器工作原理(Tomcat为例),Web工程在Servlet容器中如何启动,Servlet容器如何解析web.xml定义的Servlet,用户请求如何分配给指定的Servlet,Servlet容器如何管理Servlet生命周期。
2.Servlet与Servlet容器的关系:类似枪和子弹。为了解耦,通过标准化接口相互协作。
3.以Tomcat为例介绍Servlet容器如何管理Servlet。Context容器直接管理Servlet在容器中的包装类Wrapper,所以Context容器直接影响Servlet的工作方式。
4.Tomcat容器模型:Container容器最外层,包含Engine,Engine包含Host,Host包含Servlet容器,Servlet容器包括多个Context,每个Context包含了多个Wrapper。
5.Web初始化:添加Web应用时会创建StandardContext容器并设置url和path。其中最重要的配置是ContextConfig,负责整个Web应用配置的解析,最后将这个Context容器加到父容器Host中。
6.Tomcat的启动逻辑基于观察者模式,所有容器继承Lifecycle接口,管理容器整个生命周期,所有容器的修改和状态改变由它通知观察者(Listener)。
7.ContextConfig的初始化:解析web.xml,将Servlet包装成Context容器中的StandardWrapper(不包装成Servlet对象原因:StandardWrapper是Tomcat容器中的一部分,具有容器的特征,而Servlet为独立的Web开发标准,不应该强耦合在Tomcat中)。
8.Context容器才是真正运行Servlet的Servlet容器。一个Web应用对应一个Context容器,配置属性由应用的web.xml指定。
9.Servlet实例的创建(前面完成Servlet的解析并包装成StandardWrapper添加在Context容器中)。
10.Servlet主动关联(实现三个接口)三个类:ServletConfig,ServletRequest,ServletResponse。ServletConfig在Servlet初始化时就传给Servlet了,后两个是在请求到达时调用Servlet传递。ServletConfig是获取Servlet的配置属性,StandardWrapper和ApplicationContext使用门面模式并实现ServletConfig接口。ServletConfig实现ServleContext,ServletContext含Context容器中如工作路径等的必要信息。而ServletRequest,ServletResponse转化为自己的Servlet类中HttpServletRequest和HttpServletResponse类。
11.用户从浏览器向服务器发起请求包括:http:hostname:port/contextpath/servletpath,前两个建立TCP连接,后面的URL选择服务器子容器服务用户请求到达Servlet容器,这种映射工作由Mapper类完成(Tomcat5前)(5后被移到Request中),保存了tomcat的Container容器中所有子容器信息,是Request类进入Container容器前,Mapper已根据hostname和contextpath将host和context容器设置到Requst属性中,保证Request进入Container容器前确定访问的子容器。
12.tomcat中基于观察者模式的Listener应用广泛,都继承EventListener接口。
13.Filter除提供request和response对象外,还提供了FilterChain对象。

-------------Tomcat-------------

1.tomcat两个核心组件:Connector和Container。一个Container可以选择多个Connector并形成一个Service,Service被包含在Server服务器里。
2.一个Service可以设置一个Container容器和多个Connector。Service接口标准实现类是StandardService,同时实现了Lifecycle接口。
3.Server接口:让其他程序访问Service集合,维护其生命周期。
4.Lifecycle接口:控制生命周期。
5.Connector组件:接受浏览器的TCP连接请求,创建Request和Reponse对象用于和请求端交换数据。然后产生线程处理请求并把Request和Reponse对象传给处理请求的线程(多线程是Connector设计的核心),由Container组件处理请求线程。
6.Container组件:与Servlet介绍同,有四个分别是父子关系的组件:Engine,Host,Context,Wrapper,一个Engine代表完整的Servlet引擎。
7.一个Host在Engine中代表一个虚拟主机,安装和展开多个应用(eg.URL中的localhost)。
8.Context:管理以Wrapper出现的Servlet实例,启动子容器和Pipeline。具备了Servlet的基本运行环境,理论上只要有Contxt就能运行Servlet。
9.Wrapper:实现类是StandardWrapper,实现了拥有Servlet初始信息的ServletConfig,代表一个Servlet,管理Servlet,包括Servlet的装载,初始化,执行和资源回收。

时间: 2024-10-27 13:07:24

基于Tomcat的Servlet学习笔记的相关文章

测试servlet学习笔记

操作方法: 1.新建工程: File-->new-->Java Project-->TestServlet(工程名称)-->Finish. 2.加载servlet-api.jar类包: TestServlet(右键)-->Build Path-->Configure Build Path-->Library -->Add External JAR Selection-->(浏览在tomcat的lib目录下找到servlet-api.jar选中后点击打开

SERVLET 学习笔记

SERVLET 学习笔记 一.Servlet基本定义 Servlet是服务器端上面运行的一段小的java程序,一个servlet就是一个简答的java类.通常servlet都是通过请求和返回的模式来被访问的,客户端通过resuest请求,servlet则通过response来返回需要的内容. 二.Tomcat容器等级 Tomcat容器等级分为四个等级,由内向外分别是:context容器àSERVLET容器àHOST(主机)容器àENGINE(引擎)容器.其中,CONTEXT容器,一个CONTEX

JavaWeb 后端 <二> 之 Servlet 学习笔记

JavaWeb 后端 <二> 之 Servlet 学习笔记 一.Servlet概述 1.什么是Servlet Servlet是一个运行在服务器端的Java小程序,通过HTTP协议用于接收来自客户端请求,并发出响应. 2.Servlet中的方法 public void service(ServletRequest req,ServletResponse res) throws ServletException,java.io.IOException ServletRequest req:代表着请

Servlet学习笔记(七)—— JSP概述

1.Servlet两个缺陷: ①所有HTML标签必须包在Java字符串中,使得发送HTTP响应十分繁琐: ②所有文本和HTML标签都必须进行硬编码,即使对表示层做极其微小的修改,也需要重新编译. 2.注释: (1)JSP备注:<% %>,不会发送到浏览器,不能嵌套 (2)HTML备注:<!-- -->,不被容器处理,直接发送到浏览器,用途之一是标识JSP页面.在处理带有许多JSP片段的应用程序时,开发者通过查看HTML源代码,可以轻松查出某个HTML代码部分生成了那个JSP页面.

Servlet学习笔记(八)—— 自定义过滤器的编写改进:自定义实现FilterChain

笔记六中实现了三种过滤器:字符编码过滤.登录权限过滤.敏感词过滤,但是有个缺陷就是,限定了过滤顺序,而不能实现先进行request过滤,最后response过滤,并且中间几项过滤的顺序不能动态改变.所以这里做个改进,实现一个过滤顺序的FilterChain. 多个Filter的执行顺序在这篇博文中得到很仔细的讲解,总结一点,多个过滤器的执行顺序是根据web.xml中不同<filter-mapping>的顺序来先后执行的,比如: <?xml version="1.0"

Servlet学习笔记(六)—— 自定义过滤器的编写

Boss今天让我写一个类似BBS留言板的过滤器,要求对字符编码.登录权限.敏感词进行过滤操作. 总体分两模块: 一.过滤器 //Filter.java package lewa; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public interface Filter { public void init(); public void doFilter(ServletRequest reu

Other - 01 - Servlet学习笔记 - 概览

Servlet规范 本文第一段是 copy 过来的,请各位看官谅解,顺序结构参照 Servlet 3.1 规范. 什么是 Servlet Servlet 是基于 Java 技术的 web 组件,容器托管的,用于生成动态内容.像其他基于 Java 的组件技术一样,Servlet 也是基于平台无关的 Java 类格式,被编译为平台无关的字节码,可以被基于 Java 技术的 web server 动态加载并运行.容器,有时候也叫做 servlet 引擎,是 web server 为支持 servlet

servlet学习笔记01基本概念

1.什么是servlet?答:servlet是一个按照Servlet规范编写的java程序,基于http协议,在服务器端运行(如:tomcat),要编写一个servlet,需要实现javax.servlet.Servlet接口,jsp是servlet的扩展,jsp第一次运行时,需要先被翻译成JAVA代码,再编译.class文件,其中的JAVA代码就是servlet.2.servlet作用答:用于处理客户端的请求3.servlet生命周期答:servlet的生命周期是由servlet的容器来控制的

Other - 02 - Servlet学习笔记 - 异步Servlet

异步Servlet Servlet默认情况下都是同步的,但是Servlet可以进行异步的调用. /** * Servlet implementation class MainServlet */ @WebServlet(value = "/MainServlet", asyncSupported = true) public class AsynServlet extends HttpServlet { private static final long serialVersionUI