Servlet基础

Servlet学习笔记

1、Servlet优点
    1)可移植性(Portability)
    servlet皆用java语言开发,延续了java 跨平台的优点
    
    2)强大的功能
    Servlet能够完全发挥java API的权威,包括网络、多线程、远程对象调用RMI、JDBC等。
    
    3)性能
    servlet对象实体通常会停留在servlet内存,相同的请求可利用不同的线程来处理。但不是一直停留内存。
    
    4)安全性
    servlet具有类型检查、垃圾收集、异常处理等特性。
    
2、Servlet包结构
    javax.servlet.*
    提供了servlet基本库,抽象类和接口
    
    javax.servlet.http.*
    扩展继承了javax.servlet.*中某些类/接口,并增加与HTTP协议有关的功能
    
    

public abstract interface Servlet {
            //得到servlet的初始化信息和启动参数
            ServletConfig getServletConfig();
        
            //被servlet容器调用,并根据初始化信息来创建一个servlet实例
            void init ( ServletConfig servletConfig ) throws ServletException;
            
            
            //接受客户请求并返回相应信息
             void service(ServletRequest servletRequest,   
                                   ServletResponse   servletResponse)
                                                    throws ServletException, IOException;
            
            //返回servlet相关信息,包括作者、版本、版权等
            String getServletInfo();
            
            //被servlet容器调用,当该servlet不用的时候释放掉所占用的所有资源
            void destroy();
    }

    1、该接口只定义了servlet和客户端联系的方法并无实现。

    2、在servlet开始接收客户请求前由servlet容器调用init()方法对其初始化并将该实例放到服务器中。
    
    3、service()方法被servlet容器调用接受客户的请求并处理。
    ServletRequest类 :包含客户端的请求信息。
    ServletResponse类:包含服务器作出的回应。
    该方法会抛出ServletException和 IOException两个异常。
    
    4、当servlet实例长期不用,将被servlet容器通过垃圾处理器回收,并释放其所占的资源。
    
3、javax.servlet.Servlet接口的派生类
    javax.servlet.GenericServlet
      该类实现了Servlet接口并实现了部分方法,当创建普通的和HTTP无关的操作是可以通过继承该类创建新的Serlvet。

    javax.servlet.http.HttpServlet
      该类继承了GenericServlet类,并新增了和HTTP有关的几种操作。
      
      doGet(HttpServletRequest request, HttpServletResponse response); 用来处理Http get请求
      doPost(HttpServletRequest request, HttpServletResponse response); 用来处理Http post请求
      
      service(HttpServletRequest request, HttpServletResponse response); 用来处理Http请求的,可以处理get, post,delete
    
4、创建及配置Servlt
    1)、新建Java类,继承javax.servlet.http.HttpServlet;
    2)、实现service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
        init() throws ServletException
        init(ServletConfig config) throws ServletException 初始化方法,一旦WEB容器启动,则调用该方法
        destroy() WEB容器关闭或者确定了Servlet不再被使用时调用
    3)、进入WEB-INF目录,个性web.xml文件,增加servlet的描述信息,告诉WEB容器已经创建了一些Servlet
    4)、servlet说明:
        

<servlet>
            <servlet-name></servlet-name>
            <servlet-class></servlet-class>
</servlet>

    5)、servlet url匹配:
       

<servlet-mapping>
            <servlet-name></servlet-name>
            <url-pattern></url-pattern> ==>表示由哪个url访问指定名称的servlet
        </seervlet-mapping>

5、Servlet生命周期
    1)在WEB容器启动时,调用 init(ServletConfig)方法初始化Servlet
    2)由相应的Http请求方法或者service()方法处理请求并返回响应
    3)当servlet不再使用时,web容器调用destroy()方法销毁servlet
    
                                                 --by :练少

原文地址:https://www.cnblogs.com/A0926/p/5316785.html