国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ServletContext 與application的異同

2019-11-14 10:35:51
字體:
供稿:網(wǎng)友

servletContext接口是Servlet中最大的一個接口,呈現(xiàn)了web應(yīng)用的Servlet視圖。ServletContext實(shí)例是通過getServletContext()方法獲得的,由于HttpServlet繼承Servlet的關(guān)系GenericServlet類和HttpServlet類同時具有該方法。

條件:假設(shè)說我們有一個WEB應(yīng)用,這個WEB應(yīng)用中有10個SERVLET 在這里,這個WEB應(yīng)用就擁有一個它自己的倉庫-ServletContext,而這10個Servlet則共享這個大倉庫,并且各自擁有屬于他們自己的小倉庫-ServletConfig。 ServletContext就是一個全局的概念,它屬于應(yīng)用,但我們有時候不想讓某些參數(shù)被其他Servlet應(yīng)用,僅僅想在自己的Servlet中被共享,這時候就需要把它保存在ServletConfig中,換句話說,從【一個Servlet】來看,ServletConfig是它的全局,而從一個【Servlet集合(Web應(yīng)用)】來看,ServletContext是它的全局。 個人觀點(diǎn),僅供參考。

是這樣的,假設(shè)現(xiàn)在要運(yùn)行一個應(yīng)用。 1.Tomcat啟動→讀入xml文件 2.容器為這個應(yīng)用建立一個新的ServletContext實(shí)例,應(yīng)用的所有部分都共享這個上下文 3.如果xml中有定義上下文的初始參數(shù),則容器首先創(chuàng)建初始參數(shù)實(shí)例(應(yīng)該就像一個Bean一樣) 4.把初始化參數(shù)實(shí)例的引用交給ServletContext 5.容器建立一個新的servlet,這時建立一個新的ServletConfig對象,并且為這個ServletConfig對象提供一個ServletContext的引用 6.調(diào)用servlet的init()方法初始化servlet 由第5步可以看出,每個servlet中都有一個上下文(ServletContext)的引用,因此,servlet都知道這個上下文。 但是ServletContext的實(shí)例比Servlet先誕生,所以ServletContext誕生的時候并不知道Servlet的存在。 在java EE API文檔中 ServlectContext擁有獲得Servlet的方法 例如:Servlet getServlet(String name) 但是,這一類的方法已經(jīng)廢棄了,從注釋中可以看出,原先的這些方法返回的值是null,也就是無法獲得servlet 因此,ServlectContext誕生的時候并不知道Servlet的存在,它的誕生僅僅是因?yàn)槿萜髡Q生了~~ 我個人感覺,ServletContext中并沒有Servlet的信息,相反,每個Servlet中都持有ServletContext的引用。

在HeadFirstjsp中有一個說法我覺得不錯,ServletContext就像一塊布告欄,你可以往上貼布告,走過的人都可以看到它!

servlet上下文,是針對servletconfig而提出來的,因?yàn)槿萜髟谂渲梦募刑崛〉某跏蓟瘏?shù)保存在了servletconfig對象中,但由于初始化參數(shù)只針對某個具體的servlet而言,別的servlet是訪問不到這個參數(shù)的,所以為了提供一個可以供全體servlet使用的對象--這個對象也可以從配置文件中獲取參數(shù),哪個老外就弄出了一個servletcontext對象,并把它稱為上下文或者應(yīng)用上下文,其實(shí)就這么簡單。只不過大家現(xiàn)在所聽到的所看到的上下文被形態(tài)化了,經(jīng)典話了而已。追起本質(zhì),還是很好理解的。

ServletContext 與application的異同 

相同:其實(shí)servletContext和application 是一樣的,就相當(dāng)于一個類創(chuàng)建了兩個不同名稱的變量。在 

      servlet中ServletContext就是application對象。大家只要打開jsp編譯過后生成的Servlet中的

      _jspService()方法就可以看到如下的聲明:            ServletContextapplication = null;

            application= pageContext.getServletContext(); 

不同:兩者的區(qū)別就是application用在jsp中,servletContext用在servlet中。application和page  

      requestsession 都是JSP中的內(nèi)置對象,在后臺用ServletContext存儲的屬性數(shù)據(jù)可以用  

      application對象獲得。   

而且application的作用域是整個Tomcat啟動的過程。例如:ServletContext.setAttribute("username",username);則在JSP網(wǎng)頁中可以使用  application.getAttribute("username");

來得到這個用戶名。

轉(zhuǎn)載自

http://tianxingzhe.blog.51cto.com/3390077/1659348/


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 广东省| 平和县| 河南省| 潢川县| 木兰县| 长乐市| 海兴县| 苍溪县| 商洛市| 和政县| 曲阜市| 黔江区| 同江市| 印江| 昂仁县| 永福县| 苏尼特右旗| 米泉市| 台前县| 西充县| 尚义县| 长春市| 兴安盟| 积石山| 阿拉善左旗| 乡城县| 双柏县| 渑池县| 赞皇县| 三河市| 刚察县| 黄石市| 抚远县| 旬邑县| 景德镇市| 西宁市| 洪江市| 来凤县| 宁德市| 蚌埠市| 盐山县|