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); EnumerationgetInitParameterNames();}
因为我们自己的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 { EnumerationinitParameterNames = getInitParameterNames(); while (initParameterNames.hasMoreElements()) { String element = initParameterNames.nextElement(); response.getWriter().println(getInitParameter(element)); } response.getWriter().println(getServletName()); }}
响应结果
valueservletDemo