一、Servlet概述
1.sun公司提供的动态web资源开发技术。本质是上一段java小程序,要求这个小程序必须实现Servlet接口,以便服务器能够调用
2.开发Servlet的两个步骤
*实验:Servlet的快速入门
(1)步骤一:写一个java程序实现Servlet接口(此处直接继承了默认实现类GenericServlet)
package cn.itheima;
import java.io.*;
import javax.servlet.*;
public class FirstServlet extends GenericServlet{
public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException{
res.getOutputStream().write("My FirstServlet!".getBytes());
}
}
FirstServlet ------------> FirstServlet:表示servlet的名称
cn.itheima.FirstServlet ------> FirstServlet的完整类名
FirstServlet -------> FirstServlet:表示servlet的名称,建议和标签中的servlet名称一致
/FirstServlet -------> 表示FirstServlet的外部访问路径
二、Servlet的详述
1.生命周期:一件事物什么时候生,什么时候死,在生存期间必然会做的事情,所有这些放在一起就是该事物的生命周期。
2.Servlet的生命周期:通常情况下,servlet第一次被访问的时候在内存中创建对象,在创建后立即调用init()方法进行初始化。对于每一次请求都调用service(req,resp)方法处理请求,此时会用Request对象封装请求信息,并用Response对象(最初是空的)代表响应消息,传入到service方法里供使用。当service方法处理完成后,返回服务器,此时服务器根据Response中的信息组织成响应消息返回给浏览器。响应结束后servlet对象并不销毁,一直驻留在内存中等待下一次请求。直到服务器关闭或web应用被移出虚拟主机,servlet对象销毁并在销毁前调用destroy()方法做一些善后的事情。
3.Servlet接口的继承结构
Servlet接口:定义了一个servlet应该具有的方法,所有的Servlet都应该直接或间接实现此接口
|
|----GenericServlet:对Servlet接口的默认实现,通用Servlet,这是一个抽象类,其中的大部分方法都做了默认实现,只有service方法是一个抽象方法需要继承者自己实现
|
|----HttpServlet:对HTTP协议进行了优化的Servlet,继承自GenericServlet类,并且实现了其中的service抽象方法,默认的实现中判断了请求的请求方式,并根据请求方式的不同分别调用不同的doXXX()方法。通常我们直接继承HttpServlet即可
4.web.xml注册Servlet的注意事项
4.1利用
FirstServlet
cn.itheima.FirstServlet 注意:此处要的是一个Servlet的完整类名,不是包含.java或.class扩展的文件路径
FirstServlet
/FirstServlet
AnyName
*.do
AnyName
/action/*
invoker
org.apache.catalina.servlets.InvokerServlet
2
Demo5Servlet
cn.itheima.Demo5Servlet
data1
value1
param1
pvalue1
this.getServletContext().getInitParameter("param1")
this.getServletContext().getInitParameterNames()