揭秘Java Web技术内幕,别让CRUD麻木了你!

栏目: Java · 发布时间: 5年前

内容简介:还没关注?快动动手指!

还没关注?

快动动手指!

聊技术、论职场!

为IT人打造一个“有温度”的 狸猫技术窝

在JavaWeb学习研究中,Servlet扮演重要的作用,学好它,是后续JavaWeb学习的良好基础。

无论是SSH,还是SSM,微服务JavaWeb技术,都应先学好Servlet,从而达到事半功倍的效果,本篇将主要分析Servlet的运行原理。

一、UML

下图为Servlet UML关系图。

揭秘Java Web技术内幕,别让CRUD麻木了你!

从图中可以看出:

  1. 抽象类HttpServlet继承抽象类GenericServlet,其有两个比较关键的方法,doGet()和doPost()

  2. GenericServlet实现接口Servlet,ServletConfig,Serializable

  3. MyServlet(用户自定义Servlet类)继承HttpServlet,重写抽象类HttpServlet的doGet()和doPost()方法

注: 任何一个用户自定义Servlet,只需重写抽象类HttpServlet的doPost()和doGet()即可,如上图的MyServlet

二、Servlet在容器中的执行过程

Servlet只有放在容器中,方可执行,且Servlet容器种类较多,如Tomcat,WebLogic等。

下图为简单的请求响应模型。

揭秘Java Web技术内幕,别让CRUD麻木了你!

分析:

  1. 浏览器向服务器发出GET请求(请求服务器ServletA)

  2. 服务器上的容器逻辑接收到该url,根据该url判断为Servlet请求,此时容器逻辑将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)

  3. 容器逻辑根据url找到目标Servlet(本示例目标Servlet为ServletA),且创建一个线程A

  4. 容器逻辑将刚才创建的请求对象和响应对象传递给线程A

  5. 容器逻辑调用Servlet的service()方法

  6. service()方法根据请求类型(本示例为GET请求)调用doGet()(本示例调用doGet())或doPost()方法

  7. doGet()执行完后,将结果返回给容器逻辑

  8. 线程A被销毁或被放在线程池中

注意:

  1. 在容器中的每个Servlet原则上只有一个实例

  2. 每个请求对应一个线程

  3. 多个线程可作用于同一个Servlet(这是造成Servlet线程不安全的根本原因)

  4. 每个线程一旦执行完任务,就被销毁或放在线程池中等待回收

三、Servlet在JavaWeb中扮演的角色

Servlet在JavaWeb中,扮演两个角色:页面角色和控制器角色。

有了jsp等动态页面技术后,Servlet更侧重于控制器角色,jsp+servlert+model 形成基本的三层架构

(一)页面Page角色

(二)控制器角色

jsp充当页面角色,Servlet扮演控制器角色,两者组合构建基本的MVC三层架构模式

揭秘Java Web技术内幕,别让CRUD麻木了你!

四、Servlet在容器中的生命周期

下图为Servlet生命周期简要概图

揭秘Java Web技术内幕,别让CRUD麻木了你!

分析:

第一步 :容器先加载Servlet类

第二步 :容器实例化Servlet(Servlet无参构造函数执行)

第三步 :执行init()方法(在Servlet生命周期中,只执行一次,且在service()方法执行前执行)

第四步 :执行service()方法,处理客户请求,doPost()或doGet()

第五步 :执行destroy(),销毁线程

END

作者: Alan

来源:

https://www.cnblogs.com/wangjiming/p/10360327.html

本文版权归作者所有

为您推荐:

  1. 扎心一问!你凭什么成为top1%的 Java 工程师?

  2. 【干货走一波】千万级用户的大型网站,应该如何设计其高并发架构?

  3. PK光明顶?江湖上流传的几大消息队列门派,到底有什么本质区别?

  4. 扒一扒 JVM 的垃圾回收机制,拿大厂offer少不了它!

  5. 面试阿里?如果对别人开源的Rocket MQ了如指掌,岂不是很加分?

  6. 百度、腾讯热门面试题:聊聊Unix与Java的IO模型?(含详细解析)

  7. 35岁的大龄 码农 们,如何才能不被社会淘汰掉?

  8. 一步一图,带你走进Netty的世界!

  9. 想要去阿里面试?你必须得跨过JVM这道坎!

  10. 你连Nginx怎么转发给你请求都说不清楚,还好意思说自己不是CRUD工程师?

长按下图二维码,即刻关注【 狸猫技术窝

阿里、京东、美团、字节跳动

顶尖技术专家 坐镇

为IT人打造一个 “有温度” 的技术窝!

揭秘Java Web技术内幕,别让CRUD麻木了你!


以上所述就是小编给大家介绍的《揭秘Java Web技术内幕,别让CRUD麻木了你!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大数据技术原理与应用

大数据技术原理与应用

林子雨 / 人民邮电出版社 / 2015-8-1 / 45.00

大数据作为继云计算、物联网之后IT行业又一颠覆性的技术,备受关注。大数据处不在,包括金融、汽车、零售、餐饮、电信、能源、政务、医疗、体育、娱乐等在内的社会各行各业,都融入了大数据的印迹,大数据对人类的社会生产和生活必将产生重大而深远的影响。 大数据时代的到来,迫切需要高校及时建立大数据技术课程体系,为社会培养和输送一大批具备大数据专业素养的高级人才,满足社会对大数据人才日益旺盛的需求。本书定......一起来看看 《大数据技术原理与应用》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具