搜尋
首頁Javajava教程最全的java四大域總結(圖文)

最近學完了web部分,發現有些地方總是單一容易理解,可是把所有的放在一起來大雜燴,總是有那麼幾個知識點容易混淆。其實網路上的資料已經夠多了,雖然也不乏辛勞的搬運工。可是最終的目的不就是要我們自身理解嗎?自己理解了的東西才正真是我們的。作為額外的獎勵,我們先來關註一下JSP的九大隱式物件

可以看看下圖中關於JSP的九大隱式對象,它們可總是被老師們說是重點重點哦。

 

作用域------顧名思義,起作用的大小範圍也是!如果是你自己去學習一個知識點,你要達到哪些目標才算是對一個知識點稱得上是懂得,理解,掌握呢?從扁神醫的望聞問切,到資料庫的增刪改查,所有的事物開始也不外乎:是什麼?有什麼用?怎麼用?為什麼可以這麼用?故而,我覺得咱們應該把握以下問題,帶著這些問題去學習,發現自己的不足,才是學習的上策。

1)作用域的實際大小。 (是什麼?)

2)作用域的作用。 (有什麼用?)

3)怎麼使用這些作用域。 (怎麼用?)

4)它這樣使用實作的原則。 (為什麼可以這麼用?)

 

下面開始逐一分析:

(一)servletcontext域(application域)

1)作用域的實際大小。 (是什麼?)

  servletcontext域起作用的範圍是:整個web應用程式。

  資料產生之後,不只等會還要用 ,還要給別人用,則請使用servletcontext。

  它是四個域中範圍最大的域。

2)  作用域的作用。 (有什麼用?

  由於一個web應用中的所有servlet共享同一個servletcontext對象,所以多個servlet通過servletcontext對象實現了數據在不同servlet之間的共享。

3)怎麼使用這些作用域。 (怎麼用?)

  a)可以透過程式設計的方式綁定,也可以作為web應用的全域變量被所有Servlet和JSPs存取

设置Context属性:
              ServletContext application=this.getServletContext();
              application.setAttribute("person1",new Person("Jim"));
              application.setAttribute("person2",new Person("Green"));
 获取Context属性:
              ServletContext application=this.getServletContext();
              Enumberation persons=application.getAttributeNames();
               while(persons.hasMoreElements()){
                      String name=(String)persons.nextElement();
                      Person p=(Person)persons.getAttribute(name);
                      application.removeAttribute(name);
              }

 

  b)為整個web應用程式設定context域:

#######

  修改web.xml設定檔,加入以下內容

  

#    data

        

    


  - param>

##  從Servlet存取這些初始化參數:

#  從Servlet存取這些初始化參數:

#              ServletContext application=this.getServletContext();

              out.println(application.getInitParameter("data"));

 

###  c)讀取資源檔案#########

     使用ServletContext介面可以直接存取web應用程式中的靜態內容文檔結構.包括HTML,GIF和JPEG檔案。下列方法:
         .getResource()
         .getResourceAsStream()
   這兩個方法的參數都是以根的相對路徑.文檔結構可以存在於伺服器檔案系統,或是war套件中,或是在遠端伺服器上,抑或其他位置。不可以用來獲得動態資源,比如,getResource("/index.jsp"),這個方法將返回該jsp文件的源碼,而不是動態頁面.可以用"Dispatching Requests" 獲得動態內容.列出web應用中可被存取的資源,可以使用getResourcePaths(String path)方法。

             

4)使用此使用實作的原則或優點和缺點。 (為什麼可以這麼用?)

  servlet不適合做資料輸出,故需要將資料轉送JSP檔案進行美化再輸出給客戶端。

  JSP中可嵌入java程式碼,這使得它接收java資料變得可能。同時,由於servletcontext域可使整個web應用程式共享該數據,因此而帶來「線程

安全」問題同樣影響對轉發的數據,故而需要使用request域。

 

(二)Httpsession域(session域)

1)作用域的實際大小。 (是什麼?)

  Httpsession的作用域是:一次會話。

  資料產生之後顯示給使用者了,等會還要使用的情況下使用Httpsession域。

  它是四个域中范围第二大的域。

2)  作用域的作用。(有什么用?)

  (会话范围)在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session。如果没有,就在内存中创建一个session并返回。当一短时间内(默认30分钟)session没有被使用,则服务器会销毁该session。若服务器非正常关闭,未到期的session也会跟着销毁。若调用session提供的invalidate()方法,可以立即销毁session。

3)怎么使用这些作用域。(怎么用?)

  a) jsp中操作session
    (String)request.getSession().getAttribute("username"); // 获取
    request.getSession().setAttribute("username", "xxx");  // 设置

   b) java中操作session
    //servlet中
    request.getSession();
    session.getAttribute("username");
    session.setAttribute("username", "xxx");
    session.setMaxInactiveInterval(30*60);
    session.invalidate();
 
    //struts中方法1
    ServletActionContext.getRequest().getSession().setAttribute("username", "xxx");
    ServletActionContext.getRequest().getSession().getAttribute("username");
    ServletActionContext.getRequest().getSession().setMaxInactiveInterval(30*60);
    ServletActionContext.getRequest().getSession().invalidate();

    //struts中方法2
    ActionContext.getContext().getSession().put("username", "xxx");
    ActionContext.getContext().getSession().get("username");
    ActionContext.getContext().getSession().clear();

   c) web.xml中操作session
    <session-config>          <session-timeout>30</session-timeout>      </session-config>   d) tomcat-->conf-->conf/web.xml
    <session-config>        <session-timeout>30</session-timeout>    </session-config>

4)它这样使用实现的原理。(为什么可以这么用?)

  HttpSession在服务器中,为浏览器创建独一无二的内存空间,在其中保存了会话相关的信息。服务器创建session出来后,会把session的id号,以cookie的形式回写给客户机,这样,只要客户机的浏览器不关,再去访问服务器时,都 会带着session的id号去,服务器发现客户机浏览器带session id过来了,就会使用内存中与之对应的session为之服务。如果要问我为什么,我也不知道啊!

(三)ServletRequest域(request域)

1)作用域的实际大小。(是什么?)

  ServletRequset域是:整个请求链(请求转发也存在)。

  数据产生之后,只需要使用一次,这种情况下请使用ServletRequset域。

  它是四個域中範圍排第三的域。

2)  作用域的功能。 (有什麼用?)

  在整個請求鏈中共享資料。

  最常用到:在servlet中處理好的資料交給JSP顯示,此時參數就可以放置在ServletRequset域中帶過去。

3)怎麼使用這些作用域。 (怎麼用?)

  a) 取得客戶機資訊的方法
      getRequestURL方法傳回客戶端發出請求時的完整URL。
      getRequestURI方法傳回請求行中的資源名稱部分。
      getQueryString 方法傳回請求列中的參數部分。
      getRemoteAddr方法傳回發出請求的客戶機的IP位址
      getRemoteHost方法傳回發出請求的客戶機的完整主機名稱
 伺服器的IP位址。
      getLocal
Name方法返回WEB伺服器的主機名稱      getMethod得到客戶機請求方式
   b) 取得客戶機請求頭
  。 ##      getParameterValues(String name)方法
      getParameterNames方法      getParameterMap


#4#它)這樣使用它的原則。 (為什麼可以這麼用?)


  在service方法呼叫前由伺服器創建,傳入service方法。整個請求結束,request生命結束。

 

(四)PageContext域(page域)

1)作用域的实际大小。(是什么?)

  PageContext域的作用范围是:整个JSP页面。

  它是四个域中范围最小的一个域。

2)  作用域的作用。(有什么用?)  
  a) 它可以获取
其它八大隐式对象,可以认为它是一个入口对象。

  b) 获取其它所有域中的数据。

  c) 跳转到其它资源。其身上提供了forword和sendRedirect方法,简化了转发和重定向的操作。 

3)怎么使用这些作用域。(怎么用?)

  以下以一个简单的JSP页面程序为例:

nbsp;html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><title>pageContext对象_例1</title><br>page设定的值:<br>request设定的值:<br>session设定的值:<br>application设定的值:<br>范围1内的值:<br>范围2内的值:<br>范围3内的值:<br>范围4内的值:<br><!--从最小的范围page开始,然后是reques、session以及application-->pageContext修改后的session设定的值:<br>pageContext修改后的application设定的值:<br>值的查找:<br>属性name的范围:<br>

显示结果:

page设定的值:地球
request设定的值:太阳系
session设定的值:银河系
application设定的值:宇宙
范围1内的值:地球
范围2内的值:太阳系
范围3内的值:银河系
范围4内的值:宇宙
pageContext修改后的session设定的值:nullpageContext修改后的application设定的值:宇宙
值的查找:地球
属性name的范围:1

4)它这样使用实现的原理。(为什么可以这么用?)

   pageContext對象,這個對象代表頁面上下文,該對象主要用於存取JSP之間的共享資料。當對JSP的請求時開始,當回應結束時銷毀。

#

以上是最全的java四大域總結(圖文)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
2025年的前4個JavaScript框架:React,Angular,Vue,Svelte2025年的前4個JavaScript框架:React,Angular,Vue,SvelteMar 07, 2025 pm 06:09 PM

本文分析了2025年的前四個JavaScript框架(React,Angular,Vue,Susve),比較了它們的性能,可伸縮性和未來前景。 儘管由於強大的社區和生態系統,所有這些都保持占主導地位,但它們的相對人口

如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復Spring Boot Snakeyaml 2.0 CVE-2022-1471問題已修復Mar 07, 2025 pm 05:52 PM

本文介紹了SnakeyAml中的CVE-2022-1471漏洞,這是一個允許遠程代碼執行的關鍵缺陷。 它詳細介紹瞭如何升級春季啟動應用程序到Snakeyaml 1.33或更高版本的降低風險,強調了依賴性更新

Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

Node.js 20:關鍵性能提升和新功能Node.js 20:關鍵性能提升和新功能Mar 07, 2025 pm 06:12 PM

Node.js 20通過V8發動機改進可顯著提高性能,特別是更快的垃圾收集和I/O。 新功能包括更好的WebSembly支持和精製的調試工具,提高開發人員的生產率和應用速度。

冰山:數據湖桌的未來冰山:數據湖桌的未來Mar 07, 2025 pm 06:31 PM

冰山是用於大型分析數據集的開放式桌子格式,可提高數據湖的性能和可伸縮性。 它通過內部元數據管理解決了鑲木quet/orc的局限

如何在Java中實施功能編程技術?如何在Java中實施功能編程技術?Mar 11, 2025 pm 05:51 PM

本文使用lambda表達式,流API,方法參考和可選探索將功能編程集成到Java中。 它突出顯示了通過簡潔性和不變性改善代碼可讀性和可維護性等好處

如何共享黃瓜中的步驟之間的數據如何共享黃瓜中的步驟之間的數據Mar 07, 2025 pm 05:55 PM

本文探討了在黃瓜步驟之間共享數據的方法,比較方案上下文,全局變量,參數傳遞和數據結構。 它強調可維護性的最佳實踐,包括簡潔的上下文使用,描述性

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前By尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
1 個月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器