`
erhuzi
  • 浏览: 6412 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Servlet基础

阅读更多
一、Servlet的生命周期?

Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

初始化阶段:
1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。
2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。
3,Servlet容器创建一个servlet对象。
4,Servlet容器调用servlet对象的init方法进行初始化。

运行阶段:
当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。然后调用service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的信息。并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理。

销毁阶段:
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。

NOTE:在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数

二、Servlet怎么处理一个请求?

当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。

三、Servlet怎么处理多个请求?

Servlet采用多线程来处理多个请求同时访问。servlet依赖于一个线程池来服务请求。线程池实际上是一系列的工作者线程集合。Servlet使用一个调度线程来管理工作者线程.
当容器收到一个Servlet请求,调度线程从线程池中选出一个工作者线程,将请求传递给该工作者线程,然后由该线程来执行Servlet的service方法。当这个线程正在执行的时候,容器收到另外一个请求,调度线程同样从线程池中选出另一个工作者线程来服务新的请求,容器并不关心这个请求是否访问的是同一个Servlet.当容器同时收到对同一个Servlet的多个请求的时候,那么这个Servlet的service()方法将在多线程中并发执行。
Servlet容器默认采用单实例多线程的方式来处理请求,这样减少产生Servlet实例的开销,提升了对请求的响应时间,对于Tomcat可以在server.xml中通过<Connector>元素设置线程池中线程的数目。
就实现来说:
调度者线程类所担负的责任如其名字,该类的责任是调度线程,只需要利用自己的属性完成自己的责任。所以该类是承担了责任的,并且该类的责任又集中到唯一的单体对象中。
而其他对象又依赖于该特定对象所承担的责任,我们就需要得到该特定对象。那该类就是一个单例模式的实现了。
分享到:
评论

相关推荐

    debugpy-1.0.0b4-cp38-cp38-manylinux1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    细说PyTorch深度学习:理论、算法、模型与编程实现 03

    细说PyTorch深度学习:理论、算法、模型与编程实现 书籍源码

    debugpy-1.0.0b2-cp36-cp36m-manylinux1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    毕业设计MATLAB_使用集成学习在社交网络中进行链接预测.zip

    毕业设计MATLAB

    debugpy-1.7.0-py2.py3-none-any.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    Python抓取企查查 全国工业园区及企业信息.zip

    企查查 全国工业园区及企业信息

    MATLAB设计_布谷鸟搜索算法.zip

    毕业设计matlab

    debugpy-1.2.1-cp37-cp37m-manylinux1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    MATLAB设计_FFT计算PSD和1D信号的单侧幅度谱.zip

    毕业设计MATLAB

    前端开发资源文件.pdf

    前端开发资源

    HTML5小游戏空战1942源码分享下载1942.zip

    HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享下载【1942.zip】HTML5小游戏【空战1942】源码分享

    合成大西瓜小游戏微信小程序源码

    合成大西瓜小游戏微信小程序源码,微信游戏小程序源码。这是一款云开发的合成大西瓜小游戏微信小程序源码,该小游戏玩法简单,只需要拖动同样的水果落下合成新品众的水果,最终合成大西瓜,玩法酷似俄罗斯方块,相当于换一种形式的俄罗斯方块,简单的模式让小朋友们进入小程序后也可以轻松上手,小编无聊也去尝试了下,感觉还是有那么点意思的,集2048+俄罗斯方块+消消乐为一体,该小程序源码附带流量主功能,用户使用吸铁石和万能球功能时需要观看激励视频广告,为站长获取广告收益,前提是需要已经开通了流量主功能才可以使用。 搭建教程: 1、使用微信开发者导入小游戏即可,无需服务器和域名也可以轻松搭建小程序。 2、小程序ID可以在导入的时候直接改,也可以在源码文件project.config.json的第50行改。

    基于微信小程序实现的cnode社区版,源代码免费下载

    基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程序实现的cnode社区版,源代码免费下载基于微信小程

    grpcio-1.48.0-cp38-cp38-musllinux_1_1_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    debugpy-1.0.0b2-cp38-cp38-manylinux1_x86_64.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    前端笔试面试题学习总结

    前端笔试面试题部分

    MATLAB设计_RunLength编码为快速MEX和M代码.zip

    毕业设计matlab

    debugpy-1.2.0-cp36-cp36m-manylinux2010_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    两款单片机电子竞赛电路-论文-简易多功能.zip

    单片机电子竞赛电路-论文-简易多功能计数器(乙组).zip 单片机电子竞赛电路-论文-简易多功能计数器.zip 全国大学生竞赛山东赛区F题

    debugpy-1.1.0-cp37-cp37m-manylinux2010_i686.whl

    Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

Global site tag (gtag.js) - Google Analytics