在JavaWeb学习研究中,Servlet扮演重要的作用,学好它,是后续JavaWeb学习的良好基础。无论是SSH,还是SSM,微服务JavaWeb技术,都应先学好Servlet,从而达到事半功倍的效果,本篇将主要分析Servlet的运行原理。

一、UML

下图为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生命周期简要概图

分析:

第一步:容器先加载Servlet类

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

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

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

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

jsp调用servlet方法_Servlet的运行原理相关推荐

  1. java.servlet js,调用servlet方法

    <深入剖析Tomcat>一2.1 javax.servlet.Servlet接口 2.1 javax.servlet.Servlet接口 Servlet编程需要使用到javax.servl ...

  2. jsp调用controller方法_RPC调用_服务注册与发现

    RPC调用_单体架构_SOA架构 系统架构的演变 1 传统的单体架构 1.1 什么是单体架构 一个归档包(例如 war 格式或者 Jar 格式)包含了应用所有功能的应用程序,我们通常称之 为单体应用. ...

  3. jsp调用controller方法_SpringMVC五大核心组件及调用过程

    Spring Web MVC 五大核心组件 DispatcherServlet 控制器入口 负责分发请求 HandlerMapping 负责根据请求 找到对应的控制器 Controller 真正处理请 ...

  4. JSP调用request方法获取请求相关信息

    index.jsp: <html> <body bgcolor="#FFFFF0"> 请求方式:<%=request.getMethod() %> ...

  5. 【JSP】JSP的运行原理

    初次访问JSP页面 JSP同Servlet一样,都运行在Servlet容器中.当用户第一次访问JSP页面时,JSP页面的执行过程可分为五个步骤,各步骤含义如下: 客户向服务器发送JSP页面请求(req ...

  6. JSP 与 Servlet重要部分

    1.讲下servlet的执行流程. Servlet的执行流程也就是servlet的生命周期,当服务器启动的时候生命周期开始,然后通过init()<启动顺序根据web.xml里的startup-o ...

  7. 基于javaweb+jsp的大学生个人财务记账系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap)

    基于javaweb+jsp的大学生个人财务记账系统(JavaWeb JSP MySQL Servlet SSM SpringBoot Bootstrap) 运行环境 Java≥8.MySQL≥5.7. ...

  8. 没有与参数列表匹配的 重载函数 getline 实例_面试题:方法重载的底层原理?...

    前语:微信改版后,大量读者还没养成点赞的习惯,如写得好,望大家阅读后在右下边"好看"处点个赞,以示鼓励!长期坚持原创真的很不容易,多次想放弃,坚持是一种信仰,专注是一种态度. 关于 ...

  9. web开发总结-Servlet与JSP(运行原理)

    文章结构:(1)剖析Servlet:(2)剖析JSP: 一.剖析Servlet: (1)概述: Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的web页面.它担当Web ...

  10. Web开发基础_Servlet学习_0011_Servlet中的多线程安全问题与Servlet运行原理

    Servlet中的多线程安全问题 Servlet运行原理 Servlet中的多线程安全问题 演示 案例演示: 工程案例目录结构 pom.xml: <project xmlns="htt ...

最新文章

  1. arcgis-“一个或多个已经添加图层的范围与关联空间参考不一致”“Arcmap不能绘制一个或者多个图层”
  2. javaweb分页查询oracle,JavaWeb项目 利用Oracle数据库实现分页查看细讲
  3. 2020牛客国庆集训派对day2 VIRUS OUTBREAK
  4. c#日期转换周几_RPA经验:使用 selector 选择日期
  5. 官宣!华为主导首个软件定义摄像机国际标准诞生
  6. 2018 Multi-University Training Contest 2: 1007. Naive Operations
  7. Python--多态与多态性、绑定方法与非绑定方法
  8. java框架面试题及答案,年薪50W
  9. [Cocos Creator] 制作简版消消乐(四):实现消除算法
  10. 计算机与电视如何通过网络连接,怎么设置电脑和电视共用一根网线上网
  11. 《The Elder Scrolls V: Skyrim》百般冷门却强力职业
  12. amr-nb linux 编译安装包,3GPP最新版本amr-nb编解码源代码
  13. 记一次Process finished with exit code 1 项目异常
  14. python math库 sqrt eval_Python 在线基础课程
  15. 《三国志》历代记(2)
  16. C#爬虫,HttpClient请求,HtmlAgilityPack,HtmlDocument使用
  17. 因政策原因购房者违约的要如何处理
  18. centos下面,解压.gar.gz文件
  19. 解决SendMessage函数向QQ好友发送中文消息时出现乱码
  20. 大数据培训机构水有多深?

热门文章

  1. 刘长春:未来云时代——红帽开放混合云驱动增长
  2. js 测试正则表达式
  3. 用SandCastle为注释生成chm文档
  4. VC++动态链接库(DLL)编程(六)――DLL***
  5. 8.Prometheus 监控技术与实践 --- Pushgateway
  6. 10.企业安全建设入门(基于开源软件打造企业网络安全) --- 数据库安全
  7. 11.卷1(套接字联网API)---名字与地址转换
  8. 《数学之美》—信息指纹及其应用
  9. Python3-问题整理
  10. 《学习之道》第六章补充