現在的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 protectedservice
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