国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Servlet簡介

2019-11-18 12:32:15
字體:
來源:轉載
供稿:網友

  Servlet是對支持java的服務器的一般擴充。它最常見的用途是擴展Web服務器,提供非常安全的、可移植的、易于使用的CGI替代品。它是一種動態加載的模塊,為來自Web服務器的請求提供服務。它完全運行在Java虛擬機上。由于它在服務器端運行,因此它不依靠于瀏覽器的兼容性。
  servlet容器:
  負責處理客戶請求、把請求傳送給servlet并把結果返回給客戶。不同程序的容器實際實現可能有所變化,但容器與servlet之間的接口是由servlet API定義好的,這個接口定義了servlet容器在servlet上要調用的方法及傳遞給servlet的對象類。
  servlet的生命周期:
  1、servlet容器創建servlet的一個實例
  2、容器調用該實例的init()方法
  3、假如容器對該servlet有請求,則調用此實例的service()方法
  4、容器在銷毀本實例前調用它的destroy()方法
  5、銷毀并標記該實例以供作為垃圾收集
  一旦請求了一個servlet,就沒有辦法阻止容器執行一個完整的生命周期。
  容器在servlet首次被調用時創建它的一個實例,并保持該實例在內存中,讓它對所有的請求進行處理。容器可以決定在任何時候把這個實例從內存中移走。在典型的模型中,容器為每個servlet創建一個單獨的實例,容器并不會每接到一個請求就創建一個新線程,而是使用一個線程池來動態的將線程分配給到來的請求,但是這從servlet的觀點來看,效果和為每個請求創建一個新線程的效果相同。
  
  servlet API
  servlet接口:
  public interface Servlet
  它的生命周期由javax.servlet.servlet接口定義。當你在寫servlet的時候必須直接或間接的實現這個接口。一般趨向于間接實現:通過從javax.servlet.GenericServlet或javax.servlet.http.HttpServlet派生。在實現servlet接口時必須實現它的五個方法:
  init():
  public void init(ServletConfig config) throws ServletException
  一旦對servlet實例化后,容器就調用此方法。容器把一個ServletConfig對象傳統給此方法,這樣servlet的實例就可以把與容器相關的配置數據保存起來供以后使用。假如此方法沒有正常結束就會拋出一個ServletException。一旦拋出該異常,servlet就不再執行,而隨后對它的調用會導致容器對它重新載入并再次運行此方法。接口規定對任何servlet實例,此方法只能被調用一次,在任何請求傳遞給servlet之前,此方法可以在不拋出異常的情況下運行完畢。
  service():
  public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException
  只有成功初始化后此方法才能被調用處理用戶請求。前一個參數提供訪問初始請求數據的方法和字段,后一個提供servlet構造響應的方法。
  destroy():
  public void destroy()
  容器可以在任何時候終止servlet服務。容器調用此方法前必須給service()線程足夠時間來結束執行,因此接口規定當service()正在執行時destroy()不被執行。
  getServletConfig():
  public ServletConfig getServletConfig()
  在servlet初始化時,容器傳遞進來一個ServletConfig對象并保存在servlet實例中,該對象答應訪問兩項內容:初始化參數和ServletContext對象,前者通常由容器在文件中指定,答應在運行時向sevrlet傳遞有關調度信息,后者為servlet提供有關容器的信息。此方法可以讓servlet在任何時候獲得該對象及配置信息。
  getServletInfo():
  public String getServletInfo()
  此方法返回一個String對象,該對象包含servlet的信息,例如開發者、創建日期、描述信息等。該方法也可用于容器。
  
  GenericServlet類
  Public abstract class GenericServlet implants Servlet,ServletConfig,Serializable
  此類提供了servlet接口的基本實現部分,其service()方法被申明為abstract,因此需要被派生。init(ServletConfig conf)方法把servletConfig對象存儲在一個PRivate transient(私有臨時)實例變量里,getServletConfig()方法返回指向本對象的指針,假如你重載此方法,將不能使用getServletConfig來獲得ServletConfig對象,假如確實想重載,記住要包含對super.config的調用。2.1版的API提供一個重載的沒有參數的init()方法。現在在init(ServletConfig)方法結束時有一個對init()的調用,盡管目前它是空的。2.1版API里面,此類實現了ServletConfig接口,這使得開發者不用獲得ServletConfig對象情況下直接調用ServletConfig的方法,這些方法是:getInitParameter(),getInitParameterNames(),getServletContext。此類還包含兩個寫日志的方法,它們實際上調用的是ServletContext上的對應方法。log(String msg)方法將servlet的名稱和msg參數寫到容器的日志中,log(String msg,Throwable cause)除了包含servlet外還包含一個異常。
  
  HttpServlet類
  該類擴展了GenericServlet類并對servlet接口提供了與HTTP更相關的實現。
  service():
  protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
  public void service(HttpServletRequest req,HttpServletResponse res)throws ServletException,IOException
  該方法作為HTTP請求的分發器,這個方法在任何時候都不能被重載。當請求到來時,service()方法決定請求的類型(GET,POST,HEAD,OPTIONS,DELETE,PUT,TRACE),并把請求分發給相應的處理方法(doGet(),doPost(),doHead(),doOptions(),doDelete(),doPut(),doTrace())每個do方法具有和第一個service()相同的形式。為了響應特定類型的HTTP請求,我們必須重載相應的do方法。假如servlet收到一個HTTP請求而你沒有重載相應的do方法,它就返回一個說明此方法對本資源不可用的標準HTTP錯誤。
  getLatModified():
  protected long getLastModified(HttpServletRequest req)
  該方法返回以毫秒為單位的的自GMT時間1970年1月1日0時0分0秒依靠的最近一次修改servlet的時間,缺省是返回一個負數表示時間未知。當處理GET請求時,調用此方法可以知道servlet的最近修改時間,服務器就可決定是否把結果從緩存中去掉。
  
  HttpServletRequest接口
  public interface HttpServletRequest extends ServletRequest
  所有實現此接口的對象(例如從servlet容器傳遞的HTTP請求對象)都能讓servlet通過自己的方法訪問所有請求的數據。下面是一些用來獲取表單數據的基本方法。
  getParameter()
  public String getParameter(String key)
  此方法試圖將根據查詢串中的要害字定位對應的參數并返回其值。假如有多個值則返回列表中的第一個值。假如請求信息中沒有指定參數,則返回null。
  getParametervalues():
  public String[] getParametervalues(String key)
  假如一個參數可以返回多個值,比如復選框集合,則可以用此方法獲得對應參數的所有值。假如請求信息中沒有指定參數,則返回null。
  GetParameterNames():
  Public Enumeration getParameterNames()
  此方法返回一個Enumeration對象,包含對應請求的所有參數名字列表。
  HttpServletResponse接口
  public interface HttpServletResponse extends servletResponse
  servlet容器提供一個實現該接口的對象并通過service()方法將它傳遞給servlet。通過此對象及其方法,servlet可以修改響應頭并返回結果。
  setContentType():
  public void setContentType(String type)
  在給調用者發回響應前,必須用此方法來設置HTTP響應的MIME類型。可以是任何有效的MIME類型,當給瀏覽器返回Html是就是”text/html”類型。
  getWriter():
  public PrintWriter getWriter()throws IOException
  此方法將返回PrintWriter對象,把servlet的結果作為文本返回給調用者。PrintWriter對象自動把Java內部的UniCode編碼字符轉換成正確的編碼以使客戶端能夠閱讀。
  getOutputStream():
  public ServletOutputStream getOutputStream() throws IOException
  此方法返回ServletOutputStream對象,它是java.io.OutputStream的一個子類。此對象向客戶發送二進制數據。
  setHeader():
  public void setHeader(String name,String value)
  此方法用來設置送回給客戶的HTTP響應頭。有一些快捷的方法用來改變某些常用的響應頭,但有時也需要直接調用此方法。
  編譯條件
  需要從http://java.sun.com/prodUCts/servlet/ 獲得一份JSDK的拷貝,并把servlet.jar移動到JDK安裝目錄下的/jre/lib/ext目錄下。假如是JDK1.1,則移動到/lib下,并在CLASSPATH中加入servlet.jar的絕對路徑。
  運行條件
  需要Apache Jserv,Jrun Servlet Exec,Java Web Server,Weblogic,WebSphere,Tomcat,Resin等servlet服務器端程序。
  簡單范例
  
  import java.io.*;
  import javax.servlet.*;
  import javax.servlet.http.*;
  public class HelloWorld extends HttpServlet {
    public void doGet(HttpServletRequest request, HttpServletResponse response)  throws IOException, ServletException 
   {   
   response.setContentType("text/html");  
    PrintWriter out = response.getWriter();
      out.println("<html>");  
    out.println("<body>");   
   out.println("<head>");   
   out.println("<title>Hello World!</title>");  
    out.println("</head>");

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汕头市| 彰化县| 思南县| 宝山区| 黔江区| 甘德县| 额尔古纳市| 南和县| 含山县| 莱芜市| 清远市| 内江市| 绵竹市| 海丰县| 横峰县| 保定市| 绵竹市| 行唐县| 太和县| 泌阳县| 澳门| 牙克石市| 泾阳县| 茂名市| 蒙城县| 卢湾区| 永顺县| 平果县| 许昌县| 博爱县| 临江市| 桦南县| 武强县| 河南省| 娄烦县| 汉寿县| 贵德县| 沙河市| 金秀| 雷州市| 瑞昌市|