package cn.lee;
import java.io.IOException;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet implements Servlet{
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy Servlet");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
System.out.println("getServletConfig");
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
System.out.println("getServletInfo");
return null;
}
@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service");
}
public HelloServlet(){
System.out.println("HelloServlet'Construct");
}
}
以上是一個完整的Servlet
對於Servlet的生命週期應該有一個深入的認識
1.構造器: 只有第一次請求Servlet時,建立Servlet的實例調用構造器,
這說明Servlet是一個單例。這就能夠探討其中的單例問題。
2.init方法:對象只被調用一次,在建立好實例後當即被調用,用於初始化當前Servlet
3.service:每次訪問Servlet都會調用service方法
4.destroy:只被調用一次,在當前Servlet所在的Web應用被卸載前調用,用於釋放當前Servlet所佔用的資源。如數據庫鏈接。
這些方法都由Servlet容器調用。
在web.xml中配置
5.load-on-startup參數
1)配置在Servlet節點中
<servlet>
<servlet-name>helloServlet</servlet-name>
<servlet-class>cn.lee.HelloServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<load-on-startup>0</load-on-startup>指定Servlet被建立的時機,若爲負數,則表示第一次請求時被建立。若大於等於0,則在Servlet容器加載中就被建立,而且值越小越早被建立。
-------
6.url-pattern 能夠是/*, *.do 前者優先匹配
-------
7.ServletConfig 封裝了Servlet的配置信息,
1).配置Servlet的初始化參數
<!-- init-param must be put before loadonstartup-->
<servlet>
<init-param>
<param-name>user</param-name>
<param-value>root</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>123</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
初始化參數必須放在load-on-startup前面
2).獲取初始化參數:
getInitParameter(String name):獲取指定參數名的初始化參數
getInitParameterNames():獲取參數名組成的Enumeration對象
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
String user=arg0.getInitParameter("user");
System.out.println(user);
Enumeration <String> names=arg0.getInitParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=arg0.getInitParameter(name);
System.out.println(name+":"+value);
}
String servletName=arg0.getServletName();
System.out.println(servletName);
}
這也是Request的原型
------------------------