摘要:信息錄入輸入內(nèi)容提交同樣,我們也需要在下添加一條路由映射規(guī)則這樣我們?cè)谥休斎胄畔⒑缶蜁?huì)跳轉(zhuǎn)到,這樣就可以通過(guò)對(duì)象獲取到變量的值。
Servlet(服務(wù)端小程序)是使用Java語(yǔ)言編寫的服務(wù)端小程序,可以用于生成動(dòng)態(tài)的Web頁(yè)面。
Servlet處理的基本流程客戶端通過(guò)HTTP提出請(qǐng)求。
Web服務(wù)器接受該請(qǐng)求并將其發(fā)送給Servlet。如果這個(gè)Servlet還沒(méi)有被加載,Web服務(wù)器會(huì)將它加載到Java虛擬機(jī)并執(zhí)行它。
Servlet程序?qū)⒔邮赵揌TTP請(qǐng)求并執(zhí)行某種處理。
Servlet會(huì)將處理后的結(jié)果向Web服務(wù)器返回應(yīng)答。
Web服務(wù)器將從Servlet收到的應(yīng)答發(fā)回給客戶端。
在整個(gè)Servlet程序中,最重要的就是Servlet接口,在此接口下定義了一個(gè)GenericServlet的子類,但是一般不會(huì)直接繼承這個(gè)子類,而是根據(jù)不同的協(xié)議選擇GenericServlet的子類來(lái)繼承,例如:
首先我們要明確的一件事是:在處理HTTP請(qǐng)求的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(); } }
寫好這個(gè)Servlet然后編譯,還不能訪問(wèn),因?yàn)槲覀冞€需要找到一個(gè)鉤子讓網(wǎng)頁(yè)跟我們的Servlet聯(lián)系起來(lái)。那么這個(gè)“鉤子”就是配置web.xml的路由映射:
xmlhello servlet.HelloServlet hello /helloServlet
這樣,就可以通過(guò)../helloServlet查看效果:
如果表單使用的是post的方式提交的,所以在編寫Servlet程序時(shí)要使用doPost()方法。
input.html:
html信息錄入
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
這樣我們?cè)?b>input.html中輸入信息后就會(huì)跳轉(zhuǎn)到InputServlet,這樣InputServlet就可以通過(guò)req對(duì)象獲取到info變量的值。
Servlet生命周期Servlet的生命周期包括加載程序、初始化、服務(wù)、銷毀、卸載5個(gè)部分,如下圖所示。
當(dāng)Web容器啟動(dòng)時(shí)或者是在第一次使用這個(gè)Servlet時(shí),容器會(huì)負(fù)責(zé)創(chuàng)建Servlet實(shí)例,但是必須在web.xml中指定Servlet的位置,成功加載后,Web容器會(huì)通過(guò)反射的方式對(duì)Servlet進(jìn)行實(shí)例化。
初始化當(dāng)一個(gè)Servlet被實(shí)例化后,容器將調(diào)用init()方法初始化這個(gè)對(duì)象,初始化的目的是為了讓Servlet對(duì)象在處理客戶端請(qǐng)求前完成一系列初始化的工作,像建立數(shù)據(jù)庫(kù)的連接、讀取資源文件信息等,如果初始化時(shí)失敗了,那么Servlet將被直接卸載。
處理服務(wù)當(dāng)有請(qǐng)求提交時(shí),Servlet將調(diào)用service()方法(常用的是doGet()或doPost())進(jìn)行處理。
銷毀當(dāng)Web容器關(guān)閉或者檢測(cè)到一個(gè)Servlet要從容器中被刪除時(shí),會(huì)自動(dòng)調(diào)用destroy()方法,以便讓實(shí)例釋放掉所占用的資源。
卸載當(dāng)一個(gè)Servlet調(diào)用完destroy()方法后,此實(shí)例將等待被垃圾收集器所回收,如果需要再次使用此Servlet時(shí),會(huì)重新調(diào)用init()方法進(jìn)行初始化。
在默認(rèn)情況下,初始化方法是在第一次使用時(shí)才調(diào)用,你也可以通過(guò)在web.xml中配置servlet的
1 這樣在容器啟動(dòng)時(shí)Servlet就會(huì)被初始化。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/64275.html
摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...
摘要:再往后來(lái),也就是這種以事件循環(huán)常駐內(nèi)存為特點(diǎn)的后端平臺(tái),姑且能算是第四代后端平臺(tái)。 前不久回答了一個(gè)關(guān)于后端語(yǔ)言選型的問(wèn)題,寫的回答也讓筆者有了很多感觸,因此在這里談?wù)撓伦约簩?duì)后端語(yǔ)言選型的心得體會(huì),姑且算是拋磚引玉,希望大家能分享各自的心得。 后端語(yǔ)言發(fā)展歷史 Web 后端語(yǔ)言的興起是從靜態(tài)網(wǎng)頁(yè)向動(dòng)態(tài)網(wǎng)頁(yè)的發(fā)展所產(chǎn)生的,最早的動(dòng)態(tài)頁(yè)面技術(shù)就是 CGI 技術(shù),將客戶端的輸入交給 CGI...
摘要:前言由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點(diǎn)多了,為了自己和大家的檢索方便,于是我就做了這么一個(gè)博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時(shí)間才會(huì)更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號(hào):Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡(jiǎn)單 注解就這么簡(jiǎn)單 Druid數(shù)據(jù)庫(kù)連接池...
摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
摘要:基礎(chǔ)問(wèn)題的的性能及原理之區(qū)別詳解備忘筆記深入理解流水線抽象關(guān)鍵字修飾符知識(shí)點(diǎn)總結(jié)必看篇中的關(guān)鍵字解析回調(diào)機(jī)制解讀抽象類與三大特征時(shí)間和時(shí)間戳的相互轉(zhuǎn)換為什么要使用內(nèi)部類對(duì)象鎖和類鎖的區(qū)別,,優(yōu)缺點(diǎn)及比較提高篇八詳解內(nèi)部類單例模式和 Java基礎(chǔ)問(wèn)題 String的+的性能及原理 java之yield(),sleep(),wait()區(qū)別詳解-備忘筆記 深入理解Java Stream流水...
閱讀 2187·2021-11-18 10:02
閱讀 3289·2021-11-11 16:55
閱讀 2694·2021-09-14 18:02
閱讀 2426·2021-09-04 16:41
閱讀 2056·2021-09-04 16:40
閱讀 1165·2019-08-30 15:56
閱讀 2213·2019-08-30 15:54
閱讀 3161·2019-08-30 14:15