Servlet基礎
- Servlet技術簡介
Servlet是一種獨立於平臺和協議的服務器端的java技術,可以用來動態的生成Web界面。Servlet具有非常好的可移植性、強大的功能、更少的投資、更高的效率、更好的安全性等特點
Servlet一般用來處理HTTP的請求用來返回一個響應,它能夠處理的請求有doGet()、doPost()、service()等方法,在開發Servlet時可以直接繼承javax.servlet.http.HttpServlet類
值得注意的是Servlet需要在web.xml中配置(或者直接在Servlet類前添加@webServlet),即(映射Servlet的名字、配置Servlet類、初始化參數、進行安全配置、過濾器、監聽器等)。Servlet不僅可以生產HTML腳本輸出,還可以生產二進制表單進行輸出 - Servlet技術功能
(1)創建並返回一個包含基於客戶請求性質的動態內容完整的HTML頁面
(2)創建可嵌入的一部分的HTML頁面到主HTML頁面
(3)與其他服務器資源(包括數據庫和基於java的應用程序)進行通信
(4)用於處理多個客戶機處理連接,接收多個客戶機的輸入,並將結果傳遞到客戶及上
(5)當允許單連接方式可以傳遞數據的情況下,在瀏覽器上打開applet的新連接,並保持打開狀態;
當運行客戶機與服務器簡單、高效的執行 繪畫的情況下,applet也可以啓動客戶瀏覽器和服務器之間的連接,可以定製協議通信
(6)將定製的處理提供給所有服務器的標準程序 - Servlet技術特點
- Servlet技術帶給程序猿最大的優勢就是它可以處理客戶端傳來的HTTP請求,並返回一個響應。總的來說,Servlet具有如下特點
(1)高效
(2)方便
(3)跨平臺
(4)功能強大
(5)靈活性和可擴展性
(6)共享數據
(7)安全
-
Servlet的生命週期
-
Servlet與JSP的區別
(1)編程方式不同
(2)Servlet必須在編譯後才能執行
(3)運行速度不同 -
Servlet的代碼結構
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class test
*/
@WebServlet("/test")
public class test extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public test() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//可編寫使用request讀取請求有關的信息和表單數據的代碼
//可編寫response指定的HTTP應答狀態的代碼和應答頭的代碼
PrintWriter out=response.getWriter();
//可編寫out對象頁面中輸出信息的代碼
}
}
Servlet常用接口和類
- Servlet接口
javax.servlet包中的類與接口封裝了一個抽象框架,建立請求和產生響應的組件(即Servlet),其中javax.servlet.Servlet是所有Java Servlet的基礎接口 - HttpServlet類
HttpServlet類存放在javax.servlet.http包中,是針對使用HTTP協議的Web服務器的Servlet類。HttpServlet類通過執行Servlet接口,能夠提供HTTP協議的功能 - ServletConfig接口
ServletConfig接口存放在javax.servlet包內,它是一個由Servlet容器使用的Servlet配置對象,用於在Servlet初始化時向他傳遞信息 - HttpServletRequest接口
HttpServletRequest類存放在javax.servlet.http包內 - HttpServletResponse接口
HttpServletResponse類存放在javax.servlet.http包內,它代表了對客戶端的HTTP響應。HttpServletResponse接口給出了響應客戶端的Servlet()方法。它允許Servlet設置內容長度和迴應的MIME類型,並且提供輸出流ServletOutoutStream - GenericServlet類
GenericServlet類存在javax.servlet包中,它提供了對Servlet接口的基本實現,它是一個抽象類,它的service()方法是一個抽象方法
Servlet開發
- Servlet的創建
創建一個Servlet通常涉及一下四個步驟
(1)繼承HttpServlet抽象類
(2)重裝適當的方法,如覆蓋(或稱爲重寫)doGet()方法或doPost()方法
(3)如果有HTTP通信可以獲取該信息
(4)生成HTTP響應 - Servlet的配置
(1)在WEB-INF文件夾下的web.xml文件中配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>VoteServlet</servlet-name>
<servlet-class>
dom.VoteServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>VoteServlet</servlet-name>
<url-pattern>/VoteServlet</url-pattern>
</servlet-mapping>
</web-app>
(2)採用註解配置Servlet
//在編寫的Servlet類上方編寫
@WebServlet(urlPatterns={
"/映射地址"},asyncSupported=true|false,
loadOnStartup=-1,name="Servlet名稱",displayName="顯示名稱",
initParam={
@WebInitParam(name="username",value="值")})
public class Servlet extends HttpServlet {
...