一 UML
如果想学习Java工程化、高性能及分布式、深入浅出。微做事、Spring,MyBatis,Netty源码剖析的朋友可以加我的Java高等互换:854630135,群里有阿里大牛直播讲解技能,以及Java大型互联网技能的视频免费分享给大家。
下图为Servlet UML关系图。
从图中,可以看出:
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
本群供应免费的学习辅导 架构资料 以及免费的解答
不睬解问题都可以在本群提出来 之后还会有直播平台和讲师直接互换噢