简述Servlet接口中的抽象方法
-
Servlet
接口中的抽象方法// 初始化方法 void init(ServletConfig var1); // 获取Servlet配置对象 ServletConfig getServletConfig(); // 提供服务的方法 void service(ServletRequest var1, ServletResponse var2); // 获取Servlet信息,如版本、作者... String getServletInfo(); // 销毁方法 void destroy();
-
初始化方法
/** * 初始化方法(只执行一次) * @param servletConfig servlet 配置 * @throws ServletException servlet 异常 */ @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("这是初始化方法!!!"); }
-
提供服务的方法
/** * 提供服务的方法 * @param servletRequest servlet 请求 * @param servletResponse servlet 响应 * @throws ServletException servlet 异常 * @throws IOException io 异常 */ @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("这是一个提供服务的方法!!!"); }
-
销毁方法
/** * 这是一个销毁方法,在服务器正常关闭,就如tomcat执行了 `shutdown.sh` 。 * 只执行一次。 */ @Override public void destroy() { System.out.println("这是一个销毁方法!!!"); }
-
实现
Servlet
接口代码import javax.servlet.*; import java.io.IOException; public class ServletDemo02 implements Servlet { @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("这是初始化方法!!!"); } @Override public ServletConfig getServletConfig() { return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("这是一个提供服务的方法!!!"); } @Override public String getServletInfo() { return null; } @Override public void destroy() { System.out.println("这是一个销毁方法!!!"); } }
-
配置文件
web.xml
<servlet> <servlet-name>demo2</servlet-name> <servlet-class>my.servlet.study.ServletDemo02</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo2</servlet-name> <url-pattern>/my.servlet.study.ServletDemo02</url-pattern> </servlet-mapping>
Servlet 接口实现类的使用
-
启动服务器,控制台输出:
这是初始化方法!!!
-
启动服务器后,访问:http://localhost:8080/TomcatServletStudy_war_exploded/my.servlet.study.ServletDemo02 ,控制台输出:
这是一个提供服务的方法!!!
每次访问该网址,都会执行一次
service
方法 -
关闭服务器,控制台输出:
这是一个销毁方法!!!
-
利用
web.xml
配置文件,修改init
方法的执行时机:<servlet> <servlet-name>demo2</servlet-name> <servlet-class>my.servlet.study.ServletDemo02</servlet-class> <!-- 指定Servlet的创建时机 1. 第一次被访问是创建 <load-on-startup> 的值为负数 2. 服务器启动时被创建 <load-on-startup> 的值为0或者正数 --> <load-on-startup>-5</load-on-startup> </servlet>
备注:
- Servlet的init方法,只执行一次,说明一个Servlet在内存中只存在一个对象, Servlet是单例的。
- 因此多个用户同时访问时,可能存在线程安全问题。
- 解决:尽不要在 Servlet中定义成员変。即使定义了成员变,也不要对修改值。