1. asp.net 伺服器控制項 在用js賦值後,後台如何取出該控制項的值
下面是一個例子
http://www.w3school.com.cn/tiy/t.asp?f=html_input_disabled
主要來說就是Enable="false"時候,不會回傳,你把上面的disabled="disabled"去掉後再次運行就會傳值給伺服器了。
這是Textbox 微軟去Text的源碼,對於TextBox來說,它的值保存在ViewState對象裡面,而ViewState是一個跟蹤對象狀態的鍵值對
/// <devdoc>
/// <para> Gets
/// or sets the text content of the text box.</para>
/// </devdoc>
[
Localizable(true),
Bindable(true, BindingDirection.TwoWay),
WebCategory("Appearance"),
DefaultValue(""),
WebSysDescription(SR.TextBox_Text),
PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty),
Editor("System.ComponentModel.Design.MultilineStringEditor," + AssemblyRef.SystemDesign, typeof(UITypeEditor))
]
public virtual string Text {
get {
string s = (string)ViewState["Text"];
return((s == null) ? String.Empty : s);
}
set {
ViewState["Text"] = value;
}
}
2. 如何在html中獲取jsp中的session的值
伺服器跟蹤用戶狀態有好幾種方法,其中一種就是,伺服器保持session,給客戶端一個sessionid,客戶端每次發送請求時,會把這個sessionid提交給伺服器(這是瀏覽器乾的事),伺服器根據這個sessionid找到相應的session,如果你用的jsp,jsp引擎(比如tomcat)會吧這個session作為一個實例變數放到jsp頁面里,你可以直接使用。如果是html文件,jsp引擎會直接發送給客戶端html文件的內容。
客戶端的js訪問cookie的方法只能訪問存儲在客戶端的cookie(使用js或session的cookie存儲的)。
一般來說,只有伺服器端的CGI程序(ASP、PHP、JSP)具有session會話功能,用來保存用戶在網站期間(會話)的活動數據信息,而對於數量眾多的靜態頁面(HTML)來說,只能使用客戶端的cookies來保存臨時活動數據,但對於cookies的操作是個很煩瑣的過程,遠沒有對於session操作那樣簡便。
為此,本文向讀者推薦一種在DHTML中的解決方案「Persistence技術」,使得在靜態頁面中也能使用session會話功能。
使用保持(Persistence)技術讓我們能夠在當前會話過程中保存一些數據對象到客戶端,它減少了對伺服器的訪問請求,充分發揮了客戶端計算機的數據處理能力,從而也整體提升了頁面顯示效率。
Microsoft Internet Explorer 5瀏覽器和以後的版本都支持使用狀態保持(Persistence)技術,它有以下幾種行為可供調用:
saveFavorite—當頁面被添加到收藏夾時保存頁面狀態和信息
saveHistory—在當前會話中保存頁面狀態和信息
saveSnapshot—當頁面被保存到硬碟時,保存頁面狀態和信息persists
page state and information directly in the page when users save the Web page to
their hard disk.
userData—在當前會話中用XML格式保存頁面狀態和信息 網頁製作
Persistence技術打破了以前使用使用cookies和session的傳統,它繼承了以前cookies的一些安全策略,同時也增加了存儲和管理數據的能力。我們的每個頁面有64KB的用戶數據存儲容量,對於每個站點總計有640KB的存儲上限。
Persistence技術存儲的數據格式符合XML標准,所以可以使用DOM技術中的getAttribute和setAttribute方法來存取數據。
下面是一個Persistence技術的典型應用,通過對Persistence存儲數據的分析,使得靜態頁面具有驗證功能。
實際判斷過程是這樣的:
有三個對象:遊客V、導航頁面A、內容頁面C
遊客V只能通過導航頁面A的鏈接才能看到內容頁面C;
如果遊客V是通過其它途徑來訪問內容頁面C(比如通過其它網站的超鏈接、直接在IE地址欄中輸入網址訪問等),內容頁面C將自動提示版權信息,顯示空白頁。
具體實現步驟:
一、在「導航頁面」中加入一個STYLE用來定義persistent類,同時加入存儲函數fnSave用來授權。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT language=Javascript>
網頁編程
function fnSave(){
oPersistDiv.setAttribute("bIsValid","true");
oPersistDiv.save("oXMLStore");
}
</SCRIPT>
二、在「導航頁面」的<body>和</body>區域中定義一個層用來標識Persistence對象
<DIV CLASS=userData ID="oPersistDiv"></DIV>
三、在「導航頁面」的超鏈接屬性中加入一條語句用來調用函數fnSave:
<a href='redhat2.htm' onmousedown="fnSave()">
接下來,為「內容頁面」加入驗證功能:
四、在「內容頁面」中加入一個STYLE用來定義persistent類,同時加入存儲函數fnLoad用來判斷合法性。
<STYLE>
.userData {behavior:url(#default#userdata);}
</STYLE>
<SCRIPT>
var bPageValid=false;
function fnLoad(){
oPersistDiv.load("oXMLStore");
if((oPersistDiv.getAttribute("bIsValid"))&&(oPersistDiv.getAttribute("bIsValid")=="true")){
bPass=true;
網頁模板
}
else{
bPass=false;
}
oPersistDiv.setAttribute("bIsValid","false");
oPersistDiv.save("oXMLStore");
if(bPass==false){
var sError="來源不明,請您通過授權網站訪問我們.";
alert(sError);
location.href="about:blank";
}
}
</SCRIPT>
五、修改「內容頁面」的<body>區域如下:
<BODY onload="fnLoad()">
<DIV CLASS=userData ID="oPersistDiv"></DIV>
從以上範例可看出,通過persistence的使用,使得普通的靜態內容頁面具有了session功能,一般的不敏感信息完全可以通過session保存在客戶端。
另外,如果不明白persistence的使用,也可以這樣,你的首頁上有個form,用來提交用戶名和密碼。如果你把首頁換成html頁面,完全可以,不過要在其他地方接收用戶名和密碼(比如logon.jsp)。form的action設為logon.jsp。很簡單。使用form的action來轉移接受session的地方,首頁就可以用靜態了