4-Servlet详解3
-
生命周期
-
无参构造函数
public MyServlet2() { System.out.println("创建了Servlet对象"); }
构造函数用于创建对象
-
init 方法
@Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("对Servlet完成初始化操作。。。"); }
init
方法用于初始化,这个方法很少用到,除非说一些特定的参数在程序启动前设置好,比如用户密码。同时在我们执行这个方的时候,我们看到这个方法传入一个参数,类型为接口ServletConfig
,在这个 init 方法中我们可以用到它。这个接口是用来描述Servlet
基本信息的。方法 作用 描述 getServletName() 返回 Servlet
的名称全类名(带着包名的类名) getInitParameter(String key) 获取 init 参数的值 在 web.xml
中配置,在<servlet>
标签中使用<init-param>
标签getInitParameterNames() 返回所有 initParmter 的 name的值,一般用于遍历初始化参数 在 web.xml
中配置,在<servlet>
标签中使用多个<init-param>
标签getServletContext() 返回 ServletContext对象,他是Servlet上下文,简单理解就是整个Servlet的管理者,通过他可以拿到Servlet整个服务信息 <!-- web.xml 配置--> <servlet> <servlet-name>MyServlet2</servlet-name> <servlet-class>com.southwind.servlet.MyServlet2</servlet-class> <!-- 全类名 --> <init-param> <param-name>username</param-name> <param-value>admin</param-value> </init-param> <init-param> <param-name>password</param-name> <param-value>123</param-value> </init-param> <init-param> <param-name>type</param-name> <param-value>super</param-value> </init-param> </servlet>
// init 方法 @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println(servletConfig.getServletName()); System.out.println(servletConfig.getInitParameter("username")); Enumeration<String > enumeration = servletConfig.getInitParameterNames(); while (enumeration.hasMoreElements()){ String element = enumeration.nextElement(); System.out.println(servletConfig.getInitParameter(element)); } ServletContext servletContext = servletConfig.getServletContext(); String contextPath = servletContext.getContextPath(); // 获取配置中的路径 Deployment 中的 Application path System.out.println(contextPath); String serverInfo = servletContext.getServerInfo(); // 获取服务器信息 System.out.println(serverInfo); System.out.println("对Servlet完成初始化操作。。。"); }
ServletConfig 与 ServletContext 的区别:
- ServletConfig 作用于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig–>局部对象
- ServletContext 作用于整个 Web 应用,一个 Web 应用对应一个 ServletContext ,多个 Servlet 实例 对应一个 ServletContext
–>全局对象 - ServletConfig 好比儿子,ServletContext 就是爸爸,儿子只有一个爸爸,但是爸爸有多个或一个儿子
-