模拟Servlet
當web服務器接收到用戶在客戶端的請求后,通過web.xml中的請求路–Servlet類映射關系,找到指定的Servlet程序,并執行其中的service()方法,以完成具體的服務
對于javaweb開發者來說,需要編寫一個個實現Servlet接口的Servlet程序,根據具體需求重寫service()方法;并將Servlet類和請求路徑綁定,編寫web.xml文件
sun公司制定的Servlet接口中提service()等一系列方法,以便開發者根據實際需求重寫
/*Servlet接口該接口的調用者: web服務器(如:tomcat)實現者: sun公司 */ // 每一個Servlet程序多需要直接或間接繼承Servlet類 public interface Servlet {// 這是提供服務的方法void service(); }web服務器,以Tomcat為例。web服務器獲取來自客戶端的用戶請求路徑,并將其映射到指定的Servlet程序中,并執行指定的服務
/*服務器開發商,開發的web服務(web容器/web container)web服務器不知道有哪些Servlet,但唯一確定的是知道所有的Servlet都實現(implement)SUN公司的Servlet接口 */ import java.util.Scanner; import java.util.*; import java.io.*;public class Tomcat //Tomcat服務器是純java語言實現的,沒有使用其他編程語言 {public static void main(String[] args) throws Exception{System.out.println("正在啟動Tomcat服務器,請稍后...");System.out.println("Tomcat服務器啟動成功,開始接收瀏覽器的訪問");Scanner s = new Scanner(System.in);System.out.print("請輸入請求路徑:");//獲取用戶的請求路徑String requestPath = s.next();//Tomcat服務器負責解析web.xml文件//web.xml文件名、存放位置、配置信息都是Servlet規范,不能修改//web.xml文件的編寫者:javaweb程序員FileReader reader = new FileReader("web.xml");Properties pro = new Properties();pro.load(reader);reader.close();// 通過key獲取valueString className = pro.getProperty(requestPath);// 通過反射機制創建對象Class c = Class.forName(className); // 通過類名獲取類Servlet servlet = (Servlet)c.newInstance(); // 多態,父類型的引用指向子類對象// 面向接口調用即可// 編譯器,檢查servlet接口中是否存在service()方法,通過編譯期// 運行期,創建子類對象,調用子類中的方法servlet.service();} }web.xml提供請求路徑–servlet程序的映射關系
/login=LoginServlet /logout=LogoutServlet /delete=DeleteServlet具體的實現某一需求的Servlet程序
/*服務器端的每一個 java程序,都提供一個獨立的服務LoginServlet.java 系統登錄 */ public class LoginServlet implements Servlet {public void service(){System.out.println("正在登錄請稍后....");} }建議閱讀:一圖理解JavaWeb項目
參考自:動力節點Servlet
總結
- 上一篇: 报错记录:SprintBoot---Un
- 下一篇: 使用Github搜索开源项目