Servlet

1.Servlet概述

Servlet是java服务器小程序。本质上是运行在web容器的java类(web组件),可以处理web客户的Http请求,并产生Http响应。

Servlet体系结构:
javax.servlet包含支持所有协议的通用的web组件接口和类;
javax.servlet.http包含支持Http协议的接口和类。

Servlet功能:
接收Http请求;
取得请求信息,包括请求头和请求参数数据;
调用其他java类方法,完成具体的业务功能;
生成Http响应,包括html和非html响应;
实现到其他web组件的跳转,包括重定向和转发。

2.Servlet编程

Servlet的编写需要严格按照javaEE的规范进行,包括需要实现的接口,继承的类,方法和方法的参数都要符合规范,
否则无法在web容器内部署和运行。

(1).引入包

编写Servlet要引入java I/O包和Servlet的两个包。

        import java.io.*;
        import java.servlet.*;
        import java.servlet.http.*;

(2).类的定义

        public class Test extends HttpServlet{}

(3).重写init方法

当web容器创建servlet对象后,会自动调用init方法完成初始化功能,一般需要将耗时的连接数据库
和打开外部资源文件的操作放在init方法中。且只执行一次。

        public void init(ServletConfig config) throws ServletException{
                super.init(config);
        }

(4).重写destroy方法

当web容器需要销毁servlet对象时,一般是web容器停止运行或者servlet源代码修改而重新部署的时候。
web容器自动运行destroy方法完成清理工作,如关闭数据库连接和关闭I/O流等。

        public void destroy{
                try{
                    cn.close();
                }catch(Exception){
                    System.out.println("关闭数据库出错:"+e.getMessage());
                }
            }

(5).重写doGet方法

每个servlet一般都需要重写doGet方法,因为父类HttpServlet的doGet方法是空的。

        public void doGet(HttpServletRequest request,HttpServletResponse response)   throws Exception{}

当客户使用get方法请求servlet时,web容器调用doGet方法处理请求。

(6).重写doPost方法

道理和重写doGet方法一样

        public void doPost(HttpServletRequest request,HttpServletResponse response)   throws Exception{}

当客户使用post方法请求servlet时,web容器调用doPost方法处理请求。

3.servlet周期

servlet的生命周期完全由web容器掌管,客户必须通过web容器发生对servlet的请求,不能
直接使用new Servlet对象,也不能像调用普通java类那样直接调用servlet的方法。
servlet要经过加载实例化,初始化,服务和销毁4个阶段。

(1).加载类和实例化阶段

servlet由web容器进行加载,当web容器检测到客户首次请求servlet时,根据web.xml文件的配置包名和类名,
在/WEB-INF/classes目录下查找servlet类文件并加载到内存中。类加载结束后,使用反射机制调用默认的无参数的
构造方法创建servlet类对象,并保存在web容器的JVM内存中。

(2).初始化阶段

在创建servlet对象后,web容器会调用servlet的init方法完成初始化工作。

(3).处理请求阶段

调用service方法

(4).销毁阶段

当以下情况发生时,web容器就会销毁servlet组件,在销毁servlet对象之前就会调用destroy方法
完成资源清理工作。
web容器停止;
servlet类更新;
web应用重新部署。

参照教材整理的学习笔记

你可能感兴趣的:(servlet,JavaEE)