一、servlet入门
-
概念:
运行在服务器端的小程序。
*servlet就是一个接口,定义了Java类被浏览器访问到(Tomcat)的规则。 *将来我们自定义一个类,实现servlet接口,复写方法。
-
快速入门:
1.创建JavaEE项目
2.定义一个类,实现servlet接口
*public class ServletDemo1 implements Servlet
3.实现接口中的抽象方法
4.配置Servlet
<!--配置Servlet --> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>cn.itcast.web.servlet.servletDemo1</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping>
-
执行原理
1.当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的servlet的资源路径。
2.查找web.xml文件,是否有对应的标签体内容。
3.如果有,则在找到对应的全类名
4.Tomcat会将字节码文件加载进内存,并且创建其对象
5.调用其方法
-
servlet的生命周期:
1.被创建:执行init方法,只执行一次。(init用于加载资源)
*servlet什么时候被创建? *默认情况下,第一次被访问时,servlet被创建 *可以配置执行servlet的创建时机 *在<Servlet>标签下配置 1.第一次被访问时,创建 <load-on-startup>的值为负数 2.在服务器启动时,创建 <load-on-startup>的值为0或者正整数 *servlet的init方法,只执行一次,说明一个servlet在内存中只存在一个对象,servlet是单例的。 *多个用户同时访问时,可能存在线程安全问题 *解决:尽量不要在servlet中定义成员变量。即使定义了成员变量,也不要对其修改值。
2.提供服务:执行service方法,执行多次。
*每次访问servlet时,service方法都会被调用一次。
3.被销毁:执行destroy方法,只执行一次。
*servlet被销毁时执行。服务器关闭时,servlet被销毁。 *只有服务器正常关闭时,才会执行destroy方法。 *destroy方法在servlet被销毁之前执行,一般用于释放资源 (destroy相当于临终遗言)
-
servlet3.0:
1.好处:
支持注解配置,可以不需要web.xml了
2.步骤:
1.创建JavaEE项目,选择servlet的版本3.0以上,可以不创建web.xml 2.定义一个类,实现servlet接口 3.复写方法 4.(以前是在web.xml上配置)在类上使用@webServlet注解,进行配置(在具体写servlet中使用注解) @webServlet(“虚拟目录---”)
二、servlet
1.概念
2.步骤
3.执行原理
4.生命周期
5.servlet3.0注册配置
6.servlet的体系结构
servlet—接口
|
GenericServlet—抽象类
|
HTTPServlet—抽象类
-
GenericServlet:将servlet接口中其他的方法做了默认空实现,只将servlet()方法作为抽象
*将来定义servlet类时,可以继承GenericServlet,实现service()方法即可
-
HTTPServlet:对http协议的一种封装,简化操作(推荐使用)
1.定义类继承HTTPServlet
2.复写doGet/doPost方法*httpServlet基本定义原理图:
7.servlet的相关配置
-
urlpartten:Servlet访问路径
1)一个servlet可以定义多个访问路径: * @webServlet({“/d4”,”/dd4”,”ddd4”}) * 2)路径定义规则: * /xxx * /xxx/xxx:多层路径,目录结构 *.do(自定义后缀名)