欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

myeclipse開發(fā)servlet_動力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年07月26日 10:50:01   作者:fjdingsd  
MyEclipse,是在eclipse基礎(chǔ)上加上自己的插件開發(fā)而成的功能強(qiáng)大的企業(yè)級集成開發(fā)環(huán)境,主要用于Java、Java EE以及移動應(yīng)用的開發(fā)。下面這篇文章主要給大家介紹了關(guān)于myeclipse開發(fā)servlet的相關(guān)資料,需要的朋友可以參考下。

  在web.xml中可以對同一個(gè)Servlet配置多個(gè)對外訪問路徑,并如果在web.xml中配置的信息服務(wù)器會自動加載部署,而如果是在Servlet中進(jìn)行程序代碼的修改,則每次都要重新部署。

  首先,在使用MyEclipse創(chuàng)建Servlet后,會根據(jù)所創(chuàng)建的Servlet進(jìn)行到web.xml文件的映射,如下圖所示:

  

經(jīng)過這個(gè)映射之后,在web.xml文件中就自動生成了這個(gè)Servlet的配置信息:

  

  當(dāng)然,我們可以在web.xml文件中把這個(gè)Servlet繼續(xù)添加一條對外訪問路徑,使得這個(gè)Servlet可以從不同路徑進(jìn)行訪問,現(xiàn)在我們在服務(wù)器開啟的情況下,為這個(gè)Servlet添加一個(gè)新的對外訪問路徑好了:

  

紅框部分是新添加的,這時(shí)候服務(wù)器在Console窗口會自動提示已經(jīng)重新部署,是的,只要在web.xml中修改的都無需關(guān)閉服務(wù)器就可以被服務(wù)器重新更新加載部署:

  

那么我們試試新的訪問地址:

  

可以訪問?。?/p>

  細(xì)節(jié)二:在web.xml中為Servlet配置對外訪問路徑的<url-pattern>可以使用“*”作為通配符,但是這種只能有兩種格式:

  一種格式是整個(gè)內(nèi)容只能有“*.擴(kuò)展名” ,如<url-pattern>*.html<url-pattern>,而如果寫成這樣<url-pattern>abc/*.html<url-pattern>就是錯(cuò)誤的。尤其是<url-pattern>/*.html<url-pattern>也是錯(cuò)誤的,不能有“/”,一定要注意。例:

  

在瀏覽器可以在通配符位置隨便輸入:

  

這樣造成了一種偽靜態(tài)的現(xiàn)象,我們以為是訪問一個(gè)靜態(tài)的頁面,其實(shí)卻是一個(gè)動態(tài)web資源。

  另一種格式是以正斜線“/”開頭,加自定義路徑,以“/*”結(jié)尾,如<url-pattern>/abc/*<url-pattern>。這時(shí)候連擴(kuò)展名都任意了。例:

  

在瀏覽器的地址欄內(nèi)可以在通配符位置隨便輸入,擴(kuò)展名都不需要:

  

  

  細(xì)節(jié)三:由細(xì)節(jié)二導(dǎo)出的多個(gè)Servlet資源的映射路徑如果使用了通配符,就可能發(fā)生沖突,那么這時(shí)候服務(wù)器將會以哪個(gè)Servlet資源作為響應(yīng)呢?我們看一下下面的問題,就能明白了:

  

  細(xì)節(jié)四: 在Servlet的整個(gè)生命周期內(nèi),Servlet的init()方法只會被調(diào)用一次。而對于Servlet的每次訪問請求,Servlet都會調(diào)用service()方法一次。并對于每次的請求訪問,Servlet都會創(chuàng)建一個(gè)新的HttpServletRequest請求對象和新的HttpServletResponse響應(yīng)對象。當(dāng)然在每次請求訪問完成之后,這些請求對象和響應(yīng)對象會立馬被銷毀,等待下次請求再重新創(chuàng)建,這樣就能給服務(wù)器減小壓力(非并發(fā)情況下)。

  細(xì)節(jié)五:之前談到的Servlet在服務(wù)器部署后,都是只在第一次對該Servlet訪問時(shí)才由服務(wù)器創(chuàng)建Servlet的實(shí)例對象,而如果在web.xml中在某個(gè)<servlet>標(biāo)簽下配置<load-on-startup>標(biāo)簽,則該Servlet會在服務(wù)器啟動后就創(chuàng)建實(shí)例對象,并執(zhí)行Servlet的初始化init()方法。<load-on-startup>的內(nèi)容為一個(gè)正整數(shù)值。該值越小,代表在服務(wù)器啟動后優(yōu)先創(chuàng)建Servlet對象并執(zhí)行初始化方法。

  細(xì)節(jié)六:如果某個(gè)Servlet的映射路徑僅僅為一個(gè)正斜線“/”,那么這個(gè)Servlet就稱為當(dāng)前web應(yīng)用的默認(rèn)Servlet。凡是在web.xml文件中找不到匹配的<servlet-mapping>標(biāo)簽的URL,它們的訪問請求都是交個(gè)默認(rèn)Servlet來處理,也就是說默認(rèn)Servlet用于處理所有其他Servlet都不處理的訪問請求。

  例如我現(xiàn)在創(chuàng)建兩個(gè)Servlet,其中一個(gè)有自定義的對外映射路徑,而另一個(gè)設(shè)置成了默認(rèn)Servlet:

  

要想訪問SecondServlet就必須按照其對應(yīng)的路徑在瀏覽器地址欄中鍵入:

  

而對于默認(rèn)Servlet,則是在web應(yīng)用名后隨便輸:

  

(如果不輸則會顯示的是已有的首頁index.jsp,為什么呢,請看下面細(xì)節(jié)六)

  細(xì)節(jié)六(重要) :如果我們在自己開發(fā)的Servlet中沒有配置默認(rèn)Servlet,而是直接訪問我們web工程下的一個(gè)靜態(tài)web資源的話(如果有),那么我們將能從瀏覽器中看到這個(gè)web資源,記?。赫埱笕魏蝫eb資源都是以某個(gè)Servlet來響應(yīng)回傳數(shù)據(jù)的,那么既然我們沒有配置默認(rèn)Servlet的話,為什么能訪問到這個(gè)資源呢?換句話說,是哪個(gè)Servlet將我們需要的資源響應(yīng)給我們看的?答案就是Tomcat服務(wù)器的默認(rèn)Servlet?。?!Tomcat服務(wù)器的默認(rèn)Servlet在Tomcat的【conf】目錄下的web.xml文件中設(shè)置了映射路徑:

  

  從Tomcat的web.xml文件中可以看出,其默認(rèn)Servlet在服務(wù)器啟動就創(chuàng)建實(shí)例對象,并且是最早創(chuàng)建的,對外路徑已經(jīng)設(shè)置了默認(rèn)格式。而這個(gè)默認(rèn)Servlet會管理每個(gè)自定義創(chuàng)建的Servlet工程,如果我們沒有在自己的web工程中創(chuàng)建默認(rèn)Servlet,那么要訪問自己web工程中的某個(gè)資源時(shí),Tomcat的默認(rèn)Servlet會幫我們將該資源封裝成響應(yīng)對象傳回客戶端。

  例如,我在我的web工程下創(chuàng)建一個(gè)1.html頁面:

  

而我去瀏覽器訪問這個(gè)頁面:

   

  對于這個(gè)URL,Tomcat服務(wù)器首先去配對我的Servlet是否有對應(yīng)的映射路徑,如果沒有,并且如果我沒有在自己的web工程中設(shè)置默認(rèn)Servlet,那么Tomcat的默認(rèn)Servlet就在我的web應(yīng)用下搜尋HTTP請求的資源,找到并封裝成響應(yīng)對象返回給客戶端。如果Tomcat的默認(rèn)Servlet找不著所需的資源,那它依然會響應(yīng)客戶端,只是客戶端看到的是一些提示找不著該資源,如404提示。另外,根據(jù)這個(gè)過程,我們在開發(fā)自己的Servlet時(shí),建議不要將自己的某個(gè)Servlet映射成默認(rèn)Servlet為好。

  接下來,討論一個(gè)首頁的問題。除了我們訪問web應(yīng)用中某個(gè)特定資源(在瀏覽器地址上最后鍵入一個(gè)文件名),還會是在鍵入web應(yīng)用名之后就發(fā)送HTTP請求了,這時(shí)候我們看到的也是一個(gè)頁面,通常稱為“首頁”,而這個(gè)首頁,也是由默認(rèn)Servlet來響應(yīng)的。

  例如我使用MyEclipse創(chuàng)建一個(gè)web應(yīng)用時(shí)就會默認(rèn)幫我創(chuàng)建一個(gè)“index.jsp”文件:

  

而我在該web應(yīng)用中沒有創(chuàng)建任何Servlet,或者即使創(chuàng)建Servlet也映射到某個(gè)特定的對外URL上,那么我在瀏覽器輸入主機(jī)地址+web應(yīng)用名依然能看到這個(gè)index.jsp:

  

由前面所說,這個(gè)頁面肯定是由Tomcat服務(wù)器的默認(rèn)Servlet傳回給客戶端的,那么Tomcat服務(wù)器為什么是傳回這個(gè)資源呢,而不是別的資源呢?答案還是在web.xml文件中,還記得之前《Tomcat詳細(xì)用法學(xué)習(xí)(三)》中定義的首頁設(shè)置嗎,對,就是這個(gè)方法,這個(gè)方法由默認(rèn)Servlet來管理,我們再來回顧下在Tomcat的web.xml文件中的<welcome-file-list>標(biāo)簽:

  

  如果瀏覽器的輸入地址只輸入了web應(yīng)用名,那么Tomcat的默認(rèn)Servlet傳送這個(gè)web應(yīng)用下的index.html文件,否則傳送index.htm文件,再否則傳送index.jsp,如果三個(gè)都沒有那么只能返回404了。

  如果我把這段代碼注釋掉或刪掉,再想直接訪問web應(yīng)用名就跟我把index.jsp文件刪除一樣,Tomcat的默認(rèn)Servlet找不到資源,返回404提示(在MyEclipse中需要重啟服務(wù)器):

  

  

所以如果我們想為自己的web應(yīng)用弄出個(gè)漂亮首頁,只需要在index.jsp中開發(fā)就行了,或者另外創(chuàng)建一個(gè)index.html文件開發(fā),這個(gè)文件會比index.jsp更優(yōu)先被訪問。

  細(xì)節(jié)七:因?yàn)槲覀兊拈_發(fā)Servlet都要繼承Servlet接口的某個(gè)實(shí)現(xiàn)類,那么我們在編寫doGet方法或者doPost方法的時(shí)候很可能調(diào)用了某些會拋出異常的方法,那么我們對這些異常只能捕獲處理,而不能拋出,這是因?yàn)樽宇愒诟采w父類的方法時(shí),不能拋出比父類更多的異常。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

相關(guān)文章

  • Spring高級接口Aware淺析

    Spring高級接口Aware淺析

    通過aware接口可以獲取Spring容器相關(guān)信息,但這樣會與Spring容器耦合,這篇文章主要介紹了Spring aware接口理解,需要的朋友可以參考下
    2023-01-01
  • Spring Boot集成Swagger2項(xiàng)目實(shí)戰(zhàn)

    Spring Boot集成Swagger2項(xiàng)目實(shí)戰(zhàn)

    在日常的工作中,我們往往需要給前端(WEB端、IOS、Android)或者第三方提供接口,這個(gè)時(shí)候我們就需要給他們提供一份詳細(xì)的API說明文檔。這篇文章我們就來分享一種API文檔維護(hù)的方式,即通過Swagger來自動生成Restuful API文檔
    2018-01-01
  • 基于javaweb+jsp的游泳館會員管理系統(tǒng)(附源碼)

    基于javaweb+jsp的游泳館會員管理系統(tǒng)(附源碼)

    這篇文章主要介紹了基于javaweb+jsp的游泳館會員管理系統(tǒng),開發(fā)工具eclipse/idea/myeclipse/sts等均可配置運(yùn)行,此源代碼社和課程設(shè)計(jì),大作業(yè)及畢業(yè)設(shè)計(jì)項(xiàng)目,需要的朋友可以參考下
    2022-04-04
  • Spring整合redis的操作代碼

    Spring整合redis的操作代碼

    這篇文章主要介紹了Spring整合redis的操作代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Java經(jīng)典面試題匯總:Spring MVC

    Java經(jīng)典面試題匯總:Spring MVC

    本篇總結(jié)的是Spring MVC框架相關(guān)的面試題,后續(xù)會持續(xù)更新,希望我的分享可以幫助到正在備戰(zhàn)面試的實(shí)習(xí)生或者已經(jīng)工作的同行,如果發(fā)現(xiàn)錯(cuò)誤還望大家多多包涵,不吝賜教,謝謝
    2021-07-07
  • java解析任意層數(shù)json字符串的方法

    java解析任意層數(shù)json字符串的方法

    一個(gè)方法解析任意層數(shù)的json字符竄:使用正則表達(dá)式,遞歸算法,將jsonArray解析出后添加到List, JsonObject添加至Map
    2014-02-02
  • java連連看游戲菜單設(shè)計(jì)

    java連連看游戲菜單設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了java連連看游戲菜單部分的設(shè)計(jì)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • java編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法

    java編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法

    下面小編就為大家?guī)硪黄猨ava編程中字節(jié)流轉(zhuǎn)換成字符流的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • springboot實(shí)現(xiàn)注冊加密與登錄解密功能(demo)

    springboot實(shí)現(xiàn)注冊加密與登錄解密功能(demo)

    這篇文章主要介紹了springboot實(shí)現(xiàn)注冊的加密與登錄的解密功能,本文通過demo實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn)

    java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn)

    在前后端分離的開發(fā)中,經(jīng)常會遇到需要從后端返回圖片流給前端的情況,下面這篇文章主要給大家介紹了關(guān)于java后端調(diào)用第三方接口返回圖片流給前端的具體代碼實(shí)現(xiàn),需要的朋友可以參考下
    2024-02-02

最新評論