规范的组成
=》
+1、Web应用程序;
2、servlet与httpservlet---servlet用于创建动态网页,httpservlet天生支持http;
3、过滤器----servlet2.3版本后引入了过滤器概念,http所有请求都可以设置让他经过过滤器;
4、安全---servlet使用了jvm提供的安全功能;
5、国际化---能够开发任何语言的内容,来自于java平台的国际化和本地支持。
servlet的API结构
:
1、servlet的
API
就是专门用于开发servlet的java类和接口,web容器和servlet之间用API进行通信。
2、一个servlet程序就是运行在服务器端的一个servlet API的java类;定义了与容器的一些规范。
3、javax.servlet.GenericServlet 实现了servlet的基本特征和功能,普通的servlet
4、javax.servlet.http.HttpServlet 继承了GenericServlet。他也是一个servlet,还对http进行了支持。
5、当启动服务器时,用户访问servlet,容器会自动将http请求封装到HttpServletRequest,也会产生一个HttpServletResponse对象。
6、每次请求都会到达service()方法,容器自动调用。
容器一旦启用,会调用应用程序里面的web.xml文件
请求过来的内容会自动调用service方法;javax.servlet.http.HttpServlet提供了七个方法,常用doGet和doPost方法;这些方法是service代理。service会根据具体的请求方法,将权利转交给相应的方法进行处理,他只需要控制。
servlet配置
1、注册servlet----
2、映射URL地址---a、精确匹配,必须通过名字才能访问;/名字
b、扩展名匹配,*.扩展名;
c、路径映射(模糊匹配) /*;
d、默认路径 没有匹配到的路径; /
匹配时与匹配精确度有关;谁最像就匹配谁。精确度a>c>b>d
全局配置 --> context-param
servlet生命周期
1、容器装载并实例化servlet
2、调用init方法初始化------执行一次
3、调用service方法---------多次
4、销毁---destroy方法-----执行一次
启动容器时,默认的配置不会调用init;当第一次访问时才调用init方法;
以后每次访问都进入service方法,自动创建多线程;
容器关闭时,会自动销毁servlet
<!-- 标记容器是否在启动时加载此servlet,0、正数表示启动加载,数字越小,优先级越高,越先加载;-1表示第一次访问时加载(默认) ->
<load-on-startup>1</load-on-startup>
容器一旦启动会自动创建一个上下文对象(ServletContext),用于描述servlet运行环境的一些信息;使得servlet可以和容器进行通信。代表当前web应用。
ServletConfig对象维护了ServletContext对象的引用,可以通过config.getServletContext()获取到上下文对象;
一个web应用中的所有servlet共享一个ServletContext。每个servlet可以通过ServletContext来进行通信。也称为context域对象。
所有用户也共享一个ServletContext