美文网首页
Java--Servlet基础

Java--Servlet基础

作者: 栗子酥小小 | 来源:发表于2018-07-18 22:54 被阅读0次

    web容器启动

    在 WEB 容器启动后,会读取 Servlet 设置信息,将 Servlet 类加载并实例化,并为每个 Servlet 设置信息产生一个
    ServletConfig 对象,而后调用 Servlet 接口的 init() 方法,并将产生的 ServletConfig 对象当作参数传入。

    Servlet接口

    • init(),在第一次请求servlet时会被调用,且整个生命周期只会被调用一次。一般来说,初始化时servlet容器会通过init()方法将一个ServletConfig对象传递给相应的内部成员变量,以供后续getXXX调用。
    • service(),每当有请求到来,就调用这个方法。
      • HttpServlet中继承了抽象类GenericServlet,而GenericServlet实现了接口Servlet, ServletConfig,所以HttpServlet中需要继承并重写servlet方法,里面封装了GET、POST、PUT等多个HTTP方法,所以当编写自己的httpservlet时,只需要重写相应的http方法。Servlet容器会通过调用service()方法,从而调用到自己重写的http方法。
    • destory(),关闭Servlet容器或者卸载应用程序时调用,一般在这个方法中编写清除代码。
    • getServletConfig(),返回一个ServletConfig对象
    • getServletInfo(),返回一个字符串对象,可以自己定义。

    ServletConfig

    • getServletContext(),ServletContext是一个接口,表示Servlet应用程序,每个Web应用程序只有一个上下文,在将一个应用程序不熟到多个容器的分布式环境中,每台Java虚拟机只有一个ServletContext对象。
    • getInitParameter(),可以取得@WebServlet或者 部署描述符 中的配置信息。(@WebServlet还需要配合@WebInitParam来使用)
    • getInitParameterNames(); 取得所有配置信息的名称
    • getServletName(),取得servlet的名称。

    GenericServlet

    • 同时implements Servlet, ServletConfig
    • 主要作用:实现了ServletConfig中的所有方法
    • 实现了Servlet中除service外的所有方法。
    • 最重要的是,实现了Servlet中的init方法中要求的“将ServletConfig对象赋予类中的成员变量,以便getXXX调用,但是又没有占据原本的无参init()方法,所以后面如果有需要,还是可以自己重现init()方法来实现自己的初始化,这个无参方法 会在public void init(ServletConfig config)中被调用。

    HttpServlet

    • 继承自GenericServlet,实现了GenericServlet唯一的抽象方法service();
    • 所有继承HttpServlet的类,已经可以分别调用http.getServletConfig()和http.getServletContext();,一般来说我们也不需要重写这两个方法。

    部署描述符web.xml

    • 放在WEB-INF目录下
    • 优点:如果需要修改配置值,如Servlet路径,则不需要重现编译Servlet类。
    • 优点2:可以将初始参数传给一个Servlet,不需要重新编译Servlet类,就可以对它们进行编辑。
    • 如果同时在@WebServlet和部署描述符上定义值,则部署描述符的优先级更高。

    相关文章

      网友评论

          本文标题:Java--Servlet基础

          本文链接:https://www.haomeiwen.com/subject/hvzapftx.html