1.Servlet概述2.Servlet执行流程3.Servlet生命周期4.Servlet体系结构5.Servlet urlPattern配置
1.Servlet概述概念:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,用于接收和响应来自客户端基于 HTTP 协议的请求。
作用:用来处理客户端请求、响应给浏览器的动态资源。实质就是java代码,通过java的API动态的向客户端输出内容。
2.Servlet执行流程补充说明:http://localhost:8080通过网址和端口号找到要访问的web服务器,然后再通过web-demo找到部署在服务器上的web项目,最后通过demo1路径找到要访问的是项目中的哪个Servlet类,根据@webservlet后面的路径进行匹配。
3.Servlet生命周期对象的生命周期指一个对象从被创建到被销毁的整个过程。
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:
1.加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象;
2.初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次;
3.请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理。
4.服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后会被Java的垃圾收集器所回收。
tips:servlet是单例多线程的, 尽量不要在servlet里面使用全局(成员)变量,可能会导致线程不安全
单例: 只有一个对象(init()调用一次, 创建一次)
多线程: 服务器会针对每次请求, 开启一个线程调用service()方法处理这个请求
4.Servlet体系结构
由于我们开发的web项目都是针对HTTP协议,所有自定义Servlet都会继承HttpServlet
HTTP实现doGet或doPost请求原理:
注意:
如果子类中已经覆盖了serivce,httpServlet中的service不会执行,而是直接执行子类中的同名方法,doget和dopost也不会执行,因为子类的serivce没有调用父类的 doXxxx;
一个Servlet,可以配置多个urlPattern,但一个urlPattern只能对应一个Servlet
完全路径:以/开头的完整路径目录路径: 以/开头,以*结尾扩展名路径: 不能以/开头,格式为: *.xxx任意路径: /* 或者 /
优先级:精确路径 > 目录路径 > 扩展名路径 > /* > /



