這章我們主要的目标
了解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(枚舉)對象,裡面包含了所有的初始化參數。
- Enumeration e = this.getServletConfig().getInitParameterNames();
- while(e.hasMoreElements()){
- String name = (String)e.nextElement();
- String value = this.getServletConfig().getInitParameter(name);
- System.out.println(name+"="+value);
- }
- }
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資源清單。
每件事都需要堅持!