一、概述
(一)简介 Servlet:Server Applet在服务端运行的Java程序。是sun公司提供的一个规范(接口)。
狭义的Servlet:指Servlet接口 广义的Servlet:指所有实现了Servlet接口的程序
JavaEE总共有十三门规范,其中在web阶段最重要的两个是:Servlet规范和JSP规范。
而Servlet规范:又包括三项技术:Servlet,Filter,Listener技术 (二)作用 接收客户端的参数 完成客户端的业务请求
向客户端动态的响应一些内容 (三)快速入门
1. 创建java类,实现Servlet接口
2. 重写接口的方法(总共5个方法,用到3个方法,最重要的一个service方法)
3. 把Servlet配置到web.xml里(web.xml相当于web应用的一个清单)
二、Servlet的API
(一)Servlet的生命周期
1.何时创建 :默认第一次访问Servlet时会创建Servlet对象创建Servlet对象时,必定会执行其init方法 一个Servlet类只有一个Servlet对象存在
2.何时销毁:服务器关闭,Servlet对象会销毁 销毁Servlet对象时,必定会执行destory方法
3.创建之后销毁之前每次访问Servlet必定会执行的方法 必定会执行service方法,访问一次执行一次public class ServletLife implements Servlet {
//第一次访问时执行init方法
public void init(ServletConfig config) throws ServletException {
System.out.println("init()方法执行了,servlet对象开始初始化...");
}
//每次方法都会执行
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
System.out.println("service()方法执行了,servlet对象开始运行...");
}
//服务器正常关闭时执行
public void destroy() {
System.out.println("destroy()方法执行了,servlet对象销毁...");
}
三、Servlet的配置
<!-- 1. servlet:注册servlet -->
<servlet>
<!-- servlet-name: 配置Servlet的名称,不能重复 -->
<servlet-name>servletDemo1</servlet-name>
<!-- servlet-class:配置Servlet类的全路径,服务器软件会根据这个值,通过反射来创建Servlet对象 -->
<servlet-class>com.itheima.servlet.ServletDemo1</servlet-class>
<!-- init-param:配置Servlet的初始化参数,一个Servlet可以配置多个初始化参数 -->
<init-param>
<param-name>aa</param-name>
<param-value>AA</param-value>
</init-param>
<init-param>
<param-name>bb</param-name>
<param-value>BB</param-value>
</init-param>
<!--
load-on-startup: 配置Servlet什么时候创建对象,值是整数
值:
如果是0或者是负数,表示默认情况:默认第一次访问时,才会创建Servlet对象
如果配置为正整数,表示服务器启动时,就会创建Servlet对象
正整数时,数值越小,优先级越高,创建的越早
注意:一般不要把1占用
-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 2.servlet-mapping:配置servlet的访问入口 -->
<servlet-mapping>
<!-- servlet-name:给哪个servlet配置访问的路径 -->
<servlet-name>servletDemo1</servlet-name>
<!--
url-pattern:配置哪些路径,可以访问得到Servlet。有四种写法:
1. 完全匹配 /demo1
2. 目录匹配,写法以/开头, *结尾 /aa/bb/*
3. 扩展名匹配,以*开头,以扩展名结尾 *.do
4. 缺省匹配/ !!注意:不要轻易使用!!
优先级: 完全匹配 > 目录匹配 > 扩展名匹配 > 缺省匹配
如果是多个 同样优先级的路径都匹配的上,那么谁的匹配精确度更高,就访问到谁
注意:不允许目录匹配和扩展名匹配混用
一个servlet-mapping里,可以有多个url-pattern,表示任意一个url-pattern匹配得上就可以访问得到这个Servlet
-->
<url-pattern>/demo1</url-pattern>
<url-pattern>/aa/bb/*</url-pattern>
<!-- <url-pattern>*.do</url-pattern> -->
<!-- <url-pattern>/</url-pattern> -->
<!-- <url-pattern>/aa/bb/*.do</url-pattern> -->
</servlet-mapping>
四、HttpServlet(应用)
我们在创建Servlet时,如果使用实现Servlet接口的方式来创建,比较麻烦,所以Servlet规范提供了另外一种创建Servlet的方式:
继承HttpServlet父类 步骤:
1. 创建一个类,实现HttpServlet创建完成,Java类和web.xml里的配置都已经完成了
2. 把我们的业务处理代码放在doGet方法里,或者是doPost方法里