如今的JSP書籍有的是直接講述JSP的使用,然后再解說SERVERLET的使用;也有書籍是先講述SERVERLET的使用,然后解說JSP使用.個人覺得另外一種相對好一些,至於原因大家能夠在學習體會到!所以今天我們接着學習SERVERLET的使用!
好,廢話少說,如今開始!
- 什么是Servlet?
① Servlet就是JAVA 類
② Servlet是一個繼承HttpServlet類的類
③ 這個在server端執行,用以處理client的請求 - 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()方法:用來處理client發出的 GET 請求
public void doPost()方法:用來處理 POST請求
還有幾個方法大家自己去查閱API幫助文件
--javax.servlet包的接口:
ServletConfig接口:在初始化的過程中由Servlet容器使用
ServletContext接口:定義Servlet用於獲取來自其容器的信息的方法
ServletRequest接口:向server請求信息
ServletResponse接口:響應client請求
Filter接口:
--javax.servlet包的類:
ServletInputStream類:用於從client讀取二進制數據
ServletOutputStream類:用於將二進制數據發送到client
--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 {
//用於處理client發送的GET請求
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GB2312"); //這條語句指明了向client發送的內容格式和採用的字符編碼.
PrintWriter out = response.getWriter();
out.println(" 您好。"); //利用PrintWriter對象的方法將數據發送給client
out.close();
}
//用於處理client發送的POST請求
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response); //這條語句的作用是。當client發送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>