概念:server applet 运行在服务器端的小程序
- servlet就是一个接口,定义了java类被浏览器访问(tomcat识别)的规则
- 自定义一个类,实现Servlet接口,复写方法
快速入门
步骤
1 创建JavaEE项目
2 定义一个类,实现Servlet接口
public class ServletDemo01 implements Servlet
3 实现接口中的抽象方法
4 配置方法
在WEB-INF/web.xml中配置以下代码(写在
<!-- 配置Servlet-->
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.roderick.web.servlet.ServletDemo01</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
servlet执行原理
- 当服务器接收到客户端浏览器的请求后,解析请求url路径,获取访问的Servlet的资源路径
- 查找web.xml文件是否包含对应的
标签体内容 - 如果有,则找到对应的
标签的全类名 - tomcat会将字节码文件加载进内存,并创建其对象
- 调用其方法
Servlet生命周期
- 被创建:执行init方法,只执行一次
- Servlet什么时候被创建?
- 默认情况下,第一次被访问时,Servlet被创建
- 可以配置执行Servlet的创建时机:在
标签下配置
- Servlet什么时候被创建?
执行Servlet的创建时机
- 1.第一次被访问时,创建
- 2.在服务器启动时,创建
- Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象,Servlet是单例的
- 多个用户同时访问时,可能存在线程安全问题
- 解决:尽量不要再Servlet中定义成员变量。即使定义了成员变量,也不要对其修改值
- 提供服务:执行service方法,执行多次
- 每次访问Servlet时,service方法都会被调用一次
- 被销毁:执行destroy方法,执行一次
- Servlet被销毁时执行。服务器关闭时,servlet被销毁
- 只有服务器正常关闭时,才会执行destroy方法
- 在销毁之前被执行,一般用于释放资源
Servlet3.0
- 好处
- 支持注解配置,可以不需要web.xml了
- 步骤:
- 创建JavaEE项目,选择Servlet的版本3.0以上,可以不创建web.xml
- 定义一个类,实现servlet接口
- 复写抽象方法
- 在类上使用@WebServlet注解,进行配置
@WebServlet("资源路径")
Servlet体系结构
Servelt — 接口
|
GenericServlet — 抽象类
|
HttpServlet — 抽象类
GenericServlet :
将Servlet接口中其他的方法做了默认空实现,只将service()方法作为抽象
将来定义Servlet类时,可以继承(extend)GenericServlet,实现service()方法即可
HttpServlet🌟🌟
对http协议的一种封装,简化操作
定义类继承HttpServlet
复写doGet/doPost方法
@WebServlet("/demo3") public class ServletDemo3 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet.."); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doPost..."); } }
Servlet相关配置
- urlpartten:Servlet访问路径
- 一个Servlet可以定义多个访问路径:
@WebServlet({"/d4","/dd4","/ddd4"})
- 路径定义规则:
- /xxx
- /xxx/xxx :多层路径 “目录结构”
- *.do
- 一个Servlet可以定义多个访问路径: