日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

按钮不通过表单连接servlet_JavaWeb之Servlet(一)

發布時間:2023/12/18 java 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 按钮不通过表单连接servlet_JavaWeb之Servlet(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.Servlet概述

Servlet 為創建基于 web 的應用程序提供了基于組件、獨立于平臺的方法,可以不受 CGI 程序的性能限制。Servlet 有權限訪問所有的 Java API,包括訪問企業級數據庫的 JDBC API。Servlet(Server Applet)是Java Servlet的簡稱,稱為小服務程序或服務連接器,用Java編寫的服務器端程序,具有獨立于平臺和協議的特性,主要功能在于交互式地瀏覽和生成數據,生成動態Web內容。狹義的Servlet是指Java語言實現的一個接口,廣義的Servlet是指任何實現了這個Servlet接口的類,一般情況下,人們將Servlet理解為后者。Servlet運行于支持Java的應用服務器中。從原理上講,Servlet可以響應任何類型的請求,但絕大多數情況下Servlet只用來擴展基于HTTP協議的Web服務器。

Java Servlet 是運行在 Web 服務器或應用服務器上的程序,它是作為來自 Web 瀏覽器或其他 HTTP 客戶端的請求和 HTTP 服務器上的數據庫或應用程序之間的中間層。使用 Servlet,您可以收集來自網頁表單的用戶輸入,呈現來自數據庫或者其他源的記錄,還可以動態創建網頁。Java Servlet 通常情況下與使用 CGI(Common Gateway Interface,公共網關接口)實現的程序可以達到異曲同工的效果。但是相比于 CGI,Servlet 有以下幾點優勢:

  • 性能明顯更好。

  • Servlet在Web服務器的地址空間內執行。這樣它就沒有必要再創建一個單獨的進程來處理每個客戶端請求。

  • Servlet是獨立于平臺的,因為它們是用Java編寫的

  • 服務器上的Java安全管理器執行了一些列限制,以保護服務器計算機上的資源。因此,Servlet是可信的。

  • Java類庫的全部功能對Servlet來說都是可用的。它可以通過socket和RMI機制與applets、數據庫或其它軟件進行交互。

2.Servlet架構

3.Servlet任務

Servlet 執行以下主要任務:

  • 讀取客戶端(瀏覽器)發送的顯式的數據。這包括網頁上的 HTML 表單,或者也可以是來自 applet 或自定義的 HTTP 客戶端程序的表單。

  • 讀取客戶端(瀏覽器)發送的隱式的 HTTP 請求數據。這包括 cookies、媒體類型和瀏覽器能理解的壓縮格式等等。

  • 處理數據并生成結果。這個過程可能需要訪問數據庫,執行 RMI 或 CORBA 調用,調用 Web 服務,或者直接計算得出對應的響應。

  • 發送顯式的數據(即文檔)到客戶端(瀏覽器)。該文檔的格式可以是多種多樣的,包括文本文件(HTML 或 XML)、二進制文件(GIF 圖像)、Excel 等。

  • 發送隱式的 HTTP 響應到客戶端(瀏覽器)。這包括告訴瀏覽器或其他客戶端被返回的文檔類型(例如 HTML),設置 cookies 和緩存參數,以及其他類似的任務。

4.Servlet包

Java Servlet 是運行在帶有支持 Java Servlet 規范的解釋器的 web 服務器上的 Java 類。Servlet 可以使用 javax.servletjavax.servlet.http 包創建,它是 Java 企業版的標準組成部分,Java 企業版是支持大型開發項目的 Java 類庫的擴展版本。這些類實現 Java Servlet 和 JSP 規范。Java Servlet 就像任何其他的 Java 類一樣已經被創建和編譯。在您安裝 Servlet 包并把它們添加到您的計算機上的 Classpath 類路徑中之后,您就可以通過 JDK 的 Java 編譯器或任何其他編譯器來編譯 Servlet。

5.Servlet生命周期

Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程:

  • Servlet 初始化后調用 init () 方法。

  • Servlet 調用 service() 方法來處理客戶端的請求。

  • Servlet 銷毀前調用 destroy() 方法。

  • 最后,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。

現在讓我們詳細討論生命周期的方法。

init 方法被設計成只調用一次。它在第一次創建 Servlet 時被調用,在后續每次用戶請求時不再調用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一樣。Servlet 創建于用戶第一次調用對應于該 Servlet 的 URL 時,但是您也可以指定 Servlet 在服務器第一次啟動時被加載。當用戶調用一個 Servlet 時,就會創建一個 Servlet 實例,每一個用戶請求都會產生一個新的線程,適當的時候移交給 doGet 或 doPost 方法。init() 方法簡單地創建或加載一些數據,這些數據將被用于 Servlet 的整個生命周期。

public void init() throws ServletException { ?// 初始化代碼...}

service() 方法是執行實際任務的主要方法。Servlet 容器(即 Web 服務器)調用 service() 方法來處理來自客戶端(瀏覽器)的請求,并把格式化的響應寫回給客戶端。每次服務器接收到一個 Servlet 請求時,服務器會產生一個新的線程并調用服務。service() 方法檢查 HTTP 請求類型(GET、POST、PUT、DELETE 等),并在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。

public void service(ServletRequest request, ? ? ? ? ? ? ? ? ? ?ServletResponse response) ? ? ?throws ServletException, IOException{}

service() 方法由容器調用,service 方法在適當的時候調用 doGet、doPost、doPut、doDelete 等方法。所以,您不用對 service() 方法做任何動作,您只需要根據來自客戶端的請求類型來重寫 doGet() 或 doPost() 即可。doGet() 和 doPost() 方法是每次服務請求中最常用的方法。

GET 請求來自于一個 URL 的正常請求,或者來自于一個未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理。

public void doGet(HttpServletRequest request, ? ? ? ? ? ? ? ? ?HttpServletResponse response) ? ?throws ServletException, IOException { ? ?// Servlet 代碼}

POST 請求來自于一個特別指定了 METHOD 為 POST 的 HTML 表單,它由 doPost() 方法處理。

public void doPost(HttpServletRequest request, ? ? ? ? ? ? ? ? ? HttpServletResponse response) ? ?throws ServletException, IOException { ? ?// Servlet 代碼}

destroy() 方法只會被調用一次,在 Servlet 生命周期結束時被調用。destroy() 方法可以讓您的 Servlet 關閉數據庫連接、停止后臺線程、把 Cookie 列表或點擊計數器寫入到磁盤,并執行其他類似的清理活動。在調用 destroy() 方法之后,servlet 對象被標記為垃圾回收。

public void destroy() { ? ?// 終止化代碼... }

上圖顯示了一個典型的 Servlet 生命周期方案。

  • 第一個到達服務器的 HTTP 請求被委派到 Servlet 容器。

  • Servlet 容器在調用 service() 方法之前加載 Servlet。

  • 然后 Servlet 容器處理由多個線程產生的多個請求,每個線程執行一個單一的 Servlet 實例的 service() 方法。

6.Servlet代碼演示

Servlet 是服務 HTTP 請求并實現 javax.servlet.Servlet 接口的 Java 類。Web 應用程序開發人員通常編寫 Servlet 來擴展 javax.servlet.http.HttpServlet,并實現 Servlet 接口的抽象類專門用來處理 HTTP 請求。

package com.wyz.servlet.demo1;import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse;public class HelloServlet implements Servlet{ @Override public void destroy() {} @Override public ServletConfig getServletConfig() { return null;} @Override public String getServletInfo() { return null;} @Override public void init(ServletConfig arg0) throws ServletException {} //用來處理客戶的請求,并且對請求作出響應的方法 @Override public void service(ServletRequest req, ServletResponse resp) throws ServletException, IOException { //向頁面輸出一個HelloServlet字符串 resp.getWriter().println("HelloServlet");}}

在web.xml中配置相關信息:

<servlet> ? ?<servlet-name>HelloServletservlet-name> ? ?<servlet-class>com.wyz.servlet.demo1.HelloServletservlet-class> ?servlet> ?<servlet-mapping> ? ?<servlet-name>HelloServletservlet-name> ? ?<url-pattern>/hellourl-pattern> ?servlet-mapping>

在Tomcat中啟動項目,運行結果:

總結

以上是生活随笔為你收集整理的按钮不通过表单连接servlet_JavaWeb之Servlet(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。