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