一 UML

如果想学习Java工程化、高性能及分布式、深入浅出。
微做事、Spring,MyBatis,Netty源码剖析的朋友可以加我的Java高等互换:854630135,群里有阿里大牛直播讲解技能,以及Java大型互联网技能的视频免费分享给大家。

下图为Servlet UML关系图。

深入浅出servletandjsp浅析Servlet履行道理 GraphQL

从图中,可以看出:

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等。
下图为大略的 要求相应 模型。

剖析:

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角色

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding(\公众UTF-8\"大众); response.setContentType(\"大众text/html;charset=utf-8\"大众); PrintWriter out=response.getWriter(); out.println(\"大众Hello!Servlet.\公众); }

(二)掌握器角色

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

四 Servlet在容器中的生命周期

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

欢迎事情一到八年的Java工程师朋友们加入Java高等互换:854630135

本群供应免费的学习辅导 架构资料 以及免费的解答

不睬解问题都可以在本群提出来 之后还会有直播平台和讲师直接互换噢