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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

什么是Servlet?对Servlet技术的浅尝解析

發(fā)布時(shí)間:2023/12/10 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是Servlet?对Servlet技术的浅尝解析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.什么是Servlet技術(shù)

? ? ?? Servlet全稱(chēng)Java Servlet,是一個(gè)基于java技術(shù)的Web組件,運(yùn)行在服務(wù)器端,由Servlet容器所管理,用于生成動(dòng)態(tài)的內(nèi)容。狹義Servlet是指Java語(yǔ)言實(shí)現(xiàn)的一個(gè)接口,廣義的Servlet是指任何實(shí)現(xiàn)了這個(gè)Servlet接口的類(lèi)?!局饕幚砜蛻舳藗鬟^(guò)來(lái)的HTTP請(qǐng)求,并解析返回一個(gè)響應(yīng)】

2.手動(dòng)創(chuàng)建Servlet的三種方式

?

  • 實(shí)現(xiàn)Servelt接口:

????????????????init()、*service()、getServletConfig()、getServletInfo() 、destroy()、

  • 繼承GenericServlet:

????????????????service()

  • 繼承HttpServlet:

????????????????doGet()、doPost()


3.Servlet的生命周期:

????????????【注意整個(gè)過(guò)程都是由Servlet容器同一管理調(diào)度,會(huì)生成很多對(duì)象和方法執(zhí)行不同的功能且都是自動(dòng)裝載無(wú)需用戶操作,用戶只需要根據(jù)Servlet規(guī)范創(chuàng)建一個(gè)servlet,即生成一個(gè)特定的類(lèi)即可

? ? ? ? ? 瀏覽器發(fā)送http請(qǐng)求->web服務(wù)器接收請(qǐng)求轉(zhuǎn)發(fā)至->Servlet容器->實(shí)例化一個(gè)Servlet對(duì)象->調(diào)用init()方法初始化Servlet參數(shù)信息->調(diào)用service()方法獲取請(qǐng)求信息【注意:Servlet容器中自動(dòng)生成HttpServletRequest對(duì)象封裝請(qǐng)求信息】,并且向?yàn)g覽器生成響應(yīng)【注意:Servlet容器中自動(dòng)生成HttpServletResponse對(duì)象封裝響應(yīng)信息】->Servlet將響應(yīng)結(jié)果返回至容器->容器再將結(jié)果返回至客戶端界面顯示->最后響應(yīng)結(jié)束關(guān)閉web服務(wù)器時(shí)會(huì)自動(dòng)調(diào)用destroy()銷(xiāo)毀servlet對(duì)象【如果同一時(shí)間收到另一個(gè)請(qǐng)求信息,servlet對(duì)象不另外生成且init()方法也不再執(zhí)行


4.普通servlet開(kāi)發(fā)和使用eclipse開(kāi)發(fā)的本質(zhì)區(qū)別

  • ? ? 普通servlet開(kāi)發(fā)流程:

????????根據(jù)tomcat默認(rèn)web項(xiàng)目路徑在/webapps/下新建一個(gè)web項(xiàng)目,且架構(gòu)要符合tomcat標(biāo)準(zhǔn)!具體查看tomcat自帶的/webapps/manager案例!->根據(jù)servlet規(guī)范創(chuàng)建一個(gè)servlet即生成一個(gè)特定類(lèi)(三種方法)->導(dǎo)入相關(guān)jar包->編譯成class文件后放入特定web工程/WEB-INF/classes目錄下->在web工程/WEB-INF/web.xml中部署servlet配置信息,【切記:項(xiàng)目的根路徑為/表示http://127.0.0.1:8080/web工程名】

  • eclipse創(chuàng)建servlet流程(第三種開(kāi)發(fā)方式):

????????新建web工程項(xiàng)目(自動(dòng)生成web項(xiàng)目架構(gòu),不需要普通開(kāi)發(fā)中的手動(dòng)創(chuàng)建)->綁定tomcat服務(wù)器(解決了普通開(kāi)發(fā)流程中的手動(dòng)添加jar包并發(fā)布項(xiàng)目至服務(wù)器的過(guò)程)->創(chuàng)建一個(gè)servlet類(lèi)(eclipse插件自動(dòng)繼承并生成指定的url映射和實(shí)現(xiàn)相關(guān)方法,不需要普通開(kāi)發(fā)中手動(dòng)編程和web.xml配置)

  • 結(jié)論

????????使用eclipse開(kāi)發(fā)大大提高了開(kāi)發(fā)效率,但是我們也一定要了解普通開(kāi)發(fā)流程,這樣才能更好的理解servlet開(kāi)發(fā)的底層實(shí)現(xiàn),為框架學(xué)習(xí)打下基礎(chǔ)!


? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 附錄:對(duì)上述3的補(bǔ)充即完整的Servlet運(yùn)行機(jī)制

? ? ? ? 瀏覽器發(fā)送http請(qǐng)求->web服務(wù)器接收請(qǐng)求轉(zhuǎn)發(fā)至->Servlet容器->實(shí)例化一個(gè)Servlet對(duì)象->調(diào)用init()方法初始化Servlet的web.xml配置參數(shù)信息->調(diào)用service()方法獲取請(qǐng)求信息,并且向?yàn)g覽器生成響應(yīng)

  • Servlet容器自動(dòng)生成HttpServletRequest對(duì)象封裝請(qǐng)求信息->當(dāng)要在服務(wù)器端顯示中文時(shí)候調(diào)用request.setCharacterEncoding("utf-8")方法解決亂碼問(wèn)題->當(dāng)要獲取封裝的請(qǐng)求信息調(diào)用request.getParameter("xx")方法->當(dāng)要獲取Servlet容器自動(dòng)生成的session對(duì)象的時(shí)候調(diào)用HttpSession session = request.getSession()方法->當(dāng)要讀取保存在客戶端瀏覽器的所有Cookie對(duì)象和值的時(shí)候調(diào)用Cookie[] cookies = request.getCookies()。
  • ?Servlet容器中自動(dòng)生成HttpServletResponse對(duì)象封裝響應(yīng)信息->當(dāng)要獲取輸出流打印內(nèi)容到瀏覽器界面時(shí)候調(diào)用PrintWriter out = response.getWriter()和out.println("<h1>hello world<h1>")方法->當(dāng)打印的信息出現(xiàn)中文亂碼的時(shí)候調(diào)用->response.setCharacterEncoding("utf-8")和response.setContentType("text/html")->當(dāng)要綁定Cookie值到瀏覽器中調(diào)用response.addCookie(cookie)->當(dāng)瀏覽器Cookie被禁用時(shí)候調(diào)用response.encodeURL()。
  • ?Servlet容器中自動(dòng)生成HttpSession對(duì)象并為該對(duì)象分配一個(gè)唯一的Session ID,將其作為Cookie自動(dòng)發(fā)送給瀏覽器】->Servlet將響應(yīng)結(jié)果返回至容器->容器再將結(jié)果返回至客戶端界面顯示->最后響應(yīng)結(jié)束關(guān)閉web服務(wù)器時(shí)會(huì)自動(dòng)調(diào)用destroy()銷(xiāo)毀servlet對(duì)象【如果同一時(shí)間收到另一個(gè)請(qǐng)求信息,servlet對(duì)象不另外生成且init()方法也不再執(zhí)行

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的什么是Servlet?对Servlet技术的浅尝解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。