摘要:信息錄入輸入內(nèi)容提交同樣,我們也需要在下添加一條路由映射規(guī)則這樣我們在中輸入信息后就會跳轉(zhuǎn)到,這樣就可以通過對象獲取到變量的值。
Servlet(服務端小程序)是使用Java語言編寫的服務端小程序,可以用于生成動態(tài)的Web頁面。
Servlet處理的基本流程客戶端通過HTTP提出請求。
Web服務器接受該請求并將其發(fā)送給Servlet。如果這個Servlet還沒有被加載,Web服務器會將它加載到Java虛擬機并執(zhí)行它。
Servlet程序?qū)⒔邮赵揌TTP請求并執(zhí)行某種處理。
Servlet會將處理后的結(jié)果向Web服務器返回應答。
Web服務器將從Servlet收到的應答發(fā)回給客戶端。
在整個Servlet程序中,最重要的就是Servlet接口,在此接口下定義了一個GenericServlet的子類,但是一般不會直接繼承這個子類,而是根據(jù)不同的協(xié)議選擇GenericServlet的子類來繼承,例如:
首先我們要明確的一件事是:在處理HTTP請求的Servlet程序中,肯定要繼承HttpServlet類,那么在自定義的Servlet中至少要覆寫HttpServlet中提供的doGet()方法。
javapackage servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { PrintWriter out = resp.getWriter(); out.print("First Servlet "); out.println(""); out.println("Hello world
"); out.println(""); out.close(); } }
寫好這個Servlet然后編譯,還不能訪問,因為我們還需要找到一個鉤子讓網(wǎng)頁跟我們的Servlet聯(lián)系起來。那么這個“鉤子”就是配置web.xml的路由映射:
xmlhello servlet.HelloServlet hello /helloServlet
這樣,就可以通過../helloServlet查看效果:
如果表單使用的是post的方式提交的,所以在編寫Servlet程序時要使用doPost()方法。
input.html:
html信息錄入 輸入內(nèi)容:
InputServlet.java:
javapackage servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; /** * Created by mcbird on 14/11/24. */ public class InputServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String info = req.getParameter("info"); PrintWriter out = resp.getWriter(); out.println(""); out.println("" + info + "
"); out.println(""); out.close(); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doGet(req, resp); } }
同樣,我們也需要在web.xml下添加一條路由映射規(guī)則:
web.xml:
xmlinput servlet.InputServlet input /inputServlet
這樣我們在input.html中輸入信息后就會跳轉(zhuǎn)到InputServlet,這樣InputServlet就可以通過req對象獲取到info變量的值。
Servlet生命周期Servlet的生命周期包括加載程序、初始化、服務、銷毀、卸載5個部分,如下圖所示。
當Web容器啟動時或者是在第一次使用這個Servlet時,容器會負責創(chuàng)建Servlet實例,但是必須在web.xml中指定Servlet的位置,成功加載后,Web容器會通過反射的方式對Servlet進行實例化。
初始化當一個Servlet被實例化后,容器將調(diào)用init()方法初始化這個對象,初始化的目的是為了讓Servlet對象在處理客戶端請求前完成一系列初始化的工作,像建立數(shù)據(jù)庫的連接、讀取資源文件信息等,如果初始化時失敗了,那么Servlet將被直接卸載。
處理服務當有請求提交時,Servlet將調(diào)用service()方法(常用的是doGet()或doPost())進行處理。
銷毀當Web容器關(guān)閉或者檢測到一個Servlet要從容器中被刪除時,會自動調(diào)用destroy()方法,以便讓實例釋放掉所占用的資源。
卸載當一個Servlet調(diào)用完destroy()方法后,此實例將等待被垃圾收集器所回收,如果需要再次使用此Servlet時,會重新調(diào)用init()方法進行初始化。
在默認情況下,初始化方法是在第一次使用時才調(diào)用,你也可以通過在web.xml中配置servlet的
1 這樣在容器啟動時Servlet就會被初始化。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64275.html
摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...
摘要:基礎問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎問題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識點總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機制解讀抽象類與三大特征時間和時間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對象鎖和類鎖的區(qū)別,,優(yōu)缺點及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 2206·2021-11-18 10:02
閱讀 3305·2021-11-11 16:55
閱讀 2709·2021-09-14 18:02
閱讀 2449·2021-09-04 16:41
閱讀 2079·2021-09-04 16:40
閱讀 1209·2019-08-30 15:56
閱讀 2226·2019-08-30 15:54
閱讀 3176·2019-08-30 14:15