java ee 值范圍_JAVAEE之內置對象和屬性范圍

內置對象和屬性范圍

四種屬性范圍

九個內置對象

1.內置對象

如果說想要使用一個對象,必須new 出來,但是在我們的jsp操作中,發現我們使用過的out,request對象沒有進行實例化,類似于這樣的對象,我們叫做jsp的內置對象,也就是收不需要實例化的對象,總共有9個。

序號

對象

類型

1

pageContext

javax.servlet.jsp.PageContext

2

request

javax.servlet.http.HttpServletRequest

3

response

javax.servlet.http.HttpServletResponse

4

session

javax.servlet.http.HttpSession

5

application

javax.servlet.ServletContext

6

config

javax.servlet.ServletConfig

7

out

javax.servlet.jsp.jspWriter

8

page

java.lang.Object

9

exception

java.lang.Throwable

2.屬性范圍

在jsp中,有四種屬性范圍,所謂屬性范圍,就是指在一個jsp中設置了屬性,是否可以在其他頁面能夠訪問。四種屬性范圍分別指的是以下的四種:

·屬性范圍在當前頁面有效:設置了一個屬性,在設置屬性的頁面可以取得屬性,跳轉到其他頁面則無法取得設置的屬性

·屬性范圍在服務端跳轉范圍內有效:一個頁面設置了屬性,然后經過服務端跳轉(n次),依然可以取得設置的屬性

·屬性范圍在一次會話中有效:一個頁面設置屬性,無論是經過服務端還是客戶端跳轉,只要瀏覽器不重啟,設置的屬性都可以取得。

·屬性范圍在服務器上下文中有效:頁面設置的屬性,無論是經過客戶端還是服務端跳轉,無論是哪一個會話,只要服務器不重啟,設置的屬性都可以訪問。

NO

方法

描述

1

public void setAttribute(String name,Object val)

設置屬性

2

pulblic Object getAttribute(String name)

取得屬性

3

public void removeAttribute(String? name)

刪除屬性

2.1page屬性范圍

page屬性范圍也就是我們上面所提到的第一種屬性范圍,使用的是pageContext這個內置對象設置和取得的,指的是在一個頁面使用pageContext設置了屬性之后,本頁面可以通過pageContext取得設置的屬性,跳轉到其他頁面之后無法取得設置的屬性。要注意的一點,所謂的page屬性范圍使用的是pageContext這個內置對象設置和取得的。

//設置屬性

pageContext.setAttribute("company","廈門");

pageContext.setAttribute("address","廈門市");

pageContext.setAttribute("tel","0592-2565166");%>

如果現在我們通過服務端跳轉,看能不能取得設置的屬性

這是pageAttributeDemo02.jsp

發現我們通過服務端跳轉后取不到之前設置的page范圍的屬性了,如果說想要通過服務端跳轉后也能取得設置的屬性,我們必須使用第二種屬性范圍。

2.2request屬性范圍

request屬性范圍,是第二種屬性范圍,也就是說設置的屬性在當前頁面可以取得,通過服務端跳轉之后也可以取得設置的屬性。

//設置屬性

request.setAttribute("company","廈門");

request.setAttribute("address","廈門市");

request.setAttribute("tel","0592-2565166");%>

這是pageAttributeDemo02.jsp

通過

//設置屬性

request.setAttribute("company","廈門");

request.setAttribute("address","廈門");

request.setAttribute("tel","0592-2565166");%>

現在,我們發現,request范圍屬性經過多次跳轉之后,依然可以取得設置的屬性,那么現在如果經過客戶端跳轉呢?

//設置屬性

request.setAttribute("company","廈門");

request.setAttribute("address","廈門");

request.setAttribute("tel","0592-2565166");%>

客戶端跳轉

這是requestAttributeDemo03.jsp

通過程序運行結果發現,通過客戶端跳轉不能夠取得設置的request范圍的屬性,那么如果現在我就想要通過客戶端取得設置的屬性呢?那么我們可以使用第三種范圍屬性。

3.session

session屬性范圍就是我們第三種屬性范圍,也就是之前提到過的,屬性范圍在一次會話中有效。是無論經過客戶端還是服務端跳轉,都可以取得設置的屬性,當然前提是瀏覽器不能重啟。

//設置屬性

session.setAttribute("company","廈門");

session.setAttribute("address","廈門");

session.setAttribute("tel","0592-2565166");%>

客戶端跳轉

02

03

以上的程序說明我們session范圍的屬性,在經過客戶端或者服務端跳轉之后,設置的屬性依然可以取得。現在我們來重啟一下瀏覽器:通過操作發現,重啟瀏覽器之后,取不到設置的session范圍屬性了,那么如果現在想要在瀏覽器重啟后取得設置的屬性,我們必須使用第四種屬性范圍。

4.application屬性范圍

application范圍屬性就是第四種范圍屬性,屬性是設置在服務器的上下文中,只要服務器不重啟,那么設置的屬性統統都可以取得。無論是經過客戶端你還是服務端還是瀏覽器重啟,都可取得設置的屬性。

//設置屬性

application.setAttribute("company","廈門");

application.setAttribute("address","廈門");

application.setAttribute("tel","0592-2565166");%>

客戶端跳轉

03

設置的application范圍的屬性,無論是通過客戶端還是服務端或者瀏覽器重啟,都可以取得設置的屬性。那么現在如果服務器重啟呢?通過操作發現,重啟服務器后,之前設置的屬性取不到了,那么如果想要在重啟服務器后取得設置的屬性呢?那是沒有辦法的。

3.屬性范圍使用說明

在開發中,我們常用的屬性范圍就是request和session范圍,那么在開發中,怎么區分使用二者呢?一般來說,只對于同一個功能的屬性的傳遞,使用request范圍屬性。那么對于session范圍來說,主要還是用于登陸上面。

4.關于pageContext屬性的進一步說明

上面我們講解的是四種屬性范圍,實際上四種屬性范圍都是通過pageContext設置的,在pageContext中,setAttribute()方式實際上被重載過:

·設置屬性:

·public abstract void setAttribute(java.lang.String name,? java.lang.Object value)

·public abstract void setAttribute(java.lang.String name,

java.lang.Object value,

int scope)

對于這兩個方法,第一個方法是我們之前一直在使用的,對于第二個方法,相比第一個方法多了一個參數(int scope),實際上這個參數就是指定屬性范圍的參數:

·APPLICATION_SCOPE

·PAGE_SCOPE

·SESSION_SCOPE

·REQUEST_SCOPE

也就是說,通過這個方法,我們可以設置四種屬性范圍。

跳轉

02

總結,知道九個內置對象(pageContext,session,request,response,applicatino,config,page,exception),充分掌握四種屬性范圍(page僅對于自己的頁面傳值;request應用于服務端傳值,但是客戶端跳轉不能傳值;session一般應該于用戶的登錄注冊保存在一次會話中,會話結束,屬性值消失;application屬性范圍應用于整個服務器中,服務器關閉屬性值消失。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536880.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536880.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536880.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JavaWeb學習筆記(九)--HttpServletResponse

web服務器接收到客戶端的HTTP請求,會針對每一次請求,分別創建一個用于代表請求的request對象和代表響應的response對象。 request和response對象既然代表請求和響應,那我們要獲取客戶端提交過來的數據,只需要找request對象即可。要…

java html5 上傳_HTML5結合ajax實現文件上傳以及進度顯示

基于原生html5實現,不需要falsh支持,進度可以自定義顯示,控制靈活, 本來打算使用jquery插件進行異步文件上傳,比如uploadfy但是需要額外的支持,也有人用iframe模仿異步上傳機制,感覺都比較別扭。…

7天玩轉機器學習

7天玩轉機器學習 人工智能時代,數據迎來大爆發,數據對于提升業務價值的重要性與日俱增。但面對海量數據,傳統分析方法已經顯得無能為力,而機器學習的成熟為企業帶來了強大的分析引擎,可在眾多領域幫助企業挖掘數據價值…

centos 6.5 yum java_Centos6.5 yum 安裝jdk1.8

centos 6.5 安裝卸載jdk-- 查看有沒有預裝jdk版本java -version-- 查看已安裝的版本rpm -qa|grep java-- 卸載預裝版本 rpm -e --nodeps 命令卸載rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64-- 查找可以安裝的jdk列表yum search java | grep -i --color J…

java 中使用mongodb_mongodb在java中的使用

agg Aggregation.newAggregation(Aggregation.match(new Criteria().andOperator(Criteria.where("timeStamp").lte(TypeChange.dateToLong(times[1])).gte(TypeChange.dateToLong(times[0])),new Criteria().orOperator(ruleCr))),//篩選符合條件的記錄Aggregation…

一次面試總結(記錄)

1,從一個數組里找重復出現次數最多的一個數?2,常用的linux命令3.垃圾收集器有哪些 ?垃圾收集算法?4,線上服務器變慢了你是如何定位問題并處理的?5,你自己實現一個本地緩存,淘汰最久未使用,你怎么設計6,用棧實現計算器7,剔除二叉樹…

java 累加 0-9 a-z_JAVA獲得包含0-9、a-z、A-Z范圍內字符串的的隨機數實例

一、獲得0-9,a-z,a-z范圍的隨機字符串/*** java獲得0-9,a-z,a-z范圍的隨機數* param length 隨機數長度* return string*/public static string getrandomchar(int length) {char[] chr {0, 1, 2, 3, 4, 5, 6, 7, 8, 9,a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r,…

【PHP 擴展開發】Zephir 基礎篇

上一篇 《Zephir 簡介》 簡單介紹了環境搭建,編寫了一個的簡單示例。這一篇繼續介紹 Zephir 基礎。 基本語法Zephir 中,每個文件都必須有且只有一個類,每個類都必須有一個命名空間,目錄結構必須與所使用的類和命名空間的名稱相匹配…

java常見排序算法有哪些_Java中常用的6種排序算法詳細分解

排序算法很多地方都會用到,近期又重新看了一遍算法,并自己簡單地實現了一遍,特此記錄下來,為以后復習留點材料。廢話不多說,下面逐一看看經典的排序算法:1. 選擇排序選擇排序的基本思想是遍歷數組的過程中&…

python range函數

這個函數很簡單,就不寫例子了,看看語法,拿來即用 python range() 函數可創建一個整數列表,一般用在 for 循環中。 函數語法 range(start, stop[, step]) 參數說明: start: 計數從 start 開始。默認是從 0 開始。例如ra…

java tomcat重啟linux_Linux下tomcat重啟

進入Tomcat下的bin目錄cd/user/local/tomcat/bin關閉tomcat./shutdown.sh查看tomcat是否關閉ps -ef|grep java顯示以下信息,則Tomcat還未關閉root 7010 1 0 Apr19 ? 00:30:13 /usr/local/java/bin/java -Djava.util.logging.config.file/usr/loca…

左偏樹 P3377【模板】左偏樹(可并堆)

題目傳送門 代碼&#xff1a; /* code by: zstu wxk time: 2019/03/01 */ #include<bits/stdc.h> using namespace std; #define Fopen freopen("testdata.in","r",stdin); freopen("_out.txt","w",stdout); #define LL long lo…

lock 線程 java_JAVA多線程-基礎Lock Condition 并發集合

跟上一篇文章比較,這次改進了之前的代碼,使用了Lock Condition 和并發集合.代碼量減了一些,并且更加容易讀了.這篇代碼是上一篇的改進版,邏輯在前篇有說明,以防大家看不到,我再重現貼一遍.后續會使用高階的線程工具再次改進,以求代碼更簡單.代碼的邏輯:1)SProducer不停的產生nu…

mycat mysql ha 方案_7、基于 HA 機制的 Mycat 高可用--mycat

在實際項目中&#xff0c;Mycat 服務也需要考慮高可用性&#xff0c;如果 Mycat 所在服務器出現宕機&#xff0c;或 Mycat 服務故障&#xff0c;需要有備機提供服務&#xff0c;需要考慮 Mycat 集群。1、 高可用方案使用 HAProxy Keepalived 配合兩臺 Mycat 搭起 Mycat 集群&a…

爬蟲scrapy模塊

首先下載scrapy模塊 這里有驚喜 https://www.cnblogs.com/bobo-zhang/p/10068997.html 創建一個scrapy文件 首先在終端找到一個文件夾 輸入 scrapy startproject jy (項目件名) 修改setting文件配置 # Crawl responsibly by identifying yourself (and your website) on the us…

python canvas畫移動物體_如何實現Canvas圖像的拖拽、點擊等操作

上一篇Canvas的博文寫完后&#xff0c;有位朋友希望能對Canvas繪制出來的圖像進行點擊、拖拽等操作&#xff0c;因為Canvas繪制出的圖像能很好的美化。好像是想做爐石什么的游戲&#xff0c;我也沒玩過。Canvas在我的理解中就好像在一張畫布上繪制圖像&#xff0c;它只能看到卻…

Git基礎知識教程整理(Git基本操作)

Git簡介 Git是目前世界上最先進的分布式版本控制系統&#xff08;沒有之一&#xff09;。Linux之父Linux用C語言寫了Git分布式版本控制系統。 分布式版本控制系統與集中式版本控制系統的區別 區別分布式集中式中央服務器有&#xff0c;版本庫集中存放在中央服務器&#xff0c;工…

python plot map_使用matplotlibbasemap在邊界打印

我在繪制多邊形時遇到了困難&#xff0c;例如&#xff0c;在使用matplotlib basemap生成的地圖邊界上繪制多邊形。在下面的示例中&#xff0c;地圖邊界由日期線指定。我試圖通過指定三角形頂點的坐標來繪制一個跨越日期線的三角形。當所有的坐標都在地圖內時&#xff0c;這種方…

SQL查詢語句 group by后, 字符串合并

合并列值 --******************************************************************************************* 表結構&#xff0c;數據如下&#xff1a; id value ----- ------ aa bb aaa bbb ccc 需要得到結果&#xff1a; id values ------ ----------- aa,bb aaa…

Git 基礎 —— 常用命令

Git 基礎學習系列 Git 基礎 —— 安裝 配置 別名 對象Git 基礎 —— 常用命令Git 基礎 —— 常見使用場景Git基礎 —— Github 的使用git init 創建 Git 本地倉庫 遠端無倉庫&#xff0c;本地無倉庫&#xff0c;本地新建一個倉庫 git init git_learning 遠端有倉庫&#xff0c;…