什么是Servlet
- 是运行在Web服务器或应用服务器上的Java程序
- 在Web上创建动态内容的有效而强大的解决方案
- 有容器来管理什么周期与Web容器进行交换
- 有sun规范了其功能
Servlet规范的组成
-
Web应用程序。
-
Servlet与httpServlet
2.1 Servlet用于创建动态的网页,httpServlet天生就支持http
-
过滤器
3.1 Servlet2.3版本后引入了过滤器的概念,http所有请求都可以设置让它经过过滤器。
-
安全
4.1 Servlet使用了jvm提供的安全功能。
-
国际化
5.1 能够开发任何语言的内容。来自于Java平台的国际化和本地支持。
Servlet的API结构
- API就是专门用于开发Servlet的java类和接口,Web容器和Servlet之间用API进行通信。
- 一个Servlet程序就是运行在服务器端的一个Servlet API的java类。定义了与容器的一些规范。
- javax.Servlet.GenericServlet 当前这个类实现了Servlet的基本特征和功能,是普通的Servlet。
- javax.Servlet.http.HttpServlet 实现了GenericServlet.它也是一个Servlet。还对http进行了支持。
- 当我们启动服务器的时候,用户访问Servlet,容器会自动将http请求数据封装到HttpServletRequest,也会产生一个HttpServletResponse对象。
- 每次请求都会到达Service()方法。容器自动调用。
-
容器一旦启动,会调用应用程序里面的web.xml文件,请求过来的内容会自动调用Service方法
-
Servlet javax.Servlet.http.HttpServlet提供了七个方法,其中doGet和doPost使我们常用的,doGet和doPost是Service的代理。Service会根据具体的请求方法,将权利转交给相应的方法进行处理,它只需要控制。
Servlet生命周期
-
容器装载实例化servlet
-
init初始化
-
service服务方法
-
销毁 destory()方法
-
启动容器,默认的配置不会调用init方法,当第一次访问时才调用init方法,以后每次访问都进入service方法,自动创建多线程。容器关闭的时候,容器自动销毁servlet。 整个过程中init方法与destroy方法只会执行一次,service执行多次。
ServletContext
- 容器一旦启动会自动创建一个上下文对象(servletContext),用于描述servlet运行环境的一些信息。使得servlet可以和容器进行通信。代表当前web应用。
- servletConfig对象维护了ServletContext对象的引用,可以通过config-getServletContext获取到上下文对象。 3.一个web应用中的所有servlet共享一个ServletContext对象。每个servlet之间可以通过ServletContext来进行通信,也称为context域对象。 所有的用户也共享一个ServletContext。