在JavaWeb学习研究中,Servlet扮演重要的作用,学好它,是后续JavaWeb学习的良好基础。
公司主营业务:成都网站设计、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出城子河免费做网站回馈大家。
无论是SSH,还是SSM,微服务JavaWeb技术,都应先学好Servlet,从而达到事半功倍的效果,本篇将主要分析Servlet的运行原理。
一、UML
下图为Servlet UML关系图。
从图中可以看出:
抽象类HttpServlet继承抽象类GenericServlet,其有两个比较关键的方法,doGet()和doPost()
GenericServlet实现接口Servlet,ServletConfig,Serializable
MyServlet(用户自定义Servlet类)继承HttpServlet,重写抽象类HttpServlet的doGet()和doPost()方法
注:任何一个用户自定义Servlet,只需重写抽象类HttpServlet的doPost()和doGet()即可,如上图的MyServlet
二、Servlet在容器中的执行过程
Servlet只有放在容器中,方可执行,且Servlet容器种类较多,如Tomcat,WebLogic等。
下图为简单的请求响应模型。
分析:
浏览器向服务器发出GET请求(请求服务器ServletA)
服务器上的容器逻辑接收到该url,根据该url判断为Servlet请求,此时容器逻辑将产生两个对象:请求对象(HttpServletRequest)和响应对象(HttpServletResponce)
容器逻辑根据url找到目标Servlet(本示例目标Servlet为ServletA),且创建一个线程A
容器逻辑将刚才创建的请求对象和响应对象传递给线程A
容器逻辑调用Servlet的service()方法
service()方法根据请求类型(本示例为GET请求)调用doGet()(本示例调用doGet())或doPost()方法
doGet()执行完后,将结果返回给容器逻辑
线程A被销毁或被放在线程池中
注意:
在容器中的每个Servlet原则上只有一个实例
每个请求对应一个线程
多个线程可作用于同一个Servlet(这是造成Servlet线程不安全的根本原因)
每个线程一旦执行完任务,就被销毁或放在线程池中等待回收
三、Servlet在JavaWeb中扮演的角色
Servlet在JavaWeb中,扮演两个角色:页面角色和控制器角色。
有了jsp等动态页面技术后,Servlet更侧重于控制器角色,jsp+servlert+model 形成基本的三层架构
(一)页面Page角色
(二)控制器角色
jsp充当页面角色,Servlet扮演控制器角色,两者组合构建基本的MVC三层架构模式
四、Servlet在容器中的生命周期
下图为Servlet生命周期简要概图
分析:
***步:容器先加载Servlet类
第二步:容器实例化Servlet(Servlet无参构造函数执行)
第三步:执行init()方法(在Servlet生命周期中,只执行一次,且在service()方法执行前执行)
第四步:执行service()方法,处理客户请求,doPost()或doGet()
第五步:执行destroy(),销毁线程
网站题目:揭秘JavaWeb技术内幕,别让CRUD麻木了你!
URL分享:http://www.shufengxianlan.com/qtweb/news43/300493.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联