什麼是Servlet?① Servlet就是JAVA 類② Servlet是一個繼承HttpServlet類的類③ 這個在伺服器端運行,用以處理客戶端的請求 Servlet相關包的介紹--javax.servlet.* :存放與HTTP 協議無關的一般性Servlet 類;--javax.servl
- 什麼是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>