Transcript JSP 資料分享I
JSP Programming
共享資訊 (Shared Data)
JSP為功能強大的互動式網頁,為了達到Server/Client互
動功能,Server網站端與Client使用端之間應有大量的互
動交流資訊。亦即、使用者在Client端開啟網頁,經由網
頁輸入訊息,傳遞給予網站Server端;Server網站端將傳
來的訊息作儲存、執行、或將結果回傳給予Client端。如
此完成互動之意義。
如上所述,Server網站端將某Client端傳來的訊息作儲存,
如果此時、另一Client端經由網頁,從Server端讀取到該
訊息,如此即可達到資訊共享的功能。也可看出,“資訊
共享(Data Shared)” 本來就是互動網頁的一項附加功能。
常用之共享資訊有:(1)變數共享資訊(Shared Variable)、
(2)Cookie共享資訊、(3)Application共享資訊、
(4)pageContext共享資訊。(5)其他。(如Session、Java
Bean、Tag等均可執行共享資訊功能)
變數共享資訊(Shared Variable)
於JSP程式、可使用<%! xxxxx %> 執行共享資料之要求,
在此宣告之變數可儲存共享資料,在未重新啟動網站(如
3-3節)之前(即網站生存期),均可保留前一網頁輸入之資
料,共享於後一網頁。
參考範例:
Ex89.html
<HTML>
<HEAD>
<TITLE>Front Page of Ex89</TITLE>
</HEAD>
<BODY>
<FORM METHOD="post" ACTION="Ex89.jsp">
<p align="left">
<font size="5"><b>Front Page of Ex89</b></font>
</p>
<p> </p>
<p align="left">
一般資料 <INPUT TYPE="text" NAME="data1" SIZE="30"><br>
共享資料 <INPUT TYPE="text" NAME="data2" SIZE="30"></p>
<INPUT TYPE="submit" VALUE="遞送">
<INPUT TYPE="reset" VALUE="取消">
</FORM>
</BODY>
</HTML>
Ex89.jsp
<%@ page contentType= "text/html;charset=big5" %>
<% String Data1= ""; %>
<%! String Data2= ""; %>
<html>
<head><title>Ex89</title></head><body>
<%
request.setCharacterEncoding("big5");
String val1 = request.getParameter("data1");
String val2 = request.getParameter("data2");
Data1 = Data1 + val1;
Data2 = Data2 + val2;
out.print("一般資料 : " + Data1 + "<br>");
out.print("共享資料 : " + Data2 + "<br>");
%>
</body>
</html>
Ex90.jsp
<%@ page contentType= "text/html;charset=big5" %>
<%! int count= 0; %>
<html>
<head><title>Ex90</title></head><body>
<p align="center">
<font size="5"><b>Front Page of Ex90</b></font>
</p>
<%
count = count + 1;
out.print("網頁拜訪人數: " + count);
%>
</body>
</html>
Cookies共享資訊
微軟作業系統預設目錄C:\Documents and
Settings\User\Cookies用於捕捉網頁資訊,我們可設計
JSP網站程式,用以捕捉Client端從網頁輸入之Cookie資
料,並以檔案儲存於目錄Cookies內;再另設計JSP網站
程式,讓Client端從網頁讀取該Cookies資料。
參考範例:
Ex91.html
<HTML>
<HEAD>
<TITLE>Front Page of Ex91</TITLE>
</HEAD>
<BODY>
<FORM METHOD="post" ACTION="Ex91.jsp">
<p align="left">
<font size="5"><b>Front Page of Ex91</b></font>
</p>
<p> </p>
<p align="left">
輸入Cookie資料 <INPUT TYPE="text" NAME="data" SIZE="30">
</p>
<INPUT TYPE="submit" VALUE="遞送">
<INPUT TYPE="reset" VALUE="取消">
</FORM>
</BODY>
</HTML>
Ex91.jsp (寫入cookies)
<%@ page contentType= "text/html;charset=big5" %>
<%@ page import= "java.net.*" %>
<html>
<head><title>Ex91</title></head><body>
<%
request.setCharacterEncoding("big5");
String Data = request.getParameter("data");
String val = URLEncoder.encode(Data);
Cookie cok = new Cookie("msg", val);
cok.setMaxAge(3600*24*3);
response.addCookie(cok);
out.print("成功寫入Cookie : " + Data );
%>
</body>
</html>
Ex92.jsp (讀出cookies)
<%@ page contentType= "text/html;charset=big5" %>
<%@ page import= "java.net.*" %>
<html>
<head><title>Ex92</title></head><body>
<%
request.setCharacterEncoding("big5");
String cokData=null;
Cookie[] cok = request.getCookies();
out.println("讀取Cookie : ");
for(int i=0; i<cok.length; i++)
{
if(cok[i].getName().equals("msg"))
{
cokData = URLDecoder.decode(cok[i].getValue());
out.print(cokData);
}
else
out.print("無Cookie共享資料");
}
%>
</body>
</html>
Application共享資訊
我們可在設計之網站目錄以物件application設定網站訊
息,凡儲存於此目錄的所有JSP網頁,皆可讀取此相同
之訊息。我們可利用此功能,統一發佈網站消息。
參考範例:
Ex93.html
<HTML>
<HEAD>
<TITLE>Front Page of Ex93</TITLE>
</HEAD>
<BODY>
<FORM METHOD="post" ACTION="Ex93.jsp">
<p align="left">
<font size="5"><b>Front Page of Ex93</b></font>
</p>
<p> </p>
<p align="left">
輸入網站消息 <INPUT TYPE = "text" NAME = "data" SIZE = "30"></p>
<INPUT TYPE="submit" VALUE="遞送">
<INPUT TYPE="reset" VALUE="取消">
</FORM>
</BODY>
</HTML>
Ex93.jsp
<%@ page contentType="text/html;charset=big5" %>
<html>
<head><title>Ex93</title></head><body>
<p align="left">
<font size="5"><b>Sub Page of Ex93</b></font>
</p>
<%
request.setCharacterEncoding("big5");
String val = request.getParameter("data");
application.setAttribute("ex93", val);
Object info= application.getAttribute("ex93");
String infoStr= (String)info;
%>
網站消息為: <%= infoStr %>
</body>
</html>
Ex93_otherPage.jsp
<%@ page contentType="text/html;charset=big5" %>
<html>
<head><title>Ex93_otherPage</title></head><body>
<p align="left">
<font size="5"><b>Front Page of Ex93_otherPage</b></font>
</p>
<%
request.setCharacterEncoding("big5");
Object info= application.getAttribute("ex93");
String infoStr= (String)info;
%>
網站消息為: <%= infoStr %>
</body>
</html>