Servlet介面實現類開發步驟
阿新 • • 發佈:2020-09-21
Servlet程式設計方式
- 1、實現Servlet介面
這種情況Servlel不是獨立的應用程式,沒有main( )方法,而是生存在容器中,由容器來管理。程式設計時需要實現javax.servlet.Servlet介面的5個方法。 - 2、繼承GenericServlet類
由javax. servlet包提供個抽象類GenericSerlet。它給出了Servlet介面中除service()方法外的其他4個方法的簡單實現,並且還實現了ServletConfig介面,程式設計時直接繼承這個類,程式碼會簡化很多。 - 3、繼承HttpServlet、覆蓋doXXX( )方法
在大部分網路中,都是客戶端通過HTTP協議來訪問伺服器端的資源。為了快速開發應用於HTTP協議的Servlet類,在javax.servlet.http包中提供了一個抽象類HttpServlet,它繼承了GenericServlet類。編寫一個Servlet類繼承HttpServlet,只需要覆蓋相應的doxx()方法即可。 - 4、繼承HttpServlet、重寫service( )方法
其本質就是擴充套件HttpServlet類,使用者只需重寫service( )方法,Servlet模組執行service()方法時,會自動呼叫doPost()和doGet()這兩個方法,實現Servlet的邏輯處理功能。
步驟
第一步:建立一個Java類繼承HttpServlet,使之成為一個Servlet介面實現類。
第二步:重寫HttpServlet父類兩個方法,doGet或doPost。
第三步:將Servlet介面實現類資訊註冊到Tomcat伺服器(在web.xml裡面部署)。
xml配置資訊
<?xml version="1.0" encoding="UTF-8"?> <web-app ...> <!--將Servlet介面實現類的類路徑地址交給Tomcat--> <servlet> <!--宣告一個變數儲存servlet介面實現類的類路徑--> <servlet-name>自己起的名字</servlet-name> <!--宣告servlet介面實現類的類路徑--> <servlet-class>servlet的類名,如果有包加上包名,注意這裡的類名不要加.java</servlet-class> </servlet> <servlet-mapping> <servlet-name>和servlet-name裡的值一樣</servlet-name> <url-pattern>該servlet執行的路徑名,隨便起名字,但是前面要加上“/”</url-pattern> </servlet-mapping> </web-app>
程式碼示例
package com.zyh.controller; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 直接實現servlet介面的話需要實現五個方法: * init * getServletConfig * getServletInfo * destroy * service---只有這個方法有用 * 為什麼? * Tomcat根據Servlet規範呼叫Servlet介面實現類規則: * 1、Tomcat有權建立Servlet介面實現類例項物件: * Servlet oneservlet = new OneServlet(); * 2、Tomcat根據例項物件呼叫service方法處理當前請求: * oneServlet.service(); */ public class OneServlet extends HttpServlet { /* * 呼叫doGet還是doPost方法? * 由父類HttpServlet決定(看原始碼,大概在227行) * */ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doPost"); } }
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.zyh.controller.OneServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/myserv</url-pattern>
</servlet-mapping>
</web-app>
訪問: