Jsp&Servelet 學習筆記(1)
作者:Eve Cole
更新時間:2009-07-02 17:15:10
1.1 寫出一個servelet 程序
1.2 寫出一個Jsp程序
1.3 編譯一個Servlet 程式
1.4 打包一個Servlets 和Jsps程序
1.5 建置一個部署描述器
1.1 寫出一個servelet 程序
問題你想寫一個servlet作為一個web應用程式解決方案寫一個java class 從javax.servlet.http.HttpServlet.繼承。首先必須倒入一個類別包servlet.jar。你將需要裡面的類別函式庫來編譯這個servlet程式。
討論一個servlet程式就是一個java類,用來回應客戶端透過網路請求的動態內容。如果你熟悉(CGI)程序,那麼java技術的servlets完全能取代CGI程序。通常稱為一個web 元件,一個servlet 程式在一個運行環境執行將被提供一個servles容器例如tomcat和bea weblogic.
註:一個web容器能夠被
Servlets被安裝在一個web容器中作為一個web應用程式的一部分。這個應用程式將包含WEB資源。像HTML頁面,圖片,多媒體片斷,servlets, jsps,xml 設定檔,java運行類別和類別庫當一個web應用程式部署到一個web容器裡,這個容器將產生和裝載這個java servlet類別的實例到JVM去處理對於servlet的請求。
所有的servlet繼承javax.servlet.Servlet介面。開發Web應用的程式設計師特別的寫了一個servlet
繼承於javax.servlet.http.HttpServlet,一個抽象類別實作了Servlet介面並且它是特別為處理HTTP請求設計的。
當一個web容器產生一個servlet實例時,它的基本順序如下:
1. servlet容器先呼叫這個servlet的init()方法,它建會初始化一個資源給servlet使用。列如一個logger。這個init()方法在整個servlet的生存週期只會被呼叫一次。
2、 init()方法初始化了一個對象,對象繼承了java.servlet.ServletConfig介面。這個物件讓servlet能夠初始化那些被宣告在部署描述符的參數。 ServletConfig也使servlet有權使用一個javax.servlet.ServletContext 的對象,用這個對象servlet可以記錄信息,分派請求到其他的web組件上並且能夠使用在同一個應用上的其他web資源。
3. servlet容器呼叫這個servlet的service()方法去回應servlet的一些請求。根據HttpServlets,service()自動的呼叫適當的HTTP方法去處理請求透過呼叫servlet的doGet()或doPost()方法。幾個例子,用戶發送了個Post請求這時servlet透過doPost()方法的執行來回應這個請求。
4、 當呼叫兩個主要的HttpServlet的doPost(),doGet()方法,這個servlet容器將產生javax..servlet.http.HttpServletRequest和HttpServletResponse 的物件並且把它們當作參數傳到這些處理請求的方法中。
http://www.downcodes.com/
5. 管理一個servlet的生命週期,或是決定這個servlet實例對request請求的處理,在java虛擬機器上的存在時間。當一個servlet容器開始移除一個servlet的時候將會呼叫servlet的destroy()方法,在這個方法中能夠釋放所有的資源,例如一個資料庫連線。
範例 A typical HttpServlet
package com.mydev;
import java.io.IOException; import java.io.PrintWriter;
import java.util.Enumeration; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//必須繼承HttpServlet介面
public class FirstServlet extends HttpServlet ...{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException ...{
//set the MIME type of the response, "text/html"
response.setContentType("text/html");
//use a PrintWriter to send text data to the client who has requested the
//servlet
java.io.PrintWriter out = response.getWriter( );
//Begin assembling the HTML content out.println("<html><head>");
out.println("<title>Help Page</title></head><body>");
out.println("<h2>Please submit your information</h2>");
//make sure method="post" so that the servlet service method
//calls doPost in the response to this form submit
out.println( "<form method="post" action ="" + request.getContextPath( ) + "/firstservlet" >");
out.println("<table border="0"><tr><td valign="top">");
out.println("Your first name: </td> <td valign="top">");
out.println("<input type="text" name="firstname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("Your last name: </td> <td valign="top">");
out.println("<input type="text" name="lastname" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("Your email: </td> <td valign="top">");
out.println("<input type="text" name="email" size="20">");
out.println("</td></tr><tr><td valign="top">");
out.println("<input type="submit" value="Submit Info"></td></tr>");
out.println("</table></form>"); out.println("</body></html>");
}
//doGet
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException ...{
//display the parameter names and values
Enumeration paramNames = request.getParameterNames( );
String parName;
//this will hold the name of the parameter
boolean emptyEnum = false;
if (! paramNames.hasMoreElements( ))
emptyEnum = true;
//set the MIME type of the response, "text/html"
response.setContentType("text/html");
//use a PrintWriter to send text data to the client
java.io.PrintWriter out = response.getWriter( );
//Begin assembling the HTML content
out.println("<html><head>");
out.println("<title>Submitted Parameters</title></head><body>");
if (emptyEnum) ...{
out.println( "<h2>Sorry, the request does not contain any parameters</h2>");
} else ...{
out.println( "<h2>Here are the submitted parameter values</h2>");
}
while(paramNames.hasMoreElements( )) ...{
parName = (String) paramNames.nextElement( );
out.println( "<strong>" + parName + "</strong> : " + request.getParameter(parName));
out.println("<br />");
}//while
out.println("</body></html>");
}
// doPost
}
你有可能注意到doGet()和doPost()每個將拋出ServletException和IOException.那是因為response.getWriter()將會拋出IO異常。
http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx