package javax.servlet;
import java.io.IOException;
/**
* <p>目的:定义所有servlet必须实现的方法
* 一个servlet是在web服务器内运行的小java程序,servlet接收和响应web客户端请求,一般是HTTP。
*
* <p>实现此接口,能写一般的servlet(继承javax.servlet.GenericServlet)
* 和HTTP的servlet(继承javax.servlet.http.HttpServlet extends GenericServlet)
*
* <p>该接口定义servlet的初始化、服务请求、移除方法。这些生命周期的方法,按一下顺序调用:
* servlet构建后,用init()初始化(仅执行一次)
* --> service()处理客户端请求
* --> servlet停用后,destroy()销毁servlet(仅执行一次)
* --> 垃圾回收和完成
*
* <p>该接口还提供方法:
* getServletConfig():获取servlet启动信息(配置信息)
* getServletInfo():获取servlet基础信息,如:作者、版本、版权等。
* @author TCM
* @create 2017年10月20日上午9:30:34
* @see GenericServlet
* @see javax.servlet.http.HttpServlet
*/
public interface Servlet {
/**
* servlet实例化之后,servlet容器调用init()方法,处理完成后,才会进入receive()
*
* 如果init()抛出异常,容器不会进入receive()
*
* @param config ServletConfig对象包含servlet配置信息和初始化参数
* @exception ServletException
* @see UnavailableException
* @see #getServletConfig
*/
public void init(ServletConfig config) throws ServletException;
/**
* 返回{@link ServletConfig}对象,包含servlet初始化和启动参数
* 该对象传递给 init()方法
* @return {@link ServletConfig}
* @see #init
*/
public ServletConfig getServletConfig();
/**
* servlet容器允许servlet响应请求。
*
* servlet初始化成功完成之后调用该方法。
*
* servlet抛出异常和错误时,设置响应状态码。
*
* servlet通常在多线程的servlet容器(处理多并发请求)中运行。开发者必须注意同步访问任何共享资源,
* 如:文件,网络连接,servlet类,实例变量。
* 多线程程序更多信息请参考:
* http://java.sun.com/Series/Tutorial/java/threads/multithreaded.html
*
* @param req ServletRequest_客户请求
* @param res ServletResponse_请求响应
* @exception ServletException
* @exception IOException
*/
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException;
/**
* 获取servlet基础信息,如:作者、版本、版权等。
* @return
*/
public String getServletInfo();
/**
* servlet容器调用该方法,是servlet销毁。在servlet所有线程退出service()
* 或超时之后,该方法仅调用一次。该servlet调用该方法之后,将不再调用service()。
*
* servlet调用该方法目的是清除servlet持有的任何资源,并确保内存中任何持久状态都与
* servlet当前状态一致。
*/
public void destroy();
}
package javax.servlet;
import java.util.Enumeration;
/**
* servlet配置对象,在初始化期间将信息传递给servlet。
* @author TCM
* @create 2017年10月20日下午4:21:12
*/
public interface ServletConfig {
/**
* 返回servlet实例名称:
* 该名称可以通过服务器管理提供,在web应用程序部署描述符中指定;
* 或者对于未命名的servlet实例,默认将是servlet的类名。
* @return servlet实例名称
*/
public String getServletName();
/**
* 返回对象{@link ServletContext}:servlet上下文
* @return {@link ServletContext}对象,与容器交互
* @see ServletContext
*/
public ServletContext getServletContext();
/**
* Gets the value of the initialization parameter with the given name.
* 获取初始参数值
* @param name 初始参数名
* @return 若不存在参数名,返回null
*/
public String getInitParameter(String name);
/**
* 返回servlet的所有初始参数
* @return Enumeration<String>
*/
public Enumeration<String> getInitParameterNames();
}