djxchen
BlogJava
::
首頁
::
聯(lián)系
::
聚合
::
管理
4 Posts :: 3 Stories :: 3 Comments :: 0 Trackbacks
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(1)
給我留言
查看公開留言
查看私人留言
我參與的團(tuán)隊(duì)
隨筆檔案
(4)
2008年10月 (2)
2008年4月 (2)
文章分類
(1)
java
java ee(1)
文章檔案
(3)
2008年6月 (2)
2008年4月 (1)
java
搜索
最新評(píng)論
1.?re: include與jsp:include區(qū)別
好厲害
--WW
2.?re: include與jsp:include區(qū)別
評(píng)論內(nèi)容較長,點(diǎn)擊標(biāo)題查看
--唐林峰
3.?re: include與jsp:include區(qū)別[未登錄]
解釋的好清楚阿,厲害。
--dd
閱讀排行榜
1.?include與jsp:include區(qū)別(583)
2.?get post 區(qū)別(373)
3.?java中的Serializable接口的作用(259)
4.?static(引用)(238)
評(píng)論排行榜
1.?include與jsp:include區(qū)別(3)
2.?static(引用)(0)
3.?java中的Serializable接口的作用(0)
4.?get post 區(qū)別(0)
2008年10月11日
#
java中的Serializable接口的作用
java中的Serializable接口的作用
Object serialization的定義:
Object serialization 允許你將實(shí)現(xiàn)了Serializable接口的對(duì)象轉(zhuǎn)換為字節(jié)序列,這些字節(jié)序列可以被完全存儲(chǔ)以備以后重新生成原來的對(duì)象。
serialization不但可以在本機(jī)做,而且可以經(jīng)由網(wǎng)絡(luò)操作(RMI)。這個(gè)好處是很大的----因?yàn)樗詣?dòng)屏蔽了操作系統(tǒng)的差異,字節(jié)順序(用Unix下的c開發(fā)過網(wǎng)絡(luò)編程的人應(yīng)該知道這個(gè)概念)等。比如,在Window平臺(tái)生成一個(gè)對(duì)象并序列化之,然后通過網(wǎng)絡(luò)傳到一臺(tái)Unix機(jī)器上,然后可以在這臺(tái)Unix機(jī)器上正確地重構(gòu)這個(gè)對(duì)象。
Object serialization主要用來支持2種主要的特性:
1。Java的RMI(remote method invocation).RMI允許象在本機(jī)上一樣操作遠(yuǎn)程機(jī)器上的對(duì)象。當(dāng)發(fā)送消息給遠(yuǎn)程對(duì)象時(shí),就需要用到serializaiton機(jī)制來發(fā)送參數(shù)和接收返回直。
2。Java的JavaBeans. Bean的狀態(tài)信息通常是在設(shè)計(jì)時(shí)配置的。Bean的狀態(tài)信息必須被存起來,以便當(dāng)程序運(yùn)行時(shí)能恢復(fù)這些狀態(tài)信息。這也需要serializaiton機(jī)制。
二。sakulagi和rollingpig說的持久化我也說一下。
我覺得你們說的應(yīng)該是英文里的persistence.但是Java語言里現(xiàn)在只支持lightweight persistence,就是輕量級(jí)持久化,這是通過serialization機(jī)制來實(shí)現(xiàn)的。
persistence是指一個(gè)對(duì)象的生命周期不由程序是否執(zhí)行來決定,即使是在程序終止時(shí)這個(gè)對(duì)象也存在。它把一個(gè)serializable的對(duì)象寫到磁盤(本機(jī)或其他機(jī)器上的非RAM存儲(chǔ)器),并在程序重新調(diào)用時(shí)再讀取對(duì)象到通常的RAM存儲(chǔ)器。
為什么說Java的serialization機(jī)制實(shí)現(xiàn)的是lightweight persistence?因?yàn)槟惚仨氾@式的序列化和反序列化程序里的對(duì)象;而不是直接由一個(gè)關(guān)鍵詞來定義一個(gè)對(duì)象是序列化的然后由系統(tǒng)做相應(yīng)的處理。
下面是關(guān)于序列化的一個(gè)實(shí)例:
程序名稱:SerializationDemo.java
程序主題:實(shí)現(xiàn)對(duì)象的序列化和反序列化
程序說明:該程序由實(shí)例化一個(gè)MyClass類的對(duì)象開始,該對(duì)象有三個(gè)實(shí)例變量,類型分別為String、int、double,是希望存儲(chǔ)和恢復(fù)的信息。
代碼內(nèi)容
import
java.io.
*
;
public
class
SerializationDemo
{
public
static
void
main(String args[])
{
//
Object serialization
try
{
MyClass object1
=
new
MyClass(
"
Hello
"
,
-
7
,
2.7e10
);
System.out.println(
"
object1:
"
+
object1);
FileOutputStream fos
=
new
FileOutputStream(
"
serial
"
);
ObjectOutputStream oos
=
new
ObjectOutputStream(fos);
oos.writeObject(object1);
oos.flush();
oos.close();
}
catch
(Exception e)
{
System.out.println(
"
Exception during serialization:
"
+
e);
System.exit(
0
);
}
//
Object deserialization
try
{
MyClass object2;
FileInputStream fis
=
new
FileInputStream(
"
serial
"
);
ObjectInputStream ois
=
new
ObjectInputStream(fis);
object2
=
(MyClass)ois.readObject();
ois.close();
System.out.println(
"
object2:
"
+
object2);
}
catch
(Exception e)
{
System.out.println(
"
Exception during deserialization:
"
+
e);
System.exit(
0
);
}
}
}
class
MyClass
implements
Serializable
{
String s;
int
i;
double
d;
public
MyClass(String s,
int
i,
double
d)
{
this
.s
=
s;
this
.i
=
i;
this
.d
=
d;
}
public
String toString()
{
return
"
s=
"
+
s
+
"
;i=
"
+
i
+
"
;d=
"
+
d;
}
}
程序運(yùn)行結(jié)果:object1和object2的實(shí)例變量是一樣的,輸出如下:[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10
object2:s=Hello;i=-7;d=2.7E10
posted @
2008-10-11 22:16
于元 閱讀(259) |
評(píng)論 (0)
|
編輯
收藏
get post 區(qū)別
1
推薦
表單提交中Get和Post方式的區(qū)別有5點(diǎn)
1. get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器傳送數(shù)據(jù)。
2. get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在URL中可以看到。post是通過HTTP post機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個(gè)過程。
3. 對(duì)于get方式,服務(wù)器端用Request.QueryString獲取變量的值,對(duì)于post方式,服務(wù)器端用Request.Form獲取提交的數(shù)據(jù)。
4. get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認(rèn)為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
5. get安全性非常低,post安全性較高。
HTTP請(qǐng)求:GET與POST方法的區(qū)別
HTTP 定義了與服務(wù)器交互的不同方法,最基本的方法是 GET 和 POST。事實(shí)上 GET 適用于多數(shù)請(qǐng)求,而保留 POST 僅用于更新站點(diǎn)。根據(jù) HTTP 規(guī)范,GET 用于信息獲取,而且應(yīng)該是 安全的和冪等的。所謂安全的意味著該操作用于獲取信息而非修改信息。換句話說,GET 請(qǐng)求一般不應(yīng)產(chǎn)生副作用。冪等的意味著對(duì)同一 URL 的多個(gè)請(qǐng)求應(yīng)該返回同樣的結(jié)果。完整的定義并不像看起來那樣嚴(yán)格。從根本上講,其目標(biāo)是當(dāng)用戶打開一個(gè)鏈接時(shí),她可以確信從自身的角度來看沒有改變資源。比如,新聞?wù)军c(diǎn)的頭版不斷更新。雖然第二次請(qǐng)求會(huì)返回不同的一批新聞,該操作仍然被認(rèn)為是安全的和冪等的,因?yàn)樗偸欠祷禺?dāng)前的新聞。反之亦然。POST 請(qǐng)求就不那么輕松了。POST 表示可能改變服務(wù)器上的資源的請(qǐng)求。仍然以新聞?wù)军c(diǎn)為例,讀者對(duì)文章的注解應(yīng)該通過 POST 請(qǐng)求實(shí)現(xiàn),因?yàn)樵谧⒔馓峤恢笳军c(diǎn)已經(jīng)不同了(比方說文章下面出現(xiàn)一條注解);
在FORM提交的時(shí)候,如果不指定Method,則默認(rèn)為GET請(qǐng)求,F(xiàn)orm中提交的數(shù)據(jù)將會(huì)附加在url之后,以?分開與url分開。字母數(shù)字字符原樣發(fā)送,但空格轉(zhuǎn)換為“+“號(hào),其它符號(hào)轉(zhuǎn)換為%XX,其中XX為該符號(hào)以16進(jìn)制表示的ASCII(或ISO Latin-1)值。GET請(qǐng)求請(qǐng)?zhí)峤坏臄?shù)據(jù)放置在HTTP請(qǐng)求協(xié)議頭中,而POST提交的數(shù)據(jù)則放在實(shí)體數(shù)據(jù)中;
GET方式提交的數(shù)據(jù)最多只能有1024字節(jié),而POST則沒有此限制。
在表單里使用”post”和”get”有什么區(qū)別
在Form里面,可以使用post也可以使用get。它們都是method的合法取值。但是,post和get方法在使用上至少有兩點(diǎn)不同:
1、Get方法通過URL請(qǐng)求來傳遞用戶的輸入。Post方法通過另外的形式。
2、Get方式的提交你需要用Request.QueryString來取得變量的值,而Post方式提交時(shí),你必須通過Request.Form來訪問提交的內(nèi)容。
仔細(xì)研究下面的代碼。你可以運(yùn)行之來感受一下:
代碼
<!--兩個(gè)Form只有Method屬性不同-->
<FORM ACTION=“getpost.asp” METHOD=“get”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Get”></INPUT>
</FORM>
<BR>
<FORM ACTION=“getpost.asp” METHOD=“post”>
<INPUT TYPE=“text” NAME=“Text” VALUE=“Hello World”></INPUT>
<INPUT TYPE=“submit” VALUE=“Method=Post”></INPUT>
</FORM>
<BR>
<BR>
<% If Request.QueryString(“Text”) <> ““ Then %>
通過get方法傳遞來的字符串是: “<B><%= Request.QueryString(“Text”) %></B>“<BR>
<% End If %>
<% If Request.Form(“Text”) <> ““ Then %>
通過Post方法傳遞來的字符串是: “<B><%= Request.Form(“Text”) %></B>“<BR>
<% End If %>
說明
把上面的代碼保存為getpost.asp,然后運(yùn)行,首先測試post方法,這時(shí)候,瀏覽器的url并沒有什么變化,返回的結(jié)果是:
通過Post方法傳遞來的字符串是: "Hello World"
然后測試用get方法提交,請(qǐng)注意,瀏覽器的url變成了:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的結(jié)果是:
通過get方法傳遞來的字符串是: "Hello World"
最后再通過post方法提交,瀏覽器的url還是:
http://localhost/general/form/getpost.asp?Text=Hello+World
而返回的結(jié)果變成:
通過get方法傳遞來的字符串是: "Hello World"
通過Post方法傳遞來的字符串是: "Hello World"
提示
通過get方法提交數(shù)據(jù),可能會(huì)帶來安全性的問題。比如一個(gè)登陸頁面。當(dāng)通過get方法提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上。如果:
1、 登陸頁面可以被瀏覽器緩存;
2、 其他人可以訪問客戶的這臺(tái)機(jī)器。
那么,別人即可以從瀏覽器的歷史記錄中,讀取到此客戶的賬號(hào)和密碼。所以,在某些情況下,get方法會(huì)帶來嚴(yán)重的安全性問題。
建議
在Form中,建議使用post方法。
posted @
2008-10-11 21:56
于元 閱讀(373) |
評(píng)論 (0)
|
編輯
收藏
Copyright @ 于元
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster
主站蜘蛛池模板:
册亨县
|
遵化市
|
新源县
|
崇信县
|
建昌县
|
鹤山市
|
延寿县
|
邓州市
|
通道
|
乌审旗
|
甘南县
|
西乌珠穆沁旗
|
白沙
|
车致
|
镇沅
|
临城县
|
金溪县
|
太湖县
|
文成县
|
承德市
|
永仁县
|
登封市
|
惠来县
|
玉环县
|
麻江县
|
桐柏县
|
调兵山市
|
商洛市
|
大悟县
|
页游
|
平武县
|
堆龙德庆县
|
龙山县
|
闻喜县
|
聂荣县
|
商都县
|
龙门县
|
驻马店市
|
微博
|
扶余县
|
自贡市
|