天天看點

Servlet入門Servlet

Servlet

servlet applet:運作在伺服器端的小程式

  • servlet 其實就是一個接口,定義了java類被浏覽器通路到的規則。
  • Sun公司在其API中提供了一個servlet接口,使用者若想用發一個動态web資源(即開發一個Java程式向浏覽器輸出資料),需要完成以下2個步驟:

      1、編寫一個Java類,實作servlet接口。

      2、把開發好的Java類部署到web伺服器中。

  • Java Servlet是和平台無關的伺服器端元件,它運作在Servlet容器中。Servlet容器負責Servlet和客戶的通信以及調用Servlet的方法,Servlet和客戶的通信采用“請求/響應”的模式。

    Servlet可完成如下功能:

    1、建立并傳回基于客戶請求的動态HTML頁面。

    2、建立可嵌入到現有HTML 頁面中的部分HTML 頁面(HTML 片段)。

    3、與其它伺服器資源(如資料庫或基于Java的應用程式)進行通信

Servlet容器響應客戶請求的過程:

Servlet入門Servlet
Servlet入門Servlet

實作Servlet有三種方式:

實作javax.servlet.Servlet接口;

繼承javax.servlet.GenericServlet類;

繼承javax.servlet.http.HttpServlet類;

完成Servlet需要分為兩步:

1、編寫Servlet類;

2、在web.xml檔案中配置Servlet;

建立第一個servlet程式:HelloServlet.java

public class HelloServlet implements Servlet {
  public HelloServlet(){
    System.out.println("HelloServlet construct....");
  }
  @Override
  public void destroy() {
    System.out.println("destroy....");
  }
  @Override
  public ServletConfig getServletConfig() {
    System.out.println("getServletConfig....");
    return null;
  }
  @Override
  public String getServletInfo() {
    System.out.println("getServletInfo....");
    return null;
  }
  @Override
  public void init(ServletConfig arg0) throws ServletException {
    System.out.println("init....");
  }
  @Override
  public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
    System.out.println("service....");
  }
}
           

在web.xml中配置和映射servlet

<!-- 配置和映射servlet -->
     <servlet>
     <!-- servlet注冊名 -->
       <servlet-name>helloServlet</servlet-name>
       <!-- servlet的全類名 -->
       <servlet-class>org.lanqiao.javaweb.servlet.test.HelloServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <!-- 需要和關聯的servlet節點的servlet-name子節點的内容一緻 -->
     <servlet-name>helloServlet</servlet-name>
     <!-- 映射的具體的通路路徑:/代表目前WEB應用的根目錄 -->
     <url-pattern>/hello</url-pattern>
  </servlet-mapping> 
           
<servlet>:指定HelloServlet這個Servlet的名稱為hello;
<servlet-mapping>:指定/hello通路路徑是以通路的Servlet名為hello。
           

servlet生命周期

1、 構造器:隻被調用一次。當第一次請求Servlet時,建立Servlet的執行個體,調用構造器。說明Servlet是單執行個體的。

2、 init:隻被調用一次,在建立好執行個體後立即被調用,用于初始化目前Servlet

3、 Service:被多次調用,每次請求都會調用service方法,實際用于相應請求

4 、destroy:Servlet是不會輕易離去的,通常都是在伺服器關閉時Servlet才會離去!在伺服器被關閉時,伺服器會去銷毀Servlet,在銷毀Servlet之前伺服器會先去調用Servlet的destroy()方法

測試生命周期方法

public class HelloServlet implements Servlet {
  public void init(ServletConfig config) throws ServletException {
    System.out.println("Servlet誕生了!");
  }
  public ServletConfig getServletConfig() {return null;}
  public void destroy() {
    System.out.println("Servlet離我們而去了!");
  }
  public String getServletInfo() {return null;}
 
  public void service(ServletRequest req, ServletResponse res)
       throws ServletException, IOException {
    System.out.println("hello i'am servlet!");
  }
}