Servlet 体系结构

简介: Servlet 体系结构

Servlet执行原理

image.png

执行原理

Tomcat是服务器 端,浏览器是客户端,这是BS架构

http://localhost:8080是Tomcat的地址,后面是资源名称。

1. 当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径

2. 查找web.xml文件,是否有对应的标签体内容,找类名。

3. 如果有,则在找到对应的全类名

4. tomcat会将字节码文件加载进内存,并且创建其对象

5. 调用其service方法,所以Tomcat是severlet的一个容器


Servlet生命周期


Servlet接口中有五个方法

init()

getServletConfig()

获取ServletConfig对象 ----Servlet的配置对象

service()

getServletInfo()

destroy()


1. 被创建:执行init方法,只执行一次
    * Servlet什么时候被创建?
      * 默认情况下,第一次被访问时,Servlet被创建
      * 可以配置执行Servlet的创建时机。
        * 在<servlet>标签下配置
          1. 第一次被访问时,创建
                    * <load-on-startup>的值为负数
                2. 在服务器启动时,创建
                    * <load-on-startup>的值为0或正整数
                    *  Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
      * 多个用户同时访问时,可能存在线程安全问题。
      * 解决:尽量不要在Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
  2. 提供服务:执行service方法,执行多次
    * 每次访问Servlet时,Service方法都会被调用一次。
  3. 被销毁:执行destroy方法,只执行一次
    * Servlet被销毁时执行。服务器关闭时,Servlet被销毁
    * 只有服务器正常关闭时,才会执行destroy方法。
    * destroy方法在Servlet被销毁之前执行,一般用于释放资源

查看自己的web项目位置


1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件
  *1 查看控制台的log:Using CATALINA_BASE:   "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"
  2点击conf---点击Catalina---点击localhost-----点击web.xml打开就可以看到自己的web项目的代码位置
2. 工作空间项目    和     tomcat部署的web项目
  * tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
  * WEB-INF目录下的资源不能被浏览器直接访问。

Servlet架构


下面这张图显示了servlet在Web 应用程序中的位置


这里有点疑问

HTTTP Server是指的Apache与Tomcat有区别

Apache与Tomcat有什么关系和区别

总结:

1.apache支持静态页,tomcat支持动态的,比如servlet等,

2.apache是web服务器,Tomcat是应用(java)服务器,它只是一个servlet(jsp也翻译成servlet)容器,可以认为是apache的扩展,但是可以独立于apache运行。

3.Tomcat是Apache组织在符合J2EE的JSP、Servlet标准下开发的一个JSP服务器 ,就是说Tomcat就是对

4.APACHE是一个web服务器环境程序 启用他可以作为web服务器使用 不过只支持静态网页 如(asp,php,cgi,jsp)等动态网页的就不行

如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页 而这个jsp解释器就是TOMCAT, 为什么还要JDK呢?因为jsp需要连接数据库的话,就要jdk来提供连接数据库的驱程,所以要运行jsp的web服务器平台就需要APACHE+TOMCAT+JDK


在IDEA中创建web项目和Servlet


Intellij idea创建javaWeb以及Servlet简单实现


Servlet 体系结构


Servlet 和 ServletConfig 都是顶层接口,而 GenericServlet 实现了这两个顶层接口,然后

HttpServlet 继承了 GenericServlet 类.所以要实现一个 Servlet 直接就可以继承 HttpServlet

Servlet的体系结构

Servlet – 接口

|

GenericServlet – 抽象类

|

HttpServlet – 抽象类


* GenericServlet:将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
  * 将来定义Servlet类时,可以继承GenericServlet,实现service()方法即可
* HttpServlet:对http协议的一种封装,简化操作
  1. 定义类继承HttpServlet
  2. 复写doGet/doPost方法
  doget方法在访问时会在url后加上地址
  dopost则不会
相关文章
|
6月前
Servlet方法介绍及体系结构
Servlet方法介绍及体系结构
55 0
|
5月前
|
应用服务中间件
|
6月前
|
存储 Java 应用服务中间件
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解(2)
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解
67 2
|
6月前
|
Web App开发 XML Java
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解(1)
Servlet执行流程&生命周期&方法介绍&体系结构、Request和Response的功能详解
114 2
|
安全 Java 应用服务中间件
javaweb servlet体系结构与原理剖析
1.Servlet的工作过程 当用户通过 URL 发出一个请求时,这些 Java servlet 类就将之转换成一个 HttpServletRequest,并发送给 URL 所指向的目标。当服务器端完成其工作时,Java 运行时环境(JRE)就将结果包装在一个 HttpServletResponse 中,然后将原 HTTP 响应送回给发出该请求的客户机。 在与 Web 应用程序进行交互时,通常会发出多个请求并获得多个响应。所有这些都是在一个会话语境中,Java 语言将之包装在一个 HttpSession 对象中。在处理响应时,您可以访问该对象,并在创建响应时向其添加事件。它提供了一些跨请求的语
167 0
javaweb servlet体系结构与原理剖析
|
应用服务中间件 容器 Java
Servlet 体系结构
我们知道 Java Web 应用是基于 Servlet 规范运转的,那么 Servlet 本身又是如何运转的呢?为何要设计成这样呢 Servlet 顶层类关联图 从上图可以看出 Servlet 规范就是基于这几个类运转的,与 Servle...
947 0
|
3月前
|
缓存 安全 Java
Java服务器端技术:Servlet与JSP的集成与扩展
Java服务器端技术:Servlet与JSP的集成与扩展
33 3
|
3月前
|
存储 缓存 前端开发
Servlet与JSP在Java Web应用中的性能调优策略
Servlet与JSP在Java Web应用中的性能调优策略
34 1