第三篇-->Servlet從細節開始(一)

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的原型
------------------------
相關文章
相關標籤/搜索