JavaEE阶段(Servlet的介绍以及使用)

Posted on   年薪百万分我五十万  阅读(113)  评论(0编辑  收藏  举报


简介

  • Servlet是sun公司提供的一门用于开发动态web资源的技术
  • Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
    1.编写一个Java类,实现servlet接口
    2.把开发好的Java类部署到web服务器中

Servlet接口实现类

  • Servlet接口SUN公司定义了两个默认实现类,分别为:GenericServlet、HttpServlet
  • HttpServlet指能够处理HTTP请求的servlet,它在原有Servlet接口上添加了一些HTTP协议处理方法,它比Servlet接口的功能更为强大。因此开发人员在编写Servlet时,通常应继承这个类,而避
    免直接去实现Servlet接口
  • HttpServlet在实现Servlet接口时,覆写了service方法,该方法体内的代码会自动判断用户的请求方式,如为GET请求,则调用HttpServlet的doGet方法,如为Post请求,则调用doPost方法。因
    此,开发人员在编写Servlet时,通常只需要覆写doGet或doPost方法,而不要去覆写service方法

servlet执行过程分析

  1. 客户端发送HTTP请求
  2. 请求报文到达服务器之后,解析转换生成request对象, 传给engine、host、context
  3. 服务器提供一个映射关系 根据 web.xml 找到子元素的值“/first”的元素
  4. 读取元素的子元素的值,由此确定Servlet的名字为”first”
  5. 找到值为HelloServlet的元素
  6. 读取元素的子元素的值,由此确定Servlet的类名为com.cskaoyan.HelloServlet
  7. 到Tomcat安装目录/webapps/Demo1/WEB-INF/classes/com/cskaoyan目录下查找到HelloServlet.class文件
  8. Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第11步,否则,执行第9步。
  9. 装载并创建Servlet的一个实例对象。
  10. 调用Servlet对象的init()
  11. 将Connector创建的代表请求报文的HttpServletRequest对象以及代表响应的HttpServletResponse对象在调用servlet的service()方法时作为参数传递进去
  12. Web应用程序被卸载、重新启动或者服务器关闭之前,Servlet引擎将会卸载Servlet,并在卸载之前调用servlet的destroy()方法

servlet的生命周期

  • Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。
  • 针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出(或应用
    停止),servlet实例对象才会销毁
  • 在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创
    建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调
    用doXXX方法。

ServletContext(掌握)

  1. ServletContext对象,在应用被加载的时候,进行实例化;应用被销毁之前,被销毁;它的生命周期基本上和应用的生命周期保持一致
  2. 每个应用中有且只有唯一的一个ServletContext对象。
  3. 在当前应用下,无论任何一个servlet,都可以拿到该对象的引用

相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!

随笔 - 1, 文章 - 0, 评论 - 0, 阅读 - 113

Copyright © 2025 年薪百万分我五十万
Powered by .NET 9.0 on Kubernetes

点击右上角即可分享
微信分享提示