GenericServlet

GenericServlet实现了Servlet接口的Init()方法

  GenericServlet主要目的,就是在容器调用init()方法时将传入的ServletConfig封装起来————赋值给成员变量。
  GenericServlet在实现Servlet的init()方法时,也调用了另一个无参数的init()方法,在编写Servlet时,如果有一些初始时所要运行的动作,可以重新定义这个无参数的init()方法,而不是重新定义那个有参的init()方法。


GenericServlet还实现了ServletConfig接口

  对ServletConfig接口所定义方法都做了简单实现,实现内容主要是通过ServletConfig来取得一些相关信息。

  ServletConfig接口如下:

public interface ServletConfig {
    String getServletName();

    ServletContext getServletContext();

    String getInitParameter(String var1);

    Enumeration<String> getInitParameterNames();
}

  因为我们自己的Servlet也继承了GenericServlet,而GenericServlet本身又是ServletConfig的一个实现对象。所以在我们自己的Servlet里,就可以直接调用这些方法来取得所要的相关信息,而不用意识到ServletConfig的存在。比如:直接调用 getServletContext()


demo

package com.test;

import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Enumeration;

@WebServlet(urlPatterns = "/servletDemo", name = "servletDemo", loadOnStartup = 1, initParams = {@WebInitParam(name="param", value = "value")})
public class ServletDemo extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        Enumeration<String> initParameterNames = getInitParameterNames();

        while (initParameterNames.hasMoreElements()) {
            String element = initParameterNames.nextElement();
            response.getWriter().println(getInitParameter(element));
        }
        response.getWriter().println(getServletName());
    }
}

响应结果

value
servletDemo

 

posted @ 2018-12-03 16:45  zhuangrunwei  阅读(221)  评论(0编辑  收藏  举报