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>
訪問: