HttpServlet GenericServlet servlet一些讲解

HttpServlet基本原理:

HttpServlet 继承GenericServlet 也就是说GenericServlet中的所有方法都能被HttpServlet所使用的但是HttpServlet也有自己的方法, 比较常用的就是doPost(),doGet(),这是对jsp页面的提交请求所使用的。下面图片是GenericServlet的源码,这里是实现了接口Servlet 中的方法,也就是说你继承HttpServlet就是间接的调用Servlet中的方法,但是servlet中有一些是周期方法init(),destory() ,service()我记得好像就这三个周期方法,但是呢Service是必须执行的每次请求都会执行一次,但是呢init()只是第一次请求时执行,这里我说init方法并不是servlet中无参的init,而是带参数的。无参的init只是一个构造方法并不是周期方法,而周期方法你不用调用它们都会自己来执行,每当你启动服务器是,他们就init就开始执行了。还有一个周期就是destory(),每当你关闭服务器之前结束,并不是和服务器一起死掉,注意之前。Servlet中还有一些方法:public String getServletInfo() ,public ServletContext getServletContext()….这些在Tomcat中说的足够详细。
这就是我对HttpServlet一些简单的理解,并不是特别的深入。

下面是GenericServlet的源代码:

/*

  • Licensed to the Apache Software Foundation (ASF) under one or more
  • contributor license agreements. See the NOTICE file distributed with
  • this work for additional information regarding copyright ownership.
  • The ASF licenses this file to You under the Apache License, Version 2.0
  • (the “License”); you may not use this file except in compliance with
  • the License. You may obtain a copy of the License at
  • http://www.apache.org/licenses/LICENSE-2.0
    
  • Unless required by applicable law or agreed to in writing, software
  • distributed under the License is distributed on an “AS IS” BASIS,
  • WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  • See the License for the specific language governing permissions and
  • limitations under the License.
    */
    package javax.servlet;

import java.io.IOException;
import java.util.Enumeration;

/**

  • Defines a generic, protocol-independent servlet. To write an HTTP servlet for

  • use on the Web, extend {@link javax.servlet.http.HttpServlet} instead.

  • GenericServlet implements the Servlet and

  • ServletConfig interfaces. GenericServlet may be

  • directly extended by a servlet, although it’s more common to extend a

  • protocol-specific subclass such as HttpServlet.

  • GenericServlet makes writing servlets easier. It provides simple

  • versions of the lifecycle methods init and destroy

  • and of the methods in the ServletConfig interface.

  • GenericServlet also implements the log method,

  • declared in the ServletContext interface.

  • To write a generic servlet, you need only override the abstract

  • service method.

  • @version V e r s i o n Version Version
    */
    public abstract class GenericServlet implements Servlet, ServletConfig,
    java.io.Serializable {

    private static final long serialVersionUID = 1L;

    private transient ServletConfig config;

    /**

    • Does nothing. All of the servlet initialization is done by one of the
    • init methods.
      */
      public GenericServlet() {
      // NOOP
      }

    /**

    • Called by the servlet container to indicate to a servlet that the servlet
    • is being taken out of service. See {@link Servlet#destroy}.
      */
      @Override
      public void destroy() {
      // NOOP by default
      }

    /**

    • Returns a String containing the value of the named
    • initialization parameter, or null if the parameter does not
    • exist. See {@link ServletConfig#getInitParameter}.
    • This method is supplied for convenience. It gets the value of the named
    • parameter from the servlet’s ServletConfig object.
    • @param name
    •        a <code>String</code> specifying the name of the
      
    •        initialization parameter
      
    • @return String a String containing the value of the
    •     initialization parameter
      

    */
    @Override
    public String getInitParameter(String name) {
    return getServletConfig().getInitParameter(name);
    }

    /**

    • Returns the names of the servlet’s initialization parameters as an
    • Enumeration of String objects, or an empty
    • Enumeration if the servlet has no initialization parameters.
    • See {@link ServletConfig#getInitParameterNames}.
    • This method is supplied for convenience. It gets the parameter names from
    • the servlet’s ServletConfig object.
    • @return Enumeration an enumeration of String objects
    •     containing the names of the servlet's initialization parameters
      

    */
    @Override
    public Enumeration getInitParameterNames() {
    return getServletConfig().getInitParameterNames();
    }

    /**

    • Returns this servlet’s {@link ServletConfig} object.
    • @return ServletConfig the ServletConfig object that
    •     initialized this servlet
      

    */
    @Override
    public ServletConfig getServletConfig() {
    return config;
    }

    /**

    • Returns a reference to the {@link ServletContext} in which this servlet
    • is running. See {@link ServletConfig#getServletContext}.
    • This method is supplied for convenience. It gets the context from the
    • servlet’s ServletConfig object.
    • @return ServletContext the ServletContext object passed to
    •     this servlet by the <code>init</code> method
      

    */
    @Override
    public ServletContext getServletContext() {
    return getServletConfig().getServletContext();
    }

    /**

    • Returns information about the servlet, such as author, version, and
    • copyright. By default, this method returns an empty string. Override this
    • method to have it return a meaningful value. See
    • {@link Servlet#getServletInfo}.
    • @return String information about this servlet, by default an empty string
      */
      @Override
      public String getServletInfo() {
      return “”;
      }

    /**

    • Called by the servlet container to indicate to a servlet that the servlet
    • is being placed into service. See {@link Servlet#init}.
    • This implementation stores the {@link ServletConfig} object it receives
    • from the servlet container for later use. When overriding this form of
    • the method, call super.init(config).
    • @param config
    •        the <code>ServletConfig</code> object that contains
      
    •        configuration information for this servlet
      
    • @exception ServletException
    •            if an exception occurs that interrupts the servlet's
      
    •            normal operation
      
    • @see UnavailableException
      */
      @Override
      public void init(ServletConfig config) throws ServletException {
      this.config = config;
      this.init();
      }

    /**

    • A convenience method which can be overridden so that there’s no need to
    • call super.init(config).
    • Instead of overriding {@link #init(ServletConfig)}, simply override this
    • method and it will be called by
    • GenericServlet.init(ServletConfig config). The
    • ServletConfig object can still be retrieved via
    • {@link #getServletConfig}.
    • @exception ServletException
    •            if an exception occurs that interrupts the servlet's
      
    •            normal operation
      

    */
    public void init() throws ServletException {
    // NOOP by default
    }

    /**

    • Writes the specified message to a servlet log file, prepended by the
    • servlet’s name. See {@link ServletContext#log(String)}.
    • @param msg
    •        a <code>String</code> specifying the message to be written to
      
    •        the log file
      

    */
    public void log(String msg) {
    getServletContext().log(getServletName() + ": " + msg);
    }

    /**

    • Writes an explanatory message and a stack trace for a given
    • Throwable exception to the servlet log file, prepended by
    • the servlet’s name. See {@link ServletContext#log(String, Throwable)}.
    • @param message
    •        a <code>String</code> that describes the error or exception
      
    • @param t
    •        the <code>java.lang.Throwable</code> error or exception
      

    */
    public void log(String message, Throwable t) {
    getServletContext().log(getServletName() + ": " + message, t);
    }

    /**

    • Called by the servlet container to allow the servlet to respond to a
    • request. See {@link Servlet#service}.
    • This method is declared abstract so subclasses, such as
    • HttpServlet, must override it.
    • @param req
    •        the <code>ServletRequest</code> object that contains the
      
    •        client's request
      
    • @param res
    •        the <code>ServletResponse</code> object that will contain the
      
    •        servlet's response
      
    • @exception ServletException
    •            if an exception occurs that interferes with the servlet's
      
    •            normal operation occurred
      
    • @exception IOException
    •            if an input or output exception occurs
      

    */
    @Override
    public abstract void service(ServletRequest req, ServletResponse res)
    throws ServletException, IOException;

    /**

    • Returns the name of this servlet instance. See
    • {@link ServletConfig#getServletName}.
    • @return the name of this servlet instance
      */
      @Override
      public String getServletName() {
      return config.getServletName();
      }
      }
      学习 Javaweb的话Servlet很重要!要更多去了解,学习!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值