Servlet接口
Servlet接口定义了5个方法:
Void init ( ServletConfigconfig )
Void servlet( ServletRequestrequest , ServletResponse response )
Void destroy( )
Java.lang.StringgetServletInfo( )
ServletConfiggetServletConfig( )
注意:编写JAVA方法签名的规则是:与包含该方法的类型不在同一个包中的类型,要使用全类名。
Init service destroy这三个方法属于Servlet生命周期方法。Servlet容器将根据一定的原则对这三个方法进行调用:
Init:在第一次请求Servlet时,Servlet容器就会调用这个方法。在后续的请求中,将不再调用该方法。可以利用这个方法来编写一些应用程序初始化的相关代码。在调用这个方法时,Servlet会传递一个ServletConfig 。 一般来说会将ServletConfig 赋给一个类级变量。以便Servlet类中的其他方法也可以使用这个对象。
Service 。 每次请求Servlet时,Servlet容器都会调用这个方法。必须在这里编写要Servlet完成的相应代码。第一次请求Servlet时,Servlet容器会调用init方法和Service方法,对于后续的请求,只调用Service方法。
Destroy 要销毁Servlet时,Servlet容器会调用这个方法。它通常在卸载应用程序或者关闭Servlet容器的时候,一般来说,可以在这个方法中编写一些资源请求的相关代码。
Servlet 中另外两个方法是非生命周期方法:getServletInfo 和 getServletConfig 。
getServletinfo 该方法返回Servlet的描述。可以返回可能有用的任意字符串,甚至是NULL
getServletConfig 该方法返回由Servlet容器传递给init方法的ServletConfig。但是,为了让getServletCofig返回值非NULL。你肯定给它传递过去了一个数值。
下面的代码是Servlet的实现类:
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class MyServlet implements Servlet{
private transient ServletConfig servletConfig;
public void init(ServletConfig config) throws ServletException {
System.out.println("*************init()***************");
this.servletConfig = config;
}
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return servletConfig;
}
public String getServletInfo() {
// TODO Auto-generated method stub
return "My Servlet";
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
String servletName = servletConfig.getServletName();
res.setContentType("text/html");
PrintWriter writer = res.getWriter();
writer.print("<html><head></head>"+
"<body>Hello from " + "</body></html>");
System.out.println("**********service()**************");
}
public void destroy() {
// TODO Auto-generated method stub
System.out.println("**********destroy()**************");
}
}