系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
在string tool上运行servlet包(1)
前言
最基本的servlet类生成和访问方法弄清楚Servlet接口,HttpServlet类,核心是了解方法构造函数。
请访问本例中的每一个servlet的url,并观察浏览器或是服务器控制台的输出信息。
学习web.xml文件中的相关节点,自行小结给一个servlet在容器中如何命名,如何指定?
一、Servlet
- Servlet是服务器组件,它是运行Servlet容器/Web应用服务器/Tomcat,负责与客户端进行通信。
- Servlet的功能:创建并返回基于客户请求的动态HTML页面,与数据库进行通信。
- Servlet的使用:Servlet本身是一组接口,自定义一个类,并且实现Servlet接口,这个类就具备了接收客户端请求以及做出响应的功能。
- 浏览器不能直接访问Servlet文件,只能通过映射的方式来间接访问Servlet,映射需要开发者手动配置,有两种 配置方式:XML文件的配置方式,注解的方式。
- Servlet的生命周期:
(1)初始化阶段:当用户第一次向 Servlet 容器发出 HTTP 请求要求访问某个 Servlet 时,Servlet 容器会在整个容器中搜索该 Servlet 对象,发现这个 Servlet 对象没有被实例化,于是创建这个 Servlet 对象,然后调用该对象的 init() 方法完成初始化(在 Servlet 的整个生命周期内,它的 init() 方法只被调用一次)。当用户第二次访问这个 Servlet 时,Servlet 容器仍然在容器中搜索该 Servlet 对象,结果找到了该对象的实例,则不去创建而直接使用该对象。找到了对应的 Servlet 对象,随后 Servlet 进入到运行阶段。
(2)运行阶段:Servlet 容器会为当前的请求创建一个 ServletRequest 对象和一个 ServletResponse 对象(它们分别代表 HTTP 请求和 HTTP 响应),并将这两个对象作为参数传递给 Servlet 的 service() 方法。service() 方法从 ServletRequest 对象中获得用户的详细请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。在 Servlet 的整个生命周期内,用户每次请求访问 Servlet 时,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新的 ServletRequest 和 ServletResponse 对象。
(3)销毁阶段:当服务器停止时,Servlet 容器需要回收 Servlet 对象所占用的内存,在回收之前,会自动调用该对象的 destroy() 方法做好回收内存前的准备,辟如关闭后台线程。和 init() 方法类似,destroy() 方法也只会被调用一次。Servlet 对象一旦创建就会驻留在内存中一直等待客户端的访问,直到服务器关闭或项目被移除出容器时,Servlet 对象才会被销毁。
Servlet 对象的创建、对象提供服务、对象的销毁等操作皆由 Servlet 容器来管理,Java 程序员的任务只是负责编写 Servlet 类,无法干涉 Servlet 对象的生命周期。
二、Servlet类生成和访问方法
1.Servlet接口
Servlet接口有5种方法。分别为:init,service和destroy。
public void init(ServletConfig config)
初始化servlet,仅被调用一次
public void service(ServletRequest request,ServletResponse response)
为传入的请求提供响应。
public void destroy()
销毁,仅被调用一次
public ServletConfig getServletConfig()
返回ServletConfig对象。
public String getServletInfo()
返回有关servlet的信息
2.httpServlet类
Servlet—》GenericServlet—》HttpServlet
HTTP请求有很多类型,常用的有4种:
GET 读取
POST 保存
PUT 修改
DELETE 删除
CRUD(create read update delete)
GenericServlet实现Servlet接口,同时为它的子类屏蔽了不常用的方法,子类只需要重写Servlet方法即可。HttpServlet继承GenericServlet,根据请求类型进行分发处理,GET进入doGET方法,POST进入doPOST方法。
开发者自定义的Servlet类只需要继承HttpServlet即可,重写doGet和doPost。
3.Servlet的URL
由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到一个URL地址上,这个工作在web.xml文件中使
用元素和元素完成。
l元素用于注册Servlet,它包含有两个主要的子元素:和,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个元素用于映射一个已注册的Servlet的一个对外访问路径,它包含有两个子元素:和,分别用于指定Servlet的注册名称和Servlet的对外访问路径。
如果某个Servlet的映射路径仅仅为一个正斜杠(/),那么这个Servlet就成为当前Web应用程序的缺省Servlet。
凡是在web.xml文件中找不到匹配的元素的URL,它们的访问请求都将交给缺省Servlet处理,也就是说,缺省Servlet用于处理所有其他Servlet都不处理的访问请求。
在<tomcat的安装目录>\conf\web.xml文件中,注册了一个名称为org.apache.catalina.servlets.DefaultServlet的Servlet,并将这个Servlet设置为了缺省Servlet。l 当访问 Tomcat 服务器中的某个静态 HTML 文件和图片时,实际上是在访问这个缺省 Servlet .
三、servlet在容器中命名
`
demo01
com.zfh.ServletDemo01
demo01
/abc