標籤:
現在的JSP書籍有的是直接講述JSP的使用,然後再講解SERVERLET的使用;也有書籍是先講述SERVERLET的使用,然後講解JSP使用.個人認為第二種相對好一些,至於原因大家可以在學習體會到!所以今天我們接著學習SERVERLET的使用!
好,廢話少說,現在開始!
- 什麼是Servlet?
① Servlet就是JAVA 類
② Servlet是一個繼承HttpServlet類的類
③ 這個在伺服器端運行,用以處理用戶端的請求
- Servlet相關包的介紹
--javax.servlet.* :存放與HTTP 協議無關的一般性Servlet 類;
--javax.servlet.http.* :除了繼承javax.servlet.* 之外,並且還增加與HTTP協議有關的功能。
(注意:大家有必要學習一下HTTP協議,因為WEB開發都會涉及到)
所有的Servlet 都必須實現javax.servlet.Servlet 介面(Interface)。
若Servlet程式和HTTP 協議無關,那麼必須繼承javax.servlet.GenericServlet類;
若Servlet程式和HTTP 協議有關,那麼必須繼承javax.servlet.http.HttpServlet 類。
--HttpServlet :提供了一個抽象類別用來建立Http Servlet。
public void doGet()方法:用來處理用戶端發出的 GET 請求
public void doPost()方法:用來處理 POST請求
還有幾個方法大家自己去查閱API協助檔案
--javax.servlet包的介面:
ServletConfig介面:在初始化的過程中由Servlet容器使用
ServletContext介面:定義Servlet用於擷取來自其容器的資訊的方法
ServletRequest介面:向伺服器請求資訊
ServletResponse介面:響應用戶端請求
Filter介面:
--javax.servlet包的類:
ServletInputStream類:用於從用戶端讀取位元據
ServletOutputStream類:用於將位元據發送到用戶端
--javax.servlet.http包的介面:
HttpServletRequest介面:提供Http請求資訊
HttpServletResponse介面:提供Http響應
- Servlet生命週期
--Servlet生命週期就是指建立Servlet執行個體後,存在的時間以及何時銷毀的整個過程.
--Servlet生命週期有三個方法
init()方法:
service()方法:Dispatches client requests to the protected service method
destroy()方法:Called by the servlet container to indicate to a servlet that the servlet is being taken out of service.
--Servlet生命週期的各個階段
----執行個體化:Servlet容器建立Servlet執行個體
----初始化:調用init()方法
----服務:如果有請求,調用service()方法
----銷毀:銷毀執行個體前調用destroy()方法
----垃圾收集:銷毀執行個體
- Servlet的基本結構
package cn.dragon.servlet;//下面是匯入相應的包import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** 這是第一個Servlet的例子* @author cn.dragon*/public class ServletDemoFirst extends HttpServlet { //用於處理用戶端發送的GET請求 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=GB2312"); //這條語句指明了向用戶端發送的內容格式和採用的字元編碼. PrintWriter out = response.getWriter(); out.println(" 您好!"); //利用PrintWriter對象的方法將資料發送給用戶端 out.close(); } //用於處理用戶端發送的POST請求 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); //這條語句的作用是,當用戶端發送POST請求時,調用doGet()方法進行處理 }}
- Servlet的部署
以下截取部分 <servlet> <description>任意</description> <display-name>任意</display-name> <servlet-name>ServletDemoFirst</servlet-name> <servlet-class>cn.dragon.servlet.ServletDemoFirst</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemoFirst</servlet-name> <url-pattern>/servlet/ServletDemoFirst</url-pattern> </servlet-mapping> 【注意】 ① 上面的兩個<servlet-name>必須相同 ② <servlet-class>後面指在對應的類上面. 技巧:你可以直接在你的servlet類中複製過來,這樣可以避免出錯! ③ <url-pattern> 必須是/servlet 再加servlet名字.大家現在就這麼記.
- Servlet執行個體示範
package cn.dragon.servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class ServletDemoSecond extends HttpServlet { //初始化 public void init() throws ServletException { System.out.println("我是init()方法!用來進行初始化工作"); } //處理GET請求 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("我是doGet()方法!用來處理GET請求"); response.setContentType("text/html;charset=GB2312"); PrintWriter out = response.getWriter(); out.println("<HTML>"); out.println("<BODY>"); out.println("這是Servlet的例子"); out.println("</BODY>"); out.println("</HTML>"); } //處理POST請求 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } //銷毀執行個體 public void destroy() { super.destroy(); System.out.println("我是destroy()方法!用來進行銷毀執行個體的工作"); }} web.xml檔案<?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <servlet-name>ServletDemoSecond</servlet-name> <servlet-class>cn.dragon.servlet.ServletDemoSecond</servlet-class> </servlet> <servlet-mapping> <servlet-name>ServletDemoSecond</servlet-name> <url-pattern>/servlet/ServletDemoSecond</url-pattern> </servlet-mapping></web-app>轉載與:http://www.cnblogs.com/goody9807/archive/2007/06/13/782519.htm
JSP/SERVLET入門教程--Servlet 使用入門