美文网首页jsp
Servlet与JSP学习笔记(二) Servlet核心(上)

Servlet与JSP学习笔记(二) Servlet核心(上)

作者: Toconscience | 来源:发表于2017-04-11 23:31 被阅读31次

    这里又把教材换成了孙卫琴老师的《Tomcat与Java Web开发技术详解》。兜了一圈后发觉这本书真是好。Runoob 太浅,《Head First Servlets and JSP》节奏又太慢,也远离应用。而《Tomcat》这本书虽然没有用Eclipse, 但有结构完整的代码,用Sublime当作项目串起来,跟用Eclipse没有什么代沟。

    容器与Web应用及上下文的关系

    我觉得这是Servlet最核心的地方。

    • Tomcat就是容器,其它替代者有Jetty、JBoss等等。
    • JavaWeb应用就是包含了一组Servlet、JSP、HTML等各种文件的一个集合。就是一定要在WEB-INF\ 目录下有个web.xml文件。

    下图的Tomcat的组成结构刚好可以解释Java web里面最常见的一些概念:

    Tomcat结构Tomcat结构
    • 顶层的Server元素代表Tomcat容器
    • 一个Server可以包含多个Service组件
    • 一个Service里面可以有多个负责接受与响应客户请求的Connector组件
    • 一个Service只能包含一个Engine组件
    • 一个Engine组件可以包含多个虚拟主机(Host)组件(localhost是默认创建的主机,你还可以创建更多的虚拟主机,并且只要把DNS指向这台机器,就可以访问这个虚拟主机的URL)
    • 一个Host组件可以包含多个Context。一个Context就代表一个Web应用。

    容器在启动一个Web应用时就创建一个ServletContext对象和这个应用对应起来,并且这个对象和Web应用的生命周期一致。因此,可以利用这个对象来存储全局数据。

    Servlet API与Servlet 生命周期

    Sun公司(现在的Oracle)为javax.servlet.Servlet接口定义了5个方法。其中的3个方法由Servlet容器调用:

    • init()方法: 负责初始化Servlet对象。容器在创建好Servlet对象后,就会调用该方法。
    • service()方法:负责响应客户端的请求。容器收到客户端请求后,就会调用对应Servlet对象的service()方法。
    • destroy()方法:负责释放Servlet对象占用的资源。容器在销毁Servlet对象之前调用该方法。

    另外两个方法在这里不是很重要。下面来说一下Servlet的生命周期:

    1. 初始化阶段:容器加载Servlet类,创建对象,并调用其init()方法。只有在Servlet被第一次请求时,或者Servlet配置了 <load-on-startup>元素, Servlet会被初始化。
    2. 运行时阶段:Servlet被初始化之后,就可以通过service()方法重复接受不同的请求。每次的参数ServletRequest和ServletResponse对象会重新创建和销毁。
    3. 销毁阶段:当Web应用被终止时,容器会先调用所有Servlet对象的destroy()方法,再销毁这些对象。

    Web应用的生命周期

    1. 启动阶段:加载Web应用的数据,创建ServletContext对象,对Filter和一些Servlet进行初始化。
    2. 运行阶段:所有的Servlet都处于待命状态,随时可以响应客户端的请求。
    3. 终止阶段:销毁各种对象和资源。

    相关文章

      网友评论

        本文标题:Servlet与JSP学习笔记(二) Servlet核心(上)

        本文链接:https://www.haomeiwen.com/subject/ccdpattx.html