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

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

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

还没关注?

快动动手指!

聊技术、论职场!

为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麻木了你!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

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

Web Security Testing Cookbook

Web Security Testing Cookbook

Paco Hope、Ben Walther / O'Reilly Media / 2008-10-24 / USD 39.99

Among the tests you perform on web applications, security testing is perhaps the most important, yet it's often the most neglected. The recipes in the Web Security Testing Cookbook demonstrate how dev......一起来看看 《Web Security Testing Cookbook》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码