Servlet基础
Servlet是JSP的前身。Servlet是在服务端上运行的小程序,一个Servlet就是一个Java类,并且可以通过“请求–响应”编程模型来访问的这个驻留在服务器内存里的Servlet程序。
Tomcat容器等级
Tomcat的容器分为四个等级:
Servlet的容器管理Context容器,一个Context对应于一个web工程
创建Servlet
Servelet的继承体系如下:
自定义Servlet –> Abstract class HttpServlet –> Abstract class GenericServlet –> interface Servlet
写个小例子
- 继承HttpServlet
- 重写doGet()和doPost()方法
- 在web.xml中注册Servlet
这个方式和Django里的View.py里处理request和response的方式有点像。
接着在web.xml注册HelloServlet类,就像在Django的admin.py里注册一样
在页面上使用Servlet,注意这里的href和action的链接与上面的url-pattern要匹配
Servlet的执行流程
Get方式请求HelloServlet –> <\a href=”appNames/HelloServlet”> –> 在web.xml寻找对应的url-pattern –> 在web.xml寻找对应的servlet-class –> 寻找HelloServlet类中的doGet()请求方法
HttpServlet类扩展了GenericServlet类,实现了GenericServlet类的抽象方法。
HttpServlet类有两个service()方法。
我们自己编写的Servlet继承了HttpServlet类,一般只需覆盖doPost或者doGet方法,不必覆盖service方法,因为service()会调用doPost或者doGet方法。
Servlet生命周期
三个阶段:
- 初始化阶段,Servlet类先被创建,然后调用init()方法(如果Servlet已经被加载,直接进行第二步)。
- 响应客户请求阶段,调用service()方法。由service()方法根据提交方式选择执行doGet()或者doPost()方法。
- 终止阶段,调用destroy方法。
servlet加载的三种情况
首先要记得Servlet实例化对象是长期存放在内存中的。
在下列时刻Servlet容器装载Servlet:
Servlet容器启动时自动装载某些Servlet,实现它只需要在web.xml文件中Servlet标签中添加如下代码,数字越小表示优先级越高。
1<loadon-startup>1</loadon-startup>这样启动Tomcat容器后Servlet类会被创建并调用init()方法。
- 在Servlet容器启动后,客户首次向Servlet发送请求。
- Servlet类文件被更新后,重新加载Servlet。
Servlet被加载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在整个Servlet的整个生命周期内,init()方法只被调用一次。
Servlet和JSP内置对象
下面展示的是JSP九大内置对象怎么在Servlet中获得
Servlet 路径跳转
Servlet 获取初始化参数
第一步:
写JSP页面
第二步:
写Servlet类:
第三步:
在web.xml中注册Servlet类并设置初始参数