天天看點

第二章 Servlet基礎

這章我們主要的目标

了解Servlet

Servlet的編碼和部署

Servlet生命周期

Servlet的配置

Servlet與容器互動 

什麼是Servlet

-是運作在Web伺服器或應用伺服器上的Java程式

-在Web上建立動态内容的有效而強大的解決方案

-由容器來管理生命周期與Web伺服器互動

-由Sun規範了其功能 

Servlet的規範組成  

Web應用程式  Servlet和HTTPServlet   過濾器  安全  國際化  

Servlet遵循三階段的生命周期:初始化  服務  銷毀

初始化 銷毀通常執行一次,服務可以執行多次。

所有的Servlet必須實作javax.servlet.Servlet接口。這個接口定義了 init();service(ServletRequest req, ServletResponse resp);destory();

建立部署檔案 (web.xml):

   一般在建立工程的時候,又有預設的web.xml;這時就不需要建立了

在容器中注冊servlet:

<servlet>

      <servlet-name>OutputStream</servlet-name>

      <servlet-class>com.cy.OutputStream</servlet-class>

</servlet>

映射servlet:

<servlet-mapping>

       <servlet-name>OutputStream</servlet-name>

       <url-pattern>/OutputStream</url-pattern>

</servlet-mapping>

servlet配置:

為Servlet提供初始化配置資訊

配置資訊由web.xml聲明中的字元串組成

eg:

    ....

  <init-param>

     <param-name>name</param-name>

     <param-value>Kitty</param-value>

  </init-param>

<init-param>

     <param-name>name1</param-name>

     <param-value>Kitty1</param-value>

Servlet在編譯的代碼之外有初始化參數,當參數改變時,不需要重新編譯Servlet  ,每個servlet都有一個與之相聯的對象ServletConfig; (在servletConfig對象中包含了servlet的初始化參數資訊。)

得到指定的參數value:String value= getServletConfig().getInitParameter(“name"); 

得到所有的所有的參數value:需要應用一個ServletConfig中的一個方法:getInitParameterNmes():傳回一個Enumeration(枚舉)對象,裡面包含了所有的初始化參數。

  1. Enumeration e = this.getServletConfig().getInitParameterNames();  
  2.         while(e.hasMoreElements()){  
  3.             String name = (String)e.nextElement();  
  4.             String value = this.getServletConfig().getInitParameter(name);  
  5.             System.out.println(name+"="+value);  
  6.         }  
  7.     }  

ServletContext 應用上下文:

屬于整個Web應用程式

可以通路到Web應用程式資源的本地輸入流

把資源的虛拟路徑轉換為實體路徑

記錄事件日志

綁定一個對象在整個Web應用程式中共享

初始化web應用程式參數:

 <web-app>

 …

 <context-param>

     <param-name>admin email</param-name>

     <param-value>[email protected]</param-value>

  </context-param>

     …

</web-app>

在Servlet中共享資訊

為所有的Servlet設定一個實時變化的參數值

在Web應用程式中共享一個對象

servletContext.setAttribute("password", "tiger");

String password = (String) servletContext.getAttribute("password");

虛拟路徑轉換為實體路徑:

getResourcePaths(java.lang.String path):傳回一個集合,路徑必須從Web應用程式的根“/”開始;

getResourceAsStream(java.lang.String path):傳回一個InputStream對象。當一個資源需要逐位元組讀取的時候該方法比較适用。

getResource(java.lang.String path):傳回一個Web資源清單。

每件事都需要堅持!

繼續閱讀