1. Servlet容器和Servlet的关系

Servlet是一个Java程序,一个Servlet应用有一个或多个Servlet程序。JSP页面会被转换和编译成Servlet程序。Servlet应用无法独立运行,必须运行在Servlet容器中。Servlet容器将用户的请求传递给Servlet应用,并将结果返回给用户。

2. Servlet API

Servlet的核心是Servlet接口,它是所有Servlet类必须直接或间接实现的一个接口。直接实现是指编写接口Servlet的实现类,间接实现是指继承接口Servlet的实现类。Servlet接口定义了Servlet和Servlet容器之间的契约。这个契约归结起来就是,Servlet容器将Servlet类载入内存,并在Servlet实例上调用具体方法。

用户请求会致使Servlet容器调用Servlet的service方法,并传入一个ServletRequest实例和一个ServletResponse实例。ServletRequest中封装了当前的HTTP请求,ServletResponse封装了对当前用户的HTTP响应。对于每一个应用程序,Servlet容器还会创建一个ServletContext实例,它封装了上下文(应用程序)的环境详情。此外,每一个Servlet实例都有一个封装Servlet配置的ServletConfig

Servlet接口中定义了以下5个方法

void init(ServletConfig config) throws ServletException;
void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
void destroy();
String getServletInfo();
ServletConfig getServletConfig();     

init、service和destory时Servlet的生命周期方法

  • init,当且仅当该Servlet第一次被请求时,Servlet容器会调用这个方法,我们可以用这个方法完成一些初始化工作。
  • service,每当请求该Servlet时,Servlet容器就会调用这个方法。此方法接受用户的请求对象,执行业务操作,利用响应对象响应用户请求。
  • destroy,当容器监测到一个Servlet从服务中被移除时,容器调用该方法,释放资源。

getServletInfo和getServletConfig是非生命周期方法

  • getServletInfo,该方法会返回Servlet的描述信息,我们可以用它返回有用或为null的任意字符串
  • getServletConfig,这个方法会返回由Servlet容器传给init方法的ServletConfig对象。我们将传给init方法的ServletConfig对象赋值给一个类级别的变量(static变量),并在getServletConfig方法中返回出去

3. Servlet的线程安全

Servlet实例会被一个应用程序中的所有用户共享,因此不建议使用类级变量,除非他们是只读的,或者是java.util.concurrent.atomic包的成员。

参考资料

书籍《Servlet、JSP和Spring MVC初学指南》

Servlet(1) Servlet容器和Servlet相关推荐

  1. servlet容器_Tomcat 容器与servlet的交互原理

    点击蓝字"程序员考拉"欢迎关注! Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Serv ...

  2. Web容器和Servlet生命周期

    为何需要Web容器 Web服务器本身主要用于支持http协议,包括监听和相应http请求.web服务器一般处理静态的请求,如文件系统中的静态文件.web容器则是为web相关的组件提供运行环境,可以从' ...

  3. 整合Servlet到Spring容器

    有时在Spring(3.2.5)项目中,如果使用到Servlet,可能希望Servlet实例作为bean受Spring容器管理,这样也能自动注入其他需要的bean,查了下,发现只针对过滤器提供了代理类 ...

  4. 容器与Servlet生命周期

    1)容器大致功能有如下: 一.通信支持 无需自己建立监听端口.流.Socket等,容器知道与Web服务器的协议,所以不必担心自己的代码如何与服务器进行通信,交给容器就好 二.生命周期管理 容器可以自动 ...

  5. Servlet容器装载Servlet的三种情况

    Servlet容器装载Servlet的三种情况: 1.自动装载:某些Servlet如果需要在Servlet容器启动时就加载,需要在web.xml下它的标签里中,添加优先级代码: <Servlet ...

  6. java servlet applet,详解Java Servlet与Applet比较

    Java Servlet与Applet相似之处: ◆它们不是独立的应用程序,没有main()方法. ◆它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用. ◆它们都有一个生存周期,包含in ...

  7. Servlet基础(三) Servlet的多线程同步问题

    Servlet基础(三) Servlet的多线程同步问题 Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率. 由于Servlet/JSP默认是以多线程模式执行的, ...

  8. Servlet基础(一) Servlet基础和关键的API介绍

    转载:http://www.cnblogs.com/mengdd/p/3202550.html Servlet基础(一) Servlet简介 关键API介绍及结合源码讲解 Servlet基础(一) S ...

  9. JSP/SERVLET入门教程--Servlet 使用入门

    现在的JSP书籍有的是直接讲述JSP的使用,然后再讲解SERVERLET的使用;也有书籍是先讲述SERVERLET的使用,然后讲解JSP使用.个人认为第二种相对好一些,至于原因大家可以在学习体会到!所 ...

  10. java servlet拾遗(1)-Servlet总揽

    2019独角兽企业重金招聘Python工程师标准>>> 一.总的来看:java servlet API 类框图 (1).Servlet Api的核心是javax.servlet.Se ...

最新文章

  1. SpringBoot之前端文件管理
  2. ado.net 修改,查询
  3. 数据湖架构,为什么需要“湖加速”?
  4. 超全超详细AC-DC电源模块测试教程!
  5. 自走棋投降代码_自走棋太火惨遭针对!代码哥之后又是锁钱挂?玩家:还有拒绝员!...
  6. 如何抓取(采集)大众点评网的坐标(经纬度)信息
  7. 个人微信api接口调用代码
  8. PHP excel模板
  9. UI设计师的7大能力模型
  10. 解密利用梦网漏洞狂刷QQ币方法附工具
  11. 苹果电脑怎么清理垃圾和缓存文件,mac如何清理系统缓存文件
  12. java 给word加水印_java实现word文档转pdf,并添加水印
  13. 设计100倍同向放大电路
  14. 旷视科技(Face++)和孙剑博士近期一些研究工作总结
  15. 关于HTML学习重点-绝对布局和相对布局总结
  16. 盘点2019年PHP高级开发工程师面试题及答案汇总
  17. Java开发和测试开发面试杂记
  18. Uedit32-视图-查看方式(高亮),显示失效.
  19. c语言程序员爱情,程序员的表白 (C语言代码)
  20. Scheduler-Framework中的Permit使用和注意事项

热门文章

  1. 转:关于BFC的初步了解以及常见使用
  2. 通过angularjs的directive以及service来实现的列表页加载排序分页
  3. 2011-5-学习总结
  4. ubuntu lamp环境(阿里云搭建lamp)
  5. 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)...
  6. python sys与shutil模块
  7. 创建MyOffice项目
  8. 基础知识复习(一)——C语言位运算符详解
  9. 队列 句子分析 精辟的诠释 有图片
  10. C# 生成二维码并且在中间加Logo