最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談一下Servlet的定義以及運(yùn)行原理

 更新時(shí)間:2023年03月24日 09:22:24   作者:洋柿子0826  
相信有很多剛?cè)胄械呐笥褧?huì)疑惑Servlet到底是個(gè)什么意思,那么這篇文章就來淺談一下到底什么是Servlet,以及Servlet的原理與如何寫一個(gè)Servlet,,需要的朋友可以參考下

1.什么是servlet?

sun(oracle)公司制訂的一種用來擴(kuò)展web服務(wù)器端功能的組件規(guī)范。

背景:

image

常用的web服務(wù)器:

  • apache http Server
  • nginx:俄羅斯小伙子寫的
  • IIS

以上服務(wù)器只能處理靜態(tài)的資源請(qǐng)求。網(wǎng)頁(yè)要提前寫好,不能動(dòng)態(tài)生成。

web服務(wù)器需要處理動(dòng)態(tài)的資源請(qǐng)求。頁(yè)面并不是提前寫好,需要計(jì)算。我們的web服務(wù)器不能做到這一點(diǎn),所以需要擴(kuò)展。

1.1 擴(kuò)展web服務(wù)器端功能

web服務(wù)器端(比如apache http webServer,nginx,iis等)只能夠處理靜態(tài)資源的請(qǐng)求,不能夠處理動(dòng)態(tài)資源的請(qǐng)求。所以需要擴(kuò)展web服務(wù)器的功能來處理動(dòng)態(tài)資源的請(qǐng)求。

注:靜態(tài)資源,指的是需要事先將網(wǎng)頁(yè)寫好。動(dòng)態(tài)資源:指的是需要經(jīng)過計(jì)算,動(dòng)態(tài)生成相應(yīng)的網(wǎng)頁(yè)。

注:servelet出現(xiàn)之前,如何處理這些動(dòng)態(tài)的請(qǐng)求呢?早期使用CGI(Common GateWay Interface-通用網(wǎng)關(guān)接口)程序來擴(kuò)展。CGI程序開發(fā)復(fù)雜,移植性差,很少用了

1.2 servlet組件

符合相應(yīng)的規(guī)范,具有部分功能的,并且需要部署到相應(yīng)的容器里面才能運(yùn)行的軟件模塊。比如servlet就是一個(gè)組件,需要符合servlet規(guī)范,并且需要部署到servlet容器里面才能運(yùn)行。

注:容器:符合相應(yīng)的規(guī)范,提供組件運(yùn)行環(huán)境的程序。比如Tomcat就是比較有名的servlet容器。jetty jboss weblogic都是servlet容器。這些servlet把網(wǎng)絡(luò)相關(guān)的問題已經(jīng)全部處理好,我們寫servlet只需要關(guān)注業(yè)務(wù)邏輯即可。

2.如何寫一個(gè)servlet?

寫一個(gè)java類,需要實(shí)現(xiàn)Servlet接口或者繼承HttpServlet類。編譯。打包(將這個(gè)java類變成servlet組件)

注:創(chuàng)建一個(gè)具有如下結(jié)構(gòu)的文件夾:

appname(文件夾名字,可以自定義) WEB-INF(appname下面的子文件夾,是固定的) classes(該文件夾放之前寫好的java類的字節(jié)碼文件)lib(里面放的是一些需要用到的jar包)web.xml(用來描述servlet)

image

部署:將第三部創(chuàng)建好的文件夾拷貝到servlet容器指定的文件夾下面。(注:可以將第三步創(chuàng)建好的文件夾先使用jar命令壓縮成以".war"結(jié)尾的文件,然后再拷貝。)啟動(dòng)servlet容器,訪問servlet。

http://ip:port/appname(文件夾的名字)/servlet-url(或者url-pattern,會(huì)在web.xml中描述)

image

3.servlet是如何運(yùn)行的?

打開瀏覽器,輸入http://ip:port/servlet01/hello

image

  1. 瀏覽器依據(jù)ip,port建立與容器(同時(shí)也是一個(gè)簡(jiǎn)單的web server)之間的連接。
  2. 瀏覽器將相關(guān)數(shù)據(jù)打包(按照http協(xié)議將相關(guān)數(shù)據(jù)創(chuàng)建一個(gè)請(qǐng)求數(shù)據(jù)包),然后發(fā)送請(qǐng)求。
  3. 容器 將請(qǐng)求數(shù)據(jù)包解析出來,然后將解析到的數(shù)據(jù)放到請(qǐng)求對(duì)象里面,同時(shí)還會(huì)創(chuàng)建一個(gè)響應(yīng)對(duì)象response。
  4. 容器創(chuàng)建servlet對(duì)象,然后調(diào)用該對(duì)象的service方法。(注:容器會(huì)將request對(duì)象和response對(duì)象作為參數(shù)傳進(jìn)來。可以通過request對(duì)象獲得請(qǐng)求參數(shù)值,并將處理結(jié)果寫到response對(duì)象中。)
  5. 容器通過response獲取處理結(jié)果,然后打包(響應(yīng)數(shù)據(jù)包)發(fā)送給瀏覽器。
  6. 瀏覽器解析響應(yīng)數(shù)據(jù)包,生成響應(yīng)的頁(yè)面。

4.常見問題

4.1 狀態(tài)碼

是一個(gè)三位數(shù)字,由http協(xié)議指定,表示服務(wù)器處理請(qǐng)求的狀態(tài)。

4.2 404

  • 含義:服務(wù)器依據(jù)請(qǐng)求路徑,找不到對(duì)應(yīng)的資源。
  • 原因:

    a.沒有部署該應(yīng)用。

    b.servlet-name不一致。

    c.路徑寫錯(cuò)。

4.3 500

  • 含義:系統(tǒng)出錯(cuò)(應(yīng)用程序在運(yùn)行中出錯(cuò)了)。
  • 原因: a.servlet類沒有繼承HttpServletb.servlet類出錯(cuò),例如將不合法的字符串轉(zhuǎn)換成數(shù)字。b.servlet類出錯(cuò),例如將不合法的字符串轉(zhuǎn)換成數(shù)字。

4.4 405

  • 含義:找不到service方法。
  • 原因:沒有service方法。

到此這篇關(guān)于淺談一下Servlet的定義以及運(yùn)行原理的文章就介紹到這了,更多相關(guān)Servlet定義和運(yùn)行原理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java多線程實(shí)現(xiàn)同步鎖賣票實(shí)戰(zhàn)項(xiàng)目

    java多線程實(shí)現(xiàn)同步鎖賣票實(shí)戰(zhàn)項(xiàng)目

    本文主要介紹了java多線程實(shí)現(xiàn)同步鎖賣票實(shí)戰(zhàn)項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • SpringBoot配置攔截器的示例

    SpringBoot配置攔截器的示例

    這篇文章主要介紹了SpringBoot配置攔截器的示例,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)

    RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)

    這篇文章主要為大家介紹了RocketMQ特性Broker存儲(chǔ)事務(wù)消息實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • HashSet底層竟然是HashMap實(shí)現(xiàn)問題

    HashSet底層竟然是HashMap實(shí)現(xiàn)問題

    這篇文章主要介紹了HashSet底層竟然是HashMap實(shí)現(xiàn)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 處理java異步事件的阻塞和非阻塞方法分析

    處理java異步事件的阻塞和非阻塞方法分析

    這篇文章主要介紹了處理java異步事件的阻塞和非阻塞方法分析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,阻塞與非阻塞關(guān)注的是交互雙方是否可以彈性工作。,需要的朋友可以參考下
    2019-06-06
  • java 運(yùn)行報(bào)錯(cuò)has been compiled by a more recent version of the Java Runtime

    java 運(yùn)行報(bào)錯(cuò)has been compiled by a more recent version of the J

    java 運(yùn)行報(bào)錯(cuò)has been compiled by a more recent version of the Java Runtime (class file version 54.0)
    2021-04-04
  • SpringBoot整合Redis的步驟

    SpringBoot整合Redis的步驟

    這篇文章主要介紹了SpringBoot整合Redis的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-11-11
  • SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案

    SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案

    這篇文章主要介紹了SpringBoot項(xiàng)目中改變web服務(wù)的路徑的兩種方案,通過代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-08-08
  • GC參考手冊(cè)jvm垃圾回收詳解

    GC參考手冊(cè)jvm垃圾回收詳解

    顧名思義,垃圾收集(Garbage?Collection)的意思就是?——?找到垃圾并進(jìn)行清理。但現(xiàn)有的垃圾收集實(shí)現(xiàn)卻恰恰相反:?垃圾收集器跟蹤所有正在使用的對(duì)象,并把其余部分當(dāng)做垃圾。記住這一點(diǎn)以后,?我們?cè)偕钊胫v解內(nèi)存自動(dòng)回收的原理,探究?JVM?中垃圾收集的具體實(shí)現(xiàn)
    2022-01-01
  • 詳解Java的類加載機(jī)制及熱部署的原理

    詳解Java的類加載機(jī)制及熱部署的原理

    今天我要講的就是Java的熱部署的原理,由于熱部署的原理和類的加載機(jī)制有關(guān),所以打算講一下類加載的機(jī)制,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2021-05-05

最新評(píng)論

大兴区| 平遥县| 伊通| 永和县| 宝兴县| 邳州市| 平武县| 家居| 永安市| 江安县| 台东市| 会东县| 滕州市| 普宁市| 米脂县| 普洱| 同江市| 宁海县| 浦东新区| 岳池县| 丰顺县| 阿合奇县| 明溪县| 乐都县| 肇庆市| 海林市| 石柱| 彭阳县| 乐业县| 都昌县| 吐鲁番市| 宁强县| 句容市| 崇信县| 巴东县| 平定县| 喀喇| 奉化市| 常德市| 巴彦县| 博罗县|