Servlet
Servlet :server applet
*概念:运行在服务器端的小程序
*Servlet是一个接口,定义了Java类被浏览器访问到(Tomcat识别)的规则.
*可以自定义一个类,实现Servlet接口,重写方法.
init();
*在servlet创建后执行该方法,只会执行一次.
service();
*提供服务方法,每一次servlet被访问时执行,执行多次.
destroy();
*销毁方法,在服务器正常关闭时执行,执行一次.
servletConfig();
*获取servletconfig对象
getservletInfo();
*获取servlet的一些信息,版本/作者...
---------------
使用:
1.创建JavaEE项目
2.定义一个类,实现Servlet接口
3.实现接口中的抽象方法
4.配置Servlet
在web.xml中配置:
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>xx.xx.xx.xx.xxx.servlet</servlet_class>//全类名
<!-- 指定servlet创建时机
1.第一次被访问时,创建
*标签值配置为负数
2.在服务器启动时,创建
*标签值配置为0或正整数-->
<load-on-startup>-5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
---------------
servlet执行原理:
1.当服务器接收到客户端浏览器的请求后,会解析请求url路径,获取访问的servlet的资源路径.
2.查找web.xml文件,是否有对应的<url-pattern>标签体内容.
3.如果有,则在找到对应的<servlet-class>全类名.
4 .tomcat会将字节码文件加载进内存,并且创建其对象.
5.调用其方法.
---------------
* servlet生命周期:
1.被创建 执行init(); 只执行一次
*servlet默认情况下一次被访问时会被创建.
*可以配置指定servlet创建时机.
*只执行一次,说明servlet在内存中只存在一个对象.servlet是单例的
*多个用户同时访问可能出现线程安全问题.
*解决:尽量不要在servlet定义成员变量.即使定义了成员变量,也不要修改值.
2.提供服务 执行service(); 执行多次
*每次访问servlet时,service方法都会被调用一次.
3.被销毁 执行destroy(); 执行一次
*servlet被销毁时执行.服务器关闭时,servlet被销毁.
*只有服务器正常关闭时,才会执行destroy方法.
*该方法在servlet被销毁之前执行,一般用在释放资源.
---------------
*servlet3.0: jdk6开始支持web3.0/+
*优点:
*支持注解配置,可不需要web.xml.
*步骤:
1.创建JavaEE项目,选择servlet版本为3.0及以上.可以不创建web.xml
2.定义类,实现servlet接口
3.重写方法
4.在类上使用@webservlet注解,进行配置
*@webservlet("资源路径");
---------------
*servlet的体系结构
Servlet -- 接口
|
GenericServlet -- 抽象类
|
HttpServlet -- 抽象类
*GenericServlet :将Servlet接口中其他方法做默认空实现,只将service()方法作为抽象
*之后定义servlet类时可以继承GenericServlet,实现service方法即可.
*HttpServlet :对http协议的一种封装,可以简化操作.
1.定义类继承httpservlet
2.复写doget/dopost方法
Servlet相关配置
1.urlpartten:servlet访问路径
1.一个servlet可以定义多个访问路径:@webservlet({"/1","/2","/3"})
2.路径定义规则:
1. /xxx @webservlet("/123")
2. /xxx/xxx *多层路径/目录结构 @webservlet("/1/2") ;@webservlet("/1/*") *通配符
3. *.xxx
---------------
浙公网安备 33010602011771号