基於元件的開發/基礎
有 2 個概念模型為 http 和 tcp/ip 提供上下文。4 層模型將 http 放在第 4 層應用層,將 tcp 放在第 3 層傳輸層,將 ip 放在第 2 層網際網路層。第 1 層通常稱為組合的鏈路/物理層,例如可能包含 MAC/乙太網和 DSL。
在另一種模型中,OSI 7 層模型,第 1 層是物理層,例如 DSL;第 2 層是資料鏈路層,例如 MAC;第 3 層是網際網路層,例如 IPV4/IPV6/IPSEC/UDP,除了 ipsec 之外,可能無連線;第 4 層是傳輸層,通常是面向連線的,例如 TCP;第 5 層是會話層,它是時空同步的(連線和會話),例如 PAP/CHAP,https 中的 S;第 6 層是表示層,可能會將加密歸類到這裡,但概念上可能包括 html;第 7 層是應用層,通常 https 以及 sftp、ftp、telnet、ssh、IMAP、SMTP 在此級別分組。html 可能被歸類為 6b/7b,因為它涉及表示,並且如今通常是應用程式級協議。
在 java web 程式設計的背景下,Apache Tomcat 等 java web 容器提供了 javax.servlet(.http) API 實現的框架。javax.servlet.Servlet 介面描述了 GenericServlet 抽象類和 HttpServlet 抽象類,應用程式程式設計師應該使用繼承來建立 GenericServlet 或 HttpServlet 的子類來滿足他們的應用程式編寫願望。程式設計師需要實現的主要抽象方法是
service(ServiceRequest req, ServiceResponse resp)
在 GenericServlet 中,以及
doGet(HttpServiceRequest req, HttpServiceResponse resp) doPost(HttpServiceRequest req, HttpServiceResponse resp)
在 HttpServlet 中。
HttpServiceRequest 繼承自 ServiceRequest,後者具有 getInputStream() 和 getReader() 方法,允許讀取使用者請求。HTTPServiceRequest 還具有 getCookies() 和 getQueryString()、getUri() 和 getParts(),用於獲取客戶端 Web 瀏覽器資料以進行處理。這允許應用程式執行諸如在法律範圍內跟蹤客戶的操作,而無需客戶的知情,但符合傳統廣告郵件的法律邊界(我們希望如此)。對於處理使用者在網頁表單中輸入的法律上同意和隱式同意的表單資料,這也是必不可少的,因為 getQueryString() 返回用 & 分隔的表單元素。
HttpServieResponse 具有 getOutputStream() 和 getWriter() 方法,用於寫入響應,例如 html 頁面。它還允許設定 Http 級別的資訊,這些資訊指示客戶端的 Web 瀏覽器執行某些操作,例如設定 cookie、讀取響應頭、重定向到另一個頁面、顯示錯誤程式碼和訊息,在以下方法中:
addCookie(Cookie c) addHeader ( String name, String val) sendRedirect( String url ) sendError( int errorCode, String msg)
這允許在 Tomcat 等 Web 容器上以最低的 html 應用程式級別對動態 html 進行程式設計。