請幫忙起個英文名!重謝!
Sabina 莎碧娜 拉丁 出身高貴的人
Sally 莎莉 希伯來 公主
Sabrina 莎柏琳娜 拉丁 從邊界來的人
Salome 莎洛姆 希伯來 和平的,寧靜的
Samantha 莎曼撤 阿拉姆 專心聆聽教誨的人
Sandra 珊朵拉 希臘 人類的保衛者
Sandy 仙蒂 希臘 人類的保衛者
Sara 莎拉 希伯來 公主
Sarah 賽拉 希伯來 公主
Sebastiane 莎芭絲提安 希臘 受尊重的或受尊崇的
Selena 薩琳娜 拉丁 月亮,月光
Sharon 雪倫 蓋爾 很美的公主;平原
Sheila 希拉 愛爾蘭 少女;年輕女人;盲目的
Sherry 雪莉 英國 來自草地的
Shirley 雪麗 英國 來自草地的
Sibyl 希貝兒 希臘 女預言家
Sigrid 西格莉德 斯堪的那維亞 最被喜愛的人;勝利的
Simona 席夢娜 希伯來 被聽到
Sophia 蘇菲亞 希臘 智慧的人
Spring 絲柏凌 英國 春天
Stacey 史黛絲 希臘 會再度振作起來之人
Setlla 絲特勒 西班牙 星星
Stephanie 絲特芬妮 希臘 王冠;花環;榮譽的標志
Susan 蘇珊 希伯來 一朵小百合
Susanna 蘇珊娜 希伯來 百合花
Susie 蘇西 希伯來 百合花
Suzanne 蘇珊 希伯來 一朵小百合
Sylvia 西維亞 拉丁 森林少女
英文名 語言來源 含義
1.Saadiya 阿拉伯語 好運
2.Sabah 阿拉伯語 早晨
3.Sachi 日語 上天賜福的孩子
4.Sahar 阿拉伯語 黎明
5.Sally Sarah 英語 公主
6.Samira,Samirah 阿拉伯語 令人愉快的伙伴
7.Sara/Sarah 希伯來語 公主
8.Scarlett 英語 紅色
9.Sela 希伯來語 巖石
10.Selena 希臘語 月亮
11.Serafina 西班牙語 六翼天使,天使
12.Serena 拉丁語 平靜
13.Serepta 未知 和平
14.Serwa 非洲語 寶石
15.Shaine 希伯來語 美麗
16.Shams 阿拉伯語 太陽
17.Shanon Shannon 未知 聰明的女孩
18.Shela 凱爾特語 音樂的
19.Shirley 英語 鄉村草地
20.Sophia Sophie 希臘語 智慧
21.Stella 希臘語 星星
22.Stephenie Steven 希臘語 王冠
23.Sue Susan 未知 百合
24.Summer 英語 夏天
25.Sylvia 拉丁語 林地
Laurel 蘿瑞爾……月桂樹 勝利
Lauren 蘿倫……月桂樹
Lee 李……草地的居民 庇護所
Leila 莉拉……黑發的美女子 夜晚出生的
Lena 莉娜……寄宿 寓所
Leona 李奧娜……獅
Lesley 雷思麗……來自老的保壘
Letitia 莉蒂西雅……快樂的 欣喜的
Lilith 莉莉斯……屬于晚上的
Lillian 麗蓮……一朵百合花 代表純潔 上帝的誓約
Linda 琳達……美麗的人
Lindsay 琳賽……來自海邊的菩提樹
Lisa 麗莎……對神奉獻
Liz 莉斯……上帝就是誓約
Lorraine 洛倫……來自法國洛林小鎮的人
Loui 璐易絲……著名的戰士
Lucy 露西……帶來光明和智慧的人
Lydia 莉蒂亞……來自里底亞的人 財富
Lynn 琳……傍湖而居的人
Lacey 愉快的人 女性 俄羅斯
Lacy 來自諾曼底某地的人 女性 法國
Lailie 夜美人 女性 阿拉伯
Lainey 陽光, 光線 女性 英語
Lakeesha Leticia的變形 女性 非洲
Lakeisha 心儀之人 女性 斯華西里
Lala 郁金香 女性 斯拉夫語
Lalasa 愛 女性 印度
Lalima 女性 印度
Lalita 女性 印度
Lalo 唱首搖籃曲, 女性 拉丁語
Lan 蘭花 女性 越南
Lana 浮動 女性 玻利尼西亞
Lanette 女性
Lani 天空,天堂 女性 夏威夷
Lanikai 天堂般的海洋 女性 夏威夷
Laquetta 女性 美洲土著
Lara 著名的 女性 拉丁語
Laraine 海鳥 女性 拉丁語
Lari 頭帶月桂冠 女性 英語
Laria 女性 希臘
Larina 海鷗 女性 拉丁語
Larissa 從Larisa城來的,快樂的 女性 希臘
Lark 云雀 女性 英語
Lata 女性 印度
Lateefah 溫柔的,令人愉快的 女性 北非
Latonia 阿波羅及戴安娜之母 女性 拉丁語
Latrice 女性
Laura 月桂樹 女性 拉丁語
Laurel, Loralie 月桂樹 女性 拉丁語
Rachana 創造 女性 印地語
Rachel 母羊 女性 希伯來
Radella 精靈顧問 女性 古英語
Radhika Devi的一種形式,第五個Sakti,Krishna的妻子 女性 印度
Radinka 活潑 女性 斯拉夫語
Rae Rachel的簡寫 女性 希伯來
Raeka 美麗,獨一無二 女性 西班牙
Raelin 女性 凱爾特
Ragini 女性 印度
Ragnhild 富有戰爭智慧的 女性 挪威語
Rahab 女性 希伯來
Rain 統治者 女性 拉丁語
Raina 女王 女性 斯拉夫語
Raissa 玫瑰 女性 古法語
Raizel 玫瑰 女性 希伯來
Rajni 女性 印度
Rakhi 女性 印度
Raleigh 獐鹿的草地 女性 古英語
Ramla 先知,能預測未來的人 女性 埃及
Ramona 睿智的保護者 女性 西班牙
Ramya 優雅的,美麗的 女性 印度
Randi Randall的女名 女性
Rane 女王 女性 挪威語
Rani 女王 女性 印度
Rania 皇室的 女性 梵語
Ranjana 女性 印度
Ranjita 女性 印度
Raphaela 神圣的醫者 女性 希伯來
Raphaella 由上帝救治的 女性 希伯來
Rashida 正義的 女性 非洲
Rasika 女性 印度
Rasine 玫瑰 女性 波蘭
Rasna 女性 印度
Rati 濕婆 女性 印度
Rawnie 淑女,女士 女性 吉普賽
Rayelle 女性
Raylene 女性
Rayma 女性
Rayna 純潔的,純凈的 女性 希伯來
Raziya 愉快的,宜人的 女性 非洲
Rebecca 被束縛的 女性 希伯來
Rebecca, Reba 信仰堅定的人,忠實的人 女性 希伯來
Reena 女性 印度
Regina 女王的 女性 拉丁語
Reidun 可愛的巢 女性 挪威
Rekha 直線 女性 印度
Reman 女性 印度
Remy 來自蘭斯(法國東北部城市,出產香檳和上好的白蘭地 ) 女性 法國
Rena 和平,安定,歡樂之歌 女性 希臘
Renata 重生 女性 拉丁語
Renata, Renee 重生 女性 拉丁語
Renita 剛強,果斷 女性 拉丁語
Renuka 女性 印度
Reda 治愈的 女性 拉丁語
Reshma 絲一般的 女性 印度
Revati Balarama之妻 女性 印度
Revelation 女性 拉丁語
Rhea 流動的 女性 希臘
Rhiamon 女巫 女性 威爾士
Rhiannon 神話中半人半神的美麗少女 女性 威爾士
Rhoda 玫瑰 女性 希臘
Rhodanthe 怒放的玫瑰 女性 希臘
Rhonda 好矛 女性 凱爾特
Rhoswen 白玫瑰 女性 蓋爾語
Ria 河口 女性 西班牙
Riane 年幼的王 女性 蓋爾語
Riannon 偉大的女王,女巫或女神 女性 威爾士
Richelle 強大的統治者 女性 古德語
Rickena 女性 捷克
Riddhi 強權,成功 女性 印度
Rihana 甜的羅勒屬植物 女性 阿拉伯
Rima 女性 印度
Rina 女王 女性 印度
Risa 大笑的人 女性 拉丁語
Rishbha 女性 印度
Rishona 第一 女性 希伯來
Rita 珍珠,珍貴的 女性 希臘
Ritu 女性 印度
Riva 河流 女性 法國
Rizpah 女性 希臘
Roberta 聰明的,著名的 女性 古英語
Robin 晨之女王 女性
Rochelle 小巖石 女性 法國
Roderica 著名的人 女性 古德語
Rohana 檀香 女性 印度
Rohini 女性 印度
Romana 來自羅馬 女性 意大利
Romilda 光榮的戰場上的少女 女性 條頓
Rona 盟約, 誓言 女性 蓋爾語
Ronalda 強大的, 巨大的 女性 古挪威語
Rosa 玫瑰 女性 拉丁語
Rosabel 美麗的玫瑰 女性 拉丁語
Rosalba 白玫瑰 女性 拉丁語
Rosalia 旋律 女性 意大利
Rosalind 漂亮的玫瑰 女性 西班牙
Rosanne 優美的玫瑰 女性 拉丁語
Ro 玫瑰 女性 拉丁語
Ro, Rosalie 玫瑰 女性 意大利
Rolani 天堂般的玫瑰 女性 夏威夷
Romary 海之露 女性 拉丁語
Roshni 光 女性 印度
Roslin 小個子 紅頭發的人 女性 古法語
Rowena 紅發的; 衣衫襤褸的 女性 蓋爾語
Roxanne 聰明的人 女性 波斯
Ruby 紅寶石 女性 古法語
Ruchi 女性 印度
Ruchika 女性 印度
Ruchira 女性 印度
Rudrani 樓陀羅尼, 暴風神樓陀羅之妻 女性 印度
Rue 懊悔, 后悔, 蕓香(植物) 女性 拉丁語
Rukmini 女性 印度
Rumer 吉普賽 女性 英語
Runa 隱秘的知識 女性 斯干那維亞
Rupa 女性 印度
Rupal 女性 印度
Rupali 女性 印度
Ruth 富有同情心的朋友 女性 希伯來
Ryba 魚 女性 捷克
Ryen 黑麥 女性 英語
香奈兒起源 要英文的 急。。。。。。。。。
汗。不知道你要的是哪方面的起源,品牌起源還是CHANEL單品的起源?
先給你一點中文的,百度出來的。
CHANEL小檔案
◆ CHANEL (香奈兒) 品牌故事:
Chanel (香奈兒) 創辦人 Coco Chanel (可可·香奈兒) 小姐,原名 “Gabrielle Bonheur Chanel ” ,1883年出生于法國的Auvergne。Chanel (香奈兒) 小姐6歲時母親離世,父親更丟下她和另外四名兄弟姊妹。自此,她由姨媽撫養成人,兒時入讀修女院學校 (Convent School),并在那兒學得一手針線技巧。在 Chanel 小姐22歲那年 (1905年),她當上咖啡屋歌手并起了藝名 “Coco”,在不同的歌廳和咖啡屋賣唱維生。在這段歌女生涯中,Coco Chanel (可可·香奈兒) 先后結交了兩名老主顧并成為他們的情人,一名是英國工業家,另一名是富有的軍官。結交達官貴人,令 Coco Chanel (可可·香奈兒) 有經濟能力開設自己的店。
1910年,Coco Chanel 在巴黎開設了一家女裝帽店,憑著非凡的針線技巧,Chanel 小姐縫制出一頂又一頂款式簡潔耐看的帽子。Chanel 小姐那兩位情人為她介紹了不少名流客人。當時女士們已厭倦了花俏的飾邊,所以 Chanel 設計的帽子對她們來說猶如甘泉一般。短短一年內,Chanel 小姐的生意節節上升,于是 Coco Chanel 把她的店子搬到氣質更時尚的 Rue Cambon 區,至今這區仍是 Chanel 總部所在地。做帽子絕不能滿足 Coco Chanel 對時裝事業的雄心,所以她進軍高級訂制服裝領域。1914年,Coco Chanel 開設了兩家時裝店,影響后世深遠的時裝品牌“Chanel”宣告正式誕生。
步入20年代,Chanel 小姐設計了不少創新款式,例如針織水手裙 (tricot sailor dress) 、黑色迷你裙 (little black dress)、樽領套衣等。而且,Coco Chanel 從男裝上取得靈感,為女裝添上多一點男兒味道,一改當年女裝過份艷麗的綺靡風尚。例如,將西裝褸 (Blazer) 樣式加入“Chanel”女裝系列中,又大膽推出“Chanel”女裝褲子。不要忘記,在20年代女性是只會穿裙子的!
Coco Chanel 這一連串的創作為現代時裝史帶來重大革命。Coco Chanel 對時裝美學的獨特見解和難得一見的才華,使她結交了不少詩人、畫家和知識份子。她的朋友中就有抽象畫派大師畢加索 (Picasso)、法國詩人導演尚·高克多 (Jean Cocteau) 等等。Coco Chanel 小姐的年代正是法國時裝和藝術發展的黃金時期。
除了時裝,Chanel 也在 1922 年推出著名的 Chanel No.5 香水。Chanel No.5 香水瓶是一個甚具裝飾藝術味道的方形玻璃瓶。 Chanel No.5 是史上第一瓶以設計師命名的香水,而“雙C”標志也使這瓶香水成為 Chanel 歷史上最賺錢的產品,在恒遠的時光長廊上歷久不衰!至今在 Chanel 的官方網站 Chanel No.5 香水依然是重點推介產品。大明星 Nicole Kidman 為 Chanel No.5 香水作代言人的廣告更是傳為經典中的經典。
30~40年代,二戰爆發,Coco Chanel 把店關掉,與相愛的納粹軍官避居瑞士。1954年,她重返法國,Chanel 東山再起,Chanel 小姐以她一貫的簡潔自然風格,迅速俘虜一眾巴黎仕女。粗花呢大衣、喇叭褲等等都是 Coco Chanel 戰后時期的作品。Chanel 品牌成為法國時裝史上最光榮的一筆。Chanel 的設計一直保持簡潔高貴風格,多用 Tartan 格子或北歐式幾何印花、粗花呢 (tweed) 等布料,舒適自然。在 Coco Chanel 1971年去世后,德國名設計師卡爾·拉格斐 (Karl Lagerfeld) 成為 Chanel 品牌的靈魂人物。
自1983年起,“老佛爺”卡爾·拉格斐 (Karl Lagerfeld) 一直擔任 Chanel 的總設計師,將 Chanel 的時裝推向另一個高峰。還有一處有趣地方堪可提及,就是 Chanel 品牌創立了接近90年,從未造過一件男裝,直至2005/2006的秋冬系列才造了幾件男裝上市而已。
◆ CHANEL (香奈兒) 官方網站:
www.CHANEL.com
==========================
提供了CHANEL的官網,里面有各種語言,我看不太懂E文,所以MM自己去看看比較好,也許會有品牌起源的英文介紹。
高分 java連接SQL rver 2000 詳細步驟
試試吧,
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
2007-1-13
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
現在有好多初學jsp的網友經常會問數據庫怎么連接啊,怎么老出錯啊?所以我集中的在這寫篇文章供大家參考,其實這種把數據庫邏輯全部放在jsp里未必是好的做法,但是有利于初學者學習,所以我就這樣做了,當大家學到一定程度的時候,可以考慮用MVC的模式開發。在練習這些代碼的時候,你一定將jdbc的驅動程序放到服務器的類路徑里,然后要在數據庫里建一個表test,有兩個字段比如為test1,test2,可以用下面SQL建 create table test(test1 varchar(20),test2 varchar(20),然后向這個表寫入一條測試紀錄,那么現在開始我們的jsp和數據庫之旅吧。
一、jsp連接Oracle8/8i/9i數據庫(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl為你的數據庫的SID
String ur="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
二、jsp連接Sql Server7.0/2000數據庫
testsqlrver.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlrver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlrver://localhost:1433;DatabaName=pubs";
//pubs為你的數據庫的
String ur="sa";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
三、jsp連接DB2數據庫
testdb2.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample為你的數據庫名
String ur="admin";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
四、jsp連接Informix數據庫
testinformix.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myrver;
ur=testur;password=testpassword";
//testDB為你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
五、jsp連接Access數據庫
<%@page import="java.sql.*"
import ="java.util.*"
import ="java.io.*"
import="java.text.*"
contentType="text/html; chart=gb2312"
buffer="20kb"
%><%! int all,i,m_count;
String odbcQuery;
Connection odbcconn;
Statement odbcstmt;
ResultSet odbcrs;
String urname,title,content,work,email,url,time,date;
String datetime;
%>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch (ClassNotFoundException e)
{ out.print ("驅動程序不存在");
}
try{
odbcconn = DriverManager.getConnection("jdbc:odbc:db1");
odbcstmt = odbcconn.createStatement();
odbcQuery="Select * From book where datetime>2001-4-26 Order By datetime DESC";
odbcrs=odbcstmt.executeQuery(odbcQuery);
int i=0;
while (i<130) odbcrs.next();
while (odbcrs.next())
{
//*/////////////////////////顯示數據庫的內容用于調試程序是用//
int ii;
try{
try{
for (ii=1;;ii++)
out.print ("<br>Cloumn "+ii+" is: "+odbcrs.getString(ii));
}catch (NullPointerException e) {
out.print ("有空的指針");
}
}catch (SQLException e){
}
}
odbcrs.clo();
odbcstmt.clo();
odbcconn.clo();
}catch (SQLException e)
{ out.print (e);
}
%>
查看(24) 評論(0)
Hibernate快速入門
2006-11-10
其實Hibernate本身是個獨立的框架,它不需要任何web rver或application rver的支持。然而,大多數的Hibernate入門介紹都加入了很多非Hibernate的東西,比如: Tomcat, Eclip, Log4J,Struts, XDoclet, 甚至JBoss。這容易讓人產生Hibernate復雜難懂的誤解,特別是打擊了初學者的積極性。
在這篇文章將不涉及Eclip, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安裝過程以及最基本的功能,從而給初學者一個低得不能再低的入門門檻。
下載文件
你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。
1、Hibernate包下載地址:
http://prdownloads.sourceforge.n ... t_by=date&sort=desc
2、Ant包下載地址:
http://archive.apache.org/dist/ant/
3、JDBC Driver要根據你用的databa來定,一般databa官方網站上都會有。Hibernate支持常用的databa,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。這些數據庫都有JDBC Driver:
Oracle JDBC Driver下載地址(下載前必須同意Oracle協議書)
http://otn.oracle.com/software/h ... tdocs/jdbc9201.html
MySQL JDBC Driver下載地址
http://dev.mysql.com/downloads/connector/j/3.0.html
PostgreSQL JDBC Driver下載地址
http://jdbc.postgresql.org/download.html
MS-SQL Server JDBC Driver下載地址
http://www.microsoft.com/downloa ... bf71&displaylang=en
4、將Hibernate包和Ant包分別解壓至c:dev下(此目錄不重要,你可以換其它任何目錄)。
配置環境
1、你需要添加一個新的環境變量: ANT_HOME,讓它指向c:dev<的ANT包所在目錄>并在PATH環境變量里添加%ANT_HOME%in。
2、你需要添加一個新的環境變量: JAVA_HOME,讓它指向你的j2sdk根目錄。并在PATH環境變量里添加%JAVA_HOME%in。
3、創建一個項目ā?目錄,比如c:workspaceMy1stHibernate。
在項目目錄下,另外創建三個目錄: src, class, lib。
在lib目錄下,創建兩個目錄: hibernate和db。
這樣你有了如下的文件結構:
c:workspaceMy1stHibernate
c:workspaceMy1stHibernatesrc
c:workspaceMy1stHibernateclass
c:workspaceMy1stHibernatelib
c:workspaceMy1stHibernatelibhibernate
c:workspaceMy1stHibernatelibdb
4、將c:dev<的Hibernate包所在目錄>hibernate2.jar文件copy到c:workspaceMy1stHibernatelibhibernate下。
將c:dev<的Hibernate包所在目錄>lib下的所有文件同樣copy到c:workspaceMy1stHibernatelibhibernate下。
將你的JDBC Driver文件(一般是一個jar文件)copy到c:workspaceMy1stHibernatelibdb下。
創建數據庫
1、用你最喜愛的databa軟件,創建一個hibernate_test的數據庫。
2、在此數據庫下,新建一個table名為CUSTOMER
CREATE TABLE CUSTOMER
(
CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12)
);
編寫Java文件
public class Customer {
private int id;
private String urname;
private String password;
public int getId() {
return id;
}
public String getPassword() {
return password;
}
public String getUrname() {
return urname;
}
public void tId(int id) {
this.id = id;
}
public void tPassword(String password) {
this.password = password;
}
public void tUrname(String urname) {
this.urname = urname;
}
}
將此類存為c:workspaceMy1stHibernatesrcCustomer.java文件。
編寫Test類
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session ssion = sf.openSession();
Transaction tx = ssion.beginTransaction();
for (int i = 0; i <200; i++) {
Customer customer = new Customer();
custoā?mer.tUrname("customer" + i);
customer.tPassword("customer");
ssion.save(customer);
}
tx.commit();
ssion.clo();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
將此類存為c:workspaceMy1stHibernatesrcTest.java文件。
創建Hibernate映射文件
因為這里只有一個Class --- Customer 和一個Table --- CUSTOMER,你只需要建立一個映射文件--- Customer.hbm.xml,來對應Customer類和CUSTOMER表之間的關系。
<xml version="1.0"?>
<DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<ibernate-mapping>
<lass name="Customer" table="CUSTOMER">
<d name="id" column="CID">
<enerator class="increment" />
<id>
<roperty name="urname" column="USERNAME" />
<roperty name="password" column="PASSWORD" />
<class>
<hibernate-mapping>
把此文件存為c:workspaceMy1stHibernatesrcCustomer.hbm.xml,和Customer.java放在同一目錄下。
編寫Ant build.xml文件
你不一定要知道這個build.xml的細節,其實Ant也不是Hibernate所必須的。這里用Ant是為了簡化一些任務,比如: 編譯、copy、運行,等。
<xml version="1.0" ?>
<roject name="My1stHibernate" default="build" badir=".">
<roperty name="ba.dir" value="." />
<roperty name="src.dir" value="src" />
<roperty name="lib.dir" value="lib" />
<roperty name="build.dir" value="class" />
<ath id="myclasspath">
<ilet dir="${lib.dir}">
<nclude name="**/*.jar" />
<filet>
<athelement location="${build.dir}" />
<path>
<arget name="init">
<kdir dir="${build.dir}" />
<target>
<arget name="build" depends="init" description="compile the source files">
<avac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
<opy todir="${build.dir}" >
<ilet dir="${src.dir}" >
ā?<xclude name="**/*.java"/>
<filet>
<copy>
<target>
<arget name="run" depends="build">
<ava classpathref="myclasspath" classname="Test" fork="true" />
<target>
<arget name="clean">
<elete includeEmptyDirs="true">
<ilet dir="${build.dir}" />
<delete>
<target>
<project>
配置Hibernate描述文件
Hibernate描述文件可以是一個properties或xml 文件,其中最重要的是定義數據庫的連接。我這里列出的是一個XML格式的hibernate.cfg.xml描述文件。
<xml version="1.0" encoding="utf-8" ?>
<DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<ibernate-configuration>
<ession-factory name="java:/hibernate/HibernateFactory">
<roperty name="show_sql">rue<property>
<roperty name="connection.driver_class">
oracle.jdbc.driver.OracleDriver <-- 這里是Oracle 9i的JDBC driver class名 -->
<property>
<roperty name="connection.url">
jdbc:oracle:oci8:@hibernate_test <-- 這里是Oracle的hibernate_test數據庫URL -->
<property>
<roperty name="connection.urname">
你的數據庫用戶名
<property>
<roperty name="connection.password">
你的數據庫密碼
<property>
<roperty name="dialect">
net.sf.hibernate.dialect.Oracle9Dialect <-- 這里是Oracle 9i的Dialect -->
<property>
<apping resource="Customer.hbm.xml" /><-- 指定Customer的映射文件 -->
<ssion-factory>
<hibernate-configuration>
如果你用的不是Oracle 9i,可到C:dev<的Hibernate包所在目錄>srchibernate.properties文件里找到你的數據庫,然后替換以上相對應的值。
開始運行
到c:workspaceMy1stHibernate下,運行ant run。如果你嚴格依照以上步驟,應該看到
run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
[java] log4j:WARN Plea initialize the log4j system properly.
[java] Hibernate: inrt into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
BUILD SUCCESSFUL
到你的hibernate_test數據庫看一下,在CUSTMOR表里新添了200條記錄,但你沒有寫任何JDBC code。
以后如果你要更換數據庫,只需要改變hibernate.cfg.xml描述文件里相應的值即可。
查看(89) 評論(4)
掌握 Ajax, Ajax 簡介
2006-11-10
Ajax 由 HTML、JavaScript™ 技術、DHTML 和 DOM 組成,這一杰出的方法可以將笨拙的 Web 界面轉化成交互性的 Ajax 應用程序。本文的作者是一位 Ajax 專家,他演示了這些技術如何協同工作 —— 從總體概述到細節的討論 —— 使高效的 Web 開發成為現實。他還揭開了 Ajax 核心概念的神秘面紗,包括 XMLHttpRequest 對象。
五年前,如果不知道 XML,您就是一只無人重視的丑小鴨。十八個月前,Ruby 成了關注的中心,不知道 Ruby 的程序員只能坐冷板凳了。今天,如果想跟上最新的技術時尚,那您的目標就是 Ajax。
但是,Ajax 不僅僅 是一種時尚,它是一種構建網站的強大方法,而且不像學習一種全新的語言那樣困難。
但在詳細探討 Ajax 是什么之前,先讓我們花幾分鐘了解 Ajax 做 什么。目前,編寫應用程序時有兩種基本的選擇:
桌面應用程序
Web 應用程序
兩者是類似的,桌面應用程序通常以 CD 為介質(有時候可從網站下載)并完全安裝到您的計算機上。桌面應用程序可能使用互聯網下載更新,但運行這些應用程序的代碼在桌面計算機上。Web 應用程序運行在某處的 Web 服務器上 —— 毫不奇怪,要通過 Web 瀏覽器訪問這種應用程序。
不過,比這些應用程序的運行代碼放在何處更重要的是,應用程序如何運轉以及如何與其進行交互。桌面應用程序一般很快(就在您的計算機上運行,不用等待互聯網連接),具有漂亮的用戶界面(通常和操作系統有關)和非凡的動態性。可以單擊、選擇、輸入、打開菜單和子菜單、到處巡游,基本上不需要等待。
另一方面,Web 應用程序是最新的潮流,它們提供了在桌面上不能實現的服務(比如 Amazon.com 和 eBay)。但是,伴隨著 Web 的強大而出現的是等待,等待服務器響應,等待屏幕刷新,等待請求返回和生成新的頁面。
顯然這樣說過于簡略了,但基本的概念就是如此。您可能已經猜到,Ajax 嘗試建立桌面應用程序的功能和交互性,與不斷更新的 Web 應用程序之間的橋梁。可以使用像桌面應用程序中常見的動態用戶界面和漂亮的控件,不過是在 Web 應用程序中。
還等什么呢?我們來看看 Ajax 如何將笨拙的 Web 界面轉化成能迅速響應的 Ajax 應用程序吧。
老技術,新技巧
在談到 Ajax 時,實際上涉及到多種技術,要靈活地運用它必須深入了解這些不同的技術(本系列的頭幾篇文章將分別討論這些技術)。好消息是您可能已經非常熟悉其中的大部分技術,更好的是這些技術都很容易學習,并不像完整的編程語言(如 Java 或 Ruby)那樣困難。
Ajax 的定義
順便說一下,Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。這個短語是 Adaptive Path 的 Jes James Garrett 發明的(請參閱 參考資料),按照 Jes 的解釋,這不是 個首字母縮寫詞。
下面是 Ajax 應用程序所用到的基本技術:
HTML 用于建立 Web 表單并確定應用程序其他部分使用的字段。
JavaScript 代碼是運行 Ajax 應用程序的核心代碼,幫助改進與服務器應用程序的通信。
DHTML 或 Dynamic HTML,用于動態更新表單。我們將使用 div、span 和其他動態 HTML 元素來標記 HTML。
文檔對象模型 DOM 用于(通過 JavaScript 代碼)處理 HTML 結構和(某些情況下)服務器返回的 XML。
我們來進一步分析這些技術的職責。以后的文章中我將深入討論這些技術,目前只要熟悉這些組件和技術就可以了。對這些代碼越熟悉,就越容易從對這些技術的零散了解轉變到真正把握這些技術(同時也真正打開了 Web 應用程序開發的大門)。
XMLHttpRequest 對象
要了解的一個對象可能對您來說也是最陌生的,即 XMLHttpRequest。這是一個 JavaScript 對象,創建該對象很簡單,如清單 1 所示。
清單 1. 創建新的 XMLHttpRequest 對象
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
下一期文章中將進一步討論這個對象,現在要知道這是處理所有服務器通信的對象。繼續閱讀之前,先停下來想一想:通過 XMLHttpRequest 對象與服務器進行對話的是 JavaScript 技術。這不是一般的應用程序流,這恰恰是 Ajax 的強大功能的來源。
在一般的 Web 應用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個表單發送到服務器,服務器將它轉發給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進程或者類似的東西),腳本執行完成后再發送回全新的頁面。該頁面可能是帶有已經填充某些數據的新表單的 HTML,也可能是確認頁面,或者是具有根據原來表單中輸入數據選擇的某些選項的頁面。當然,在服務器上的腳本或程序處理和返回新表單時用戶必須等待。屏幕變成一片空白,等到服務器返回數據后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應用程序。
Ajax 基本上就是把 JavaScript 技術和 XMLHttpRequest 對象放在 Web 表單和服務器之間。當用戶填寫表單時,數據發送給一些 JavaScript 代碼而不是 直接發送給服務器。相反,JavaScript 代碼捕獲表單數據并向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說 JavaScript 代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續輸入數據、滾動屏幕和使用應用程序。
然后,服務器將數據返回 JavaScript 代碼(仍然在 Web 表單中),后者決定如何處理這些數據。它可以迅速更新表單數據,讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數據。JavaScript 代碼甚至可以對收到的數據執行某種計算,再發送另一個請求,完全不需要用戶干預!這就是 XMLHttpRequest 的強大之處。它可以根據需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發生的一切。結果就是類似于桌面應用程序的動態、快速響應、高交互性的體驗,但是背后又擁有互聯網的全部強大力量。
加入一些 JavaScript
得到 XMLHttpRequest 的句柄后,其他的 JavaScript 代碼就非常簡單了。事實上,我們將使用 JavaScript 代碼完成非常基本的任務:
獲取表單數據:JavaScript 代碼很容易從 HTML 表單中抽取數據并發送到服務器。
修改表單上的數據:更新表單也很簡單,從設置字段值到迅速替換圖像。
解析 HTML 和 XML:使用 JavaScript 代碼操縱 DOM(請參閱 下一節),處理 HTML 表單服務器返回的 XML 數據的結構。
對于前兩點,需要非常熟悉 getElementById() 方法,如 清單 2 所示。
清單 2. 用 JavaScript 代碼捕獲和設置字段值
// Get the value of the "phone" field and stuff it in a variable called phone
var phone = document.getElementById("phone").value;
// Set some values on a form using an array called respon
document.getElementById("order").value = respon[0];
document.getElementById("address").value = respon[1];
這里沒有特別需要注意的地方,真是好極了!您應該認識到這里并沒有非常復雜的東西。只要掌握了 XMLHttpRequest,Ajax 應用程序的其他部分就是如 清單 2 所示的簡單 JavaScript 代碼了,混合有少量的 HTML。同時,還要用一點兒 DOM,我們就來看看吧。
以 DOM 結束
最后還有 DOM,即文檔對象模型。可能對有些讀者來說 DOM 有點兒令人生畏,HTML 設計者很少使用它,即使 JavaScript 程序員也不大用到它,除非要完成某項高端編程任務。大量使用 DOM 的是 復雜的 Java 和 C/C++ 程序,這可能就是 DOM 被認為難以學習的原因。
幸運的是,在 JavaScript 技術中使用 DOM 很容易,也非常直觀。現在,按照常規也許應該說明如何使用 DOM,或者至少要給出一些示例代碼,但這樣做也可能誤導您。即使不理會 DOM,仍然能深入地探討 Ajax,這也是我準備采用的方法。以后的文章將再次討論 DOM,現在只要知道可能需要 DOM 就可以了。當需要在 JavaScript 代碼和服務器之間傳遞 XML 和改變 HTML 表單的時候,我們再深入研究 DOM。沒有它也能做一些有趣的工作,因此現在就把 DOM 放到一邊吧。
回頁首
獲取 Request 對象
有了上面的基礎知識后,我們來看看一些具體的例子。XMLHttpRequest 是 Ajax 應用程序的核心,而且對很多讀者來說可能還比較陌生,我們就從這里開始吧。從 清單 1 可以看出,創建和使用這個對象非常簡單,不是嗎?等一等。
還記得幾年前的那些討厭的瀏覽器戰爭嗎?沒有一樣東西在不同的瀏覽器上得到同樣的結果。不管您是否相信,這些戰爭仍然在繼續,雖然規模較小。但令人奇怪的是,XMLHttpRequest 成了這場戰爭的犧牲品之一。因此獲得 XMLHttpRequest 對象可能需要采用不同的方法。下面我將詳細地進行解釋。
使用 Micr
高分 java連接SQL rver 2000 詳細步驟
試試吧,
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
2007-1-13
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
現在有好多初學jsp的網友經常會問數據庫怎么連接啊,怎么老出錯啊?所以我集中的在這寫篇文章供大家參考,其實這種把數據庫邏輯全部放在jsp里未必是好的做法,但是有利于初學者學習,所以我就這樣做了,當大家學到一定程度的時候,可以考慮用MVC的模式開發。在練習這些代碼的時候,你一定將jdbc的驅動程序放到服務器的類路徑里,然后要在數據庫里建一個表test,有兩個字段比如為test1,test2,可以用下面SQL建 create table test(test1 varchar(20),test2 varchar(20),然后向這個表寫入一條測試紀錄,那么現在開始我們的jsp和數據庫之旅吧。
一、jsp連接Oracle8/8i/9i數據庫(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl為你的數據庫的SID
String ur="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
二、jsp連接Sql Server7.0/2000數據庫
testsqlrver.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlrver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlrver://localhost:1433;DatabaName=pubs";
//pubs為你的數據庫的
String ur="sa";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
三、jsp連接DB2數據庫
testdb2.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample為你的數據庫名
String ur="admin";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
四、jsp連接Informix數據庫
testinformix.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myrver;
ur=testur;password=testpassword";
//testDB為你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
五、jsp連接Access數據庫
<%@page import="java.sql.*"
import ="java.util.*"
import ="java.io.*"
import="java.text.*"
contentType="text/html; chart=gb2312"
buffer="20kb"
%><%! int all,i,m_count;
String odbcQuery;
Connection odbcconn;
Statement odbcstmt;
ResultSet odbcrs;
String urname,title,content,work,email,url,time,date;
String datetime;
%>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch (ClassNotFoundException e)
{ out.print ("驅動程序不存在");
}
try{
odbcconn = DriverManager.getConnection("jdbc:odbc:db1");
odbcstmt = odbcconn.createStatement();
odbcQuery="Select * From book where datetime>2001-4-26 Order By datetime DESC";
odbcrs=odbcstmt.executeQuery(odbcQuery);
int i=0;
while (i<130) odbcrs.next();
while (odbcrs.next())
{
//*/////////////////////////顯示數據庫的內容用于調試程序是用//
int ii;
try{
try{
for (ii=1;;ii++)
out.print ("<br>Cloumn "+ii+" is: "+odbcrs.getString(ii));
}catch (NullPointerException e) {
out.print ("有空的指針");
}
}catch (SQLException e){
}
}
odbcrs.clo();
odbcstmt.clo();
odbcconn.clo();
}catch (SQLException e)
{ out.print (e);
}
%>
查看(24) 評論(0)
Hibernate快速入門
2006-11-10
其實Hibernate本身是個獨立的框架,它不需要任何web rver或application rver的支持。然而,大多數的Hibernate入門介紹都加入了很多非Hibernate的東西,比如: Tomcat, Eclip, Log4J,Struts, XDoclet, 甚至JBoss。這容易讓人產生Hibernate復雜難懂的誤解,特別是打擊了初學者的積極性。
在這篇文章將不涉及Eclip, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安裝過程以及最基本的功能,從而給初學者一個低得不能再低的入門門檻。
下載文件
你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。
1、Hibernate包下載地址:
http://prdownloads.sourceforge.n ... t_by=date&sort=desc
2、Ant包下載地址:
http://archive.apache.org/dist/ant/
3、JDBC Driver要根據你用的databa來定,一般databa官方網站上都會有。Hibernate支持常用的databa,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。這些數據庫都有JDBC Driver:
Oracle JDBC Driver下載地址(下載前必須同意Oracle協議書)
http://otn.oracle.com/software/h ... tdocs/jdbc9201.html
MySQL JDBC Driver下載地址
http://dev.mysql.com/downloads/connector/j/3.0.html
PostgreSQL JDBC Driver下載地址
http://jdbc.postgresql.org/download.html
MS-SQL Server JDBC Driver下載地址
http://www.microsoft.com/downloa ... bf71&displaylang=en
4、將Hibernate包和Ant包分別解壓至c:dev下(此目錄不重要,你可以換其它任何目錄)。
配置環境
1、你需要添加一個新的環境變量: ANT_HOME,讓它指向c:dev<的ANT包所在目錄>并在PATH環境變量里添加%ANT_HOME%in。
2、你需要添加一個新的環境變量: JAVA_HOME,讓它指向你的j2sdk根目錄。并在PATH環境變量里添加%JAVA_HOME%in。
3、創建一個項目ā?目錄,比如c:workspaceMy1stHibernate。
在項目目錄下,另外創建三個目錄: src, class, lib。
在lib目錄下,創建兩個目錄: hibernate和db。
這樣你有了如下的文件結構:
c:workspaceMy1stHibernate
c:workspaceMy1stHibernatesrc
c:workspaceMy1stHibernateclass
c:workspaceMy1stHibernatelib
c:workspaceMy1stHibernatelibhibernate
c:workspaceMy1stHibernatelibdb
4、將c:dev<的Hibernate包所在目錄>hibernate2.jar文件copy到c:workspaceMy1stHibernatelibhibernate下。
將c:dev<的Hibernate包所在目錄>lib下的所有文件同樣copy到c:workspaceMy1stHibernatelibhibernate下。
將你的JDBC Driver文件(一般是一個jar文件)copy到c:workspaceMy1stHibernatelibdb下。
創建數據庫
1、用你最喜愛的databa軟件,創建一個hibernate_test的數據庫。
2、在此數據庫下,新建一個table名為CUSTOMER
CREATE TABLE CUSTOMER
(
CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12)
);
編寫Java文件
public class Customer {
private int id;
private String urname;
private String password;
public int getId() {
return id;
}
public String getPassword() {
return password;
}
public String getUrname() {
return urname;
}
public void tId(int id) {
this.id = id;
}
public void tPassword(String password) {
this.password = password;
}
public void tUrname(String urname) {
this.urname = urname;
}
}
將此類存為c:workspaceMy1stHibernatesrcCustomer.java文件。
編寫Test類
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session ssion = sf.openSession();
Transaction tx = ssion.beginTransaction();
for (int i = 0; i <200; i++) {
Customer customer = new Customer();
custoā?mer.tUrname("customer" + i);
customer.tPassword("customer");
ssion.save(customer);
}
tx.commit();
ssion.clo();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
將此類存為c:workspaceMy1stHibernatesrcTest.java文件。
創建Hibernate映射文件
因為這里只有一個Class --- Customer 和一個Table --- CUSTOMER,你只需要建立一個映射文件--- Customer.hbm.xml,來對應Customer類和CUSTOMER表之間的關系。
<xml version="1.0"?>
<DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<ibernate-mapping>
<lass name="Customer" table="CUSTOMER">
<d name="id" column="CID">
<enerator class="increment" />
<id>
<roperty name="urname" column="USERNAME" />
<roperty name="password" column="PASSWORD" />
<class>
<hibernate-mapping>
把此文件存為c:workspaceMy1stHibernatesrcCustomer.hbm.xml,和Customer.java放在同一目錄下。
編寫Ant build.xml文件
你不一定要知道這個build.xml的細節,其實Ant也不是Hibernate所必須的。這里用Ant是為了簡化一些任務,比如: 編譯、copy、運行,等。
<xml version="1.0" ?>
<roject name="My1stHibernate" default="build" badir=".">
<roperty name="ba.dir" value="." />
<roperty name="src.dir" value="src" />
<roperty name="lib.dir" value="lib" />
<roperty name="build.dir" value="class" />
<ath id="myclasspath">
<ilet dir="${lib.dir}">
<nclude name="**/*.jar" />
<filet>
<athelement location="${build.dir}" />
<path>
<arget name="init">
<kdir dir="${build.dir}" />
<target>
<arget name="build" depends="init" description="compile the source files">
<avac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
<opy todir="${build.dir}" >
<ilet dir="${src.dir}" >
ā?<xclude name="**/*.java"/>
<filet>
<copy>
<target>
<arget name="run" depends="build">
<ava classpathref="myclasspath" classname="Test" fork="true" />
<target>
<arget name="clean">
<elete includeEmptyDirs="true">
<ilet dir="${build.dir}" />
<delete>
<target>
<project>
配置Hibernate描述文件
Hibernate描述文件可以是一個properties或xml 文件,其中最重要的是定義數據庫的連接。我這里列出的是一個XML格式的hibernate.cfg.xml描述文件。
<xml version="1.0" encoding="utf-8" ?>
<DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<ibernate-configuration>
<ession-factory name="java:/hibernate/HibernateFactory">
<roperty name="show_sql">rue<property>
<roperty name="connection.driver_class">
oracle.jdbc.driver.OracleDriver <-- 這里是Oracle 9i的JDBC driver class名 -->
<property>
<roperty name="connection.url">
jdbc:oracle:oci8:@hibernate_test <-- 這里是Oracle的hibernate_test數據庫URL -->
<property>
<roperty name="connection.urname">
你的數據庫用戶名
<property>
<roperty name="connection.password">
你的數據庫密碼
<property>
<roperty name="dialect">
net.sf.hibernate.dialect.Oracle9Dialect <-- 這里是Oracle 9i的Dialect -->
<property>
<apping resource="Customer.hbm.xml" /><-- 指定Customer的映射文件 -->
<ssion-factory>
<hibernate-configuration>
如果你用的不是Oracle 9i,可到C:dev<的Hibernate包所在目錄>srchibernate.properties文件里找到你的數據庫,然后替換以上相對應的值。
開始運行
到c:workspaceMy1stHibernate下,運行ant run。如果你嚴格依照以上步驟,應該看到
run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
[java] log4j:WARN Plea initialize the log4j system properly.
[java] Hibernate: inrt into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
BUILD SUCCESSFUL
到你的hibernate_test數據庫看一下,在CUSTMOR表里新添了200條記錄,但你沒有寫任何JDBC code。
以后如果你要更換數據庫,只需要改變hibernate.cfg.xml描述文件里相應的值即可。
查看(89) 評論(4)
掌握 Ajax, Ajax 簡介
2006-11-10
Ajax 由 HTML、JavaScript™ 技術、DHTML 和 DOM 組成,這一杰出的方法可以將笨拙的 Web 界面轉化成交互性的 Ajax 應用程序。本文的作者是一位 Ajax 專家,他演示了這些技術如何協同工作 —— 從總體概述到細節的討論 —— 使高效的 Web 開發成為現實。他還揭開了 Ajax 核心概念的神秘面紗,包括 XMLHttpRequest 對象。
五年前,如果不知道 XML,您就是一只無人重視的丑小鴨。十八個月前,Ruby 成了關注的中心,不知道 Ruby 的程序員只能坐冷板凳了。今天,如果想跟上最新的技術時尚,那您的目標就是 Ajax。
但是,Ajax 不僅僅 是一種時尚,它是一種構建網站的強大方法,而且不像學習一種全新的語言那樣困難。
但在詳細探討 Ajax 是什么之前,先讓我們花幾分鐘了解 Ajax 做 什么。目前,編寫應用程序時有兩種基本的選擇:
桌面應用程序
Web 應用程序
兩者是類似的,桌面應用程序通常以 CD 為介質(有時候可從網站下載)并完全安裝到您的計算機上。桌面應用程序可能使用互聯網下載更新,但運行這些應用程序的代碼在桌面計算機上。Web 應用程序運行在某處的 Web 服務器上 —— 毫不奇怪,要通過 Web 瀏覽器訪問這種應用程序。
不過,比這些應用程序的運行代碼放在何處更重要的是,應用程序如何運轉以及如何與其進行交互。桌面應用程序一般很快(就在您的計算機上運行,不用等待互聯網連接),具有漂亮的用戶界面(通常和操作系統有關)和非凡的動態性。可以單擊、選擇、輸入、打開菜單和子菜單、到處巡游,基本上不需要等待。
另一方面,Web 應用程序是最新的潮流,它們提供了在桌面上不能實現的服務(比如 Amazon.com 和 eBay)。但是,伴隨著 Web 的強大而出現的是等待,等待服務器響應,等待屏幕刷新,等待請求返回和生成新的頁面。
顯然這樣說過于簡略了,但基本的概念就是如此。您可能已經猜到,Ajax 嘗試建立桌面應用程序的功能和交互性,與不斷更新的 Web 應用程序之間的橋梁。可以使用像桌面應用程序中常見的動態用戶界面和漂亮的控件,不過是在 Web 應用程序中。
還等什么呢?我們來看看 Ajax 如何將笨拙的 Web 界面轉化成能迅速響應的 Ajax 應用程序吧。
老技術,新技巧
在談到 Ajax 時,實際上涉及到多種技術,要靈活地運用它必須深入了解這些不同的技術(本系列的頭幾篇文章將分別討論這些技術)。好消息是您可能已經非常熟悉其中的大部分技術,更好的是這些技術都很容易學習,并不像完整的編程語言(如 Java 或 Ruby)那樣困難。
Ajax 的定義
順便說一下,Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。這個短語是 Adaptive Path 的 Jes James Garrett 發明的(請參閱 參考資料),按照 Jes 的解釋,這不是 個首字母縮寫詞。
下面是 Ajax 應用程序所用到的基本技術:
HTML 用于建立 Web 表單并確定應用程序其他部分使用的字段。
JavaScript 代碼是運行 Ajax 應用程序的核心代碼,幫助改進與服務器應用程序的通信。
DHTML 或 Dynamic HTML,用于動態更新表單。我們將使用 div、span 和其他動態 HTML 元素來標記 HTML。
文檔對象模型 DOM 用于(通過 JavaScript 代碼)處理 HTML 結構和(某些情況下)服務器返回的 XML。
我們來進一步分析這些技術的職責。以后的文章中我將深入討論這些技術,目前只要熟悉這些組件和技術就可以了。對這些代碼越熟悉,就越容易從對這些技術的零散了解轉變到真正把握這些技術(同時也真正打開了 Web 應用程序開發的大門)。
XMLHttpRequest 對象
要了解的一個對象可能對您來說也是最陌生的,即 XMLHttpRequest。這是一個 JavaScript 對象,創建該對象很簡單,如清單 1 所示。
清單 1. 創建新的 XMLHttpRequest 對象
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
下一期文章中將進一步討論這個對象,現在要知道這是處理所有服務器通信的對象。繼續閱讀之前,先停下來想一想:通過 XMLHttpRequest 對象與服務器進行對話的是 JavaScript 技術。這不是一般的應用程序流,這恰恰是 Ajax 的強大功能的來源。
在一般的 Web 應用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個表單發送到服務器,服務器將它轉發給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進程或者類似的東西),腳本執行完成后再發送回全新的頁面。該頁面可能是帶有已經填充某些數據的新表單的 HTML,也可能是確認頁面,或者是具有根據原來表單中輸入數據選擇的某些選項的頁面。當然,在服務器上的腳本或程序處理和返回新表單時用戶必須等待。屏幕變成一片空白,等到服務器返回數據后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應用程序。
Ajax 基本上就是把 JavaScript 技術和 XMLHttpRequest 對象放在 Web 表單和服務器之間。當用戶填寫表單時,數據發送給一些 JavaScript 代碼而不是 直接發送給服務器。相反,JavaScript 代碼捕獲表單數據并向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說 JavaScript 代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續輸入數據、滾動屏幕和使用應用程序。
然后,服務器將數據返回 JavaScript 代碼(仍然在 Web 表單中),后者決定如何處理這些數據。它可以迅速更新表單數據,讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數據。JavaScript 代碼甚至可以對收到的數據執行某種計算,再發送另一個請求,完全不需要用戶干預!這就是 XMLHttpRequest 的強大之處。它可以根據需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發生的一切。結果就是類似于桌面應用程序的動態、快速響應、高交互性的體驗,但是背后又擁有互聯網的全部強大力量。
加入一些 JavaScript
得到 XMLHttpRequest 的句柄后,其他的 JavaScript 代碼就非常簡單了。事實上,我們將使用 JavaScript 代碼完成非常基本的任務:
獲取表單數據:JavaScript 代碼很容易從 HTML 表單中抽取數據并發送到服務器。
修改表單上的數據:更新表單也很簡單,從設置字段值到迅速替換圖像。
解析 HTML 和 XML:使用 JavaScript 代碼操縱 DOM(請參閱 下一節),處理 HTML 表單服務器返回的 XML 數據的結構。
對于前兩點,需要非常熟悉 getElementById() 方法,如 清單 2 所示。
清單 2. 用 JavaScript 代碼捕獲和設置字段值
// Get the value of the "phone" field and stuff it in a variable called phone
var phone = document.getElementById("phone").value;
// Set some values on a form using an array called respon
document.getElementById("order").value = respon[0];
document.getElementById("address").value = respon[1];
這里沒有特別需要注意的地方,真是好極了!您應該認識到這里并沒有非常復雜的東西。只要掌握了 XMLHttpRequest,Ajax 應用程序的其他部分就是如 清單 2 所示的簡單 JavaScript 代碼了,混合有少量的 HTML。同時,還要用一點兒 DOM,我們就來看看吧。
以 DOM 結束
最后還有 DOM,即文檔對象模型。可能對有些讀者來說 DOM 有點兒令人生畏,HTML 設計者很少使用它,即使 JavaScript 程序員也不大用到它,除非要完成某項高端編程任務。大量使用 DOM 的是 復雜的 Java 和 C/C++ 程序,這可能就是 DOM 被認為難以學習的原因。
幸運的是,在 JavaScript 技術中使用 DOM 很容易,也非常直觀。現在,按照常規也許應該說明如何使用 DOM,或者至少要給出一些示例代碼,但這樣做也可能誤導您。即使不理會 DOM,仍然能深入地探討 Ajax,這也是我準備采用的方法。以后的文章將再次討論 DOM,現在只要知道可能需要 DOM 就可以了。當需要在 JavaScript 代碼和服務器之間傳遞 XML 和改變 HTML 表單的時候,我們再深入研究 DOM。沒有它也能做一些有趣的工作,因此現在就把 DOM 放到一邊吧。
回頁首
獲取 Request 對象
有了上面的基礎知識后,我們來看看一些具體的例子。XMLHttpRequest 是 Ajax 應用程序的核心,而且對很多讀者來說可能還比較陌生,我們就從這里開始吧。從 清單 1 可以看出,創建和使用這個對象非常簡單,不是嗎?等一等。
還記得幾年前的那些討厭的瀏覽器戰爭嗎?沒有一樣東西在不同的瀏覽器上得到同樣的結果。不管您是否相信,這些戰爭仍然在繼續,雖然規模較小。但令人奇怪的是,XMLHttpRequest 成了這場戰爭的犧牲品之一。因此獲得 XMLHttpRequest 對象可能需要采用不同的方法。下面我將詳細地進行解釋。
使用 Micr
高分 java連接SQL rver 2000 詳細步驟
試試吧,
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
2007-1-13
在JSP中訪問Oracle ,SqlServer ,DB2, Informix ,Access 數據庫
現在有好多初學jsp的網友經常會問數據庫怎么連接啊,怎么老出錯啊?所以我集中的在這寫篇文章供大家參考,其實這種把數據庫邏輯全部放在jsp里未必是好的做法,但是有利于初學者學習,所以我就這樣做了,當大家學到一定程度的時候,可以考慮用MVC的模式開發。在練習這些代碼的時候,你一定將jdbc的驅動程序放到服務器的類路徑里,然后要在數據庫里建一個表test,有兩個字段比如為test1,test2,可以用下面SQL建 create table test(test1 varchar(20),test2 varchar(20),然后向這個表寫入一條測試紀錄,那么現在開始我們的jsp和數據庫之旅吧。
一、jsp連接Oracle8/8i/9i數據庫(用thin模式)
testoracle.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl為你的數據庫的SID
String ur="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
二、jsp連接Sql Server7.0/2000數據庫
testsqlrver.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.microsoft.jdbc.sqlrver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlrver://localhost:1433;DatabaName=pubs";
//pubs為你的數據庫的
String ur="sa";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
三、jsp連接DB2數據庫
testdb2.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();
String url="jdbc:db2://localhost:5000/sample";
//sample為你的數據庫名
String ur="admin";
String password="";
Connection conn= DriverManager.getConnection(url,ur,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
四、jsp連接Informix數據庫
testinformix.jsp如下:
<%@ page contentType="text/html;chart=gb2312"%>
<%@ page import="java.sql.*"%>
<html>
<body>
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();
String url =
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myrver;
ur=testur;password=testpassword";
//testDB為你的數據庫名
Connection conn= DriverManager.getConnection(url);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="lect * from test";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()) {%>
您的第一個字段內容為:<%=rs.getString(1)%>
您的第二個字段內容為:<%=rs.getString(2)%>
<%}%>
<%out.print("數據庫操作成功,恭喜你");%>
<%rs.clo();
stmt.clo();
conn.clo();
%>
</body>
</html>
五、jsp連接Access數據庫
<%@page import="java.sql.*"
import ="java.util.*"
import ="java.io.*"
import="java.text.*"
contentType="text/html; chart=gb2312"
buffer="20kb"
%><%! int all,i,m_count;
String odbcQuery;
Connection odbcconn;
Statement odbcstmt;
ResultSet odbcrs;
String urname,title,content,work,email,url,time,date;
String datetime;
%>
<%
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch (ClassNotFoundException e)
{ out.print ("驅動程序不存在");
}
try{
odbcconn = DriverManager.getConnection("jdbc:odbc:db1");
odbcstmt = odbcconn.createStatement();
odbcQuery="Select * From book where datetime>2001-4-26 Order By datetime DESC";
odbcrs=odbcstmt.executeQuery(odbcQuery);
int i=0;
while (i<130) odbcrs.next();
while (odbcrs.next())
{
//*/////////////////////////顯示數據庫的內容用于調試程序是用//
int ii;
try{
try{
for (ii=1;;ii++)
out.print ("<br>Cloumn "+ii+" is: "+odbcrs.getString(ii));
}catch (NullPointerException e) {
out.print ("有空的指針");
}
}catch (SQLException e){
}
}
odbcrs.clo();
odbcstmt.clo();
odbcconn.clo();
}catch (SQLException e)
{ out.print (e);
}
%>
查看(24) 評論(0)
Hibernate快速入門
2006-11-10
其實Hibernate本身是個獨立的框架,它不需要任何web rver或application rver的支持。然而,大多數的Hibernate入門介紹都加入了很多非Hibernate的東西,比如: Tomcat, Eclip, Log4J,Struts, XDoclet, 甚至JBoss。這容易讓人產生Hibernate復雜難懂的誤解,特別是打擊了初學者的積極性。
在這篇文章將不涉及Eclip, log4j, Struts, Tomcat, XDoclet,和JBoss。本文的目的是演示一下Hibernate的安裝過程以及最基本的功能,從而給初學者一個低得不能再低的入門門檻。
下載文件
你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。
1、Hibernate包下載地址:
http://prdownloads.sourceforge.n ... t_by=date&sort=desc
2、Ant包下載地址:
http://archive.apache.org/dist/ant/
3、JDBC Driver要根據你用的databa來定,一般databa官方網站上都會有。Hibernate支持常用的databa,比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。這些數據庫都有JDBC Driver:
Oracle JDBC Driver下載地址(下載前必須同意Oracle協議書)
http://otn.oracle.com/software/h ... tdocs/jdbc9201.html
MySQL JDBC Driver下載地址
http://dev.mysql.com/downloads/connector/j/3.0.html
PostgreSQL JDBC Driver下載地址
http://jdbc.postgresql.org/download.html
MS-SQL Server JDBC Driver下載地址
http://www.microsoft.com/downloa ... bf71&displaylang=en
4、將Hibernate包和Ant包分別解壓至c:dev下(此目錄不重要,你可以換其它任何目錄)。
配置環境
1、你需要添加一個新的環境變量: ANT_HOME,讓它指向c:dev<的ANT包所在目錄>并在PATH環境變量里添加%ANT_HOME%in。
2、你需要添加一個新的環境變量: JAVA_HOME,讓它指向你的j2sdk根目錄。并在PATH環境變量里添加%JAVA_HOME%in。
3、創建一個項目ā?目錄,比如c:workspaceMy1stHibernate。
在項目目錄下,另外創建三個目錄: src, class, lib。
在lib目錄下,創建兩個目錄: hibernate和db。
這樣你有了如下的文件結構:
c:workspaceMy1stHibernate
c:workspaceMy1stHibernatesrc
c:workspaceMy1stHibernateclass
c:workspaceMy1stHibernatelib
c:workspaceMy1stHibernatelibhibernate
c:workspaceMy1stHibernatelibdb
4、將c:dev<的Hibernate包所在目錄>hibernate2.jar文件copy到c:workspaceMy1stHibernatelibhibernate下。
將c:dev<的Hibernate包所在目錄>lib下的所有文件同樣copy到c:workspaceMy1stHibernatelibhibernate下。
將你的JDBC Driver文件(一般是一個jar文件)copy到c:workspaceMy1stHibernatelibdb下。
創建數據庫
1、用你最喜愛的databa軟件,創建一個hibernate_test的數據庫。
2、在此數據庫下,新建一個table名為CUSTOMER
CREATE TABLE CUSTOMER
(
CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12)
);
編寫Java文件
public class Customer {
private int id;
private String urname;
private String password;
public int getId() {
return id;
}
public String getPassword() {
return password;
}
public String getUrname() {
return urname;
}
public void tId(int id) {
this.id = id;
}
public void tPassword(String password) {
this.password = password;
}
public void tUrname(String urname) {
this.urname = urname;
}
}
將此類存為c:workspaceMy1stHibernatesrcCustomer.java文件。
編寫Test類
import net.sf.hibernate.*;
import net.sf.hibernate.cfg.*;
public class Test {
public static void main(String[] args) {
try {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session ssion = sf.openSession();
Transaction tx = ssion.beginTransaction();
for (int i = 0; i <200; i++) {
Customer customer = new Customer();
custoā?mer.tUrname("customer" + i);
customer.tPassword("customer");
ssion.save(customer);
}
tx.commit();
ssion.clo();
} catch (HibernateException e) {
e.printStackTrace();
}
}
}
將此類存為c:workspaceMy1stHibernatesrcTest.java文件。
創建Hibernate映射文件
因為這里只有一個Class --- Customer 和一個Table --- CUSTOMER,你只需要建立一個映射文件--- Customer.hbm.xml,來對應Customer類和CUSTOMER表之間的關系。
<xml version="1.0"?>
<DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<ibernate-mapping>
<lass name="Customer" table="CUSTOMER">
<d name="id" column="CID">
<enerator class="increment" />
<id>
<roperty name="urname" column="USERNAME" />
<roperty name="password" column="PASSWORD" />
<class>
<hibernate-mapping>
把此文件存為c:workspaceMy1stHibernatesrcCustomer.hbm.xml,和Customer.java放在同一目錄下。
編寫Ant build.xml文件
你不一定要知道這個build.xml的細節,其實Ant也不是Hibernate所必須的。這里用Ant是為了簡化一些任務,比如: 編譯、copy、運行,等。
<xml version="1.0" ?>
<roject name="My1stHibernate" default="build" badir=".">
<roperty name="ba.dir" value="." />
<roperty name="src.dir" value="src" />
<roperty name="lib.dir" value="lib" />
<roperty name="build.dir" value="class" />
<ath id="myclasspath">
<ilet dir="${lib.dir}">
<nclude name="**/*.jar" />
<filet>
<athelement location="${build.dir}" />
<path>
<arget name="init">
<kdir dir="${build.dir}" />
<target>
<arget name="build" depends="init" description="compile the source files">
<avac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" />
<opy todir="${build.dir}" >
<ilet dir="${src.dir}" >
ā?<xclude name="**/*.java"/>
<filet>
<copy>
<target>
<arget name="run" depends="build">
<ava classpathref="myclasspath" classname="Test" fork="true" />
<target>
<arget name="clean">
<elete includeEmptyDirs="true">
<ilet dir="${build.dir}" />
<delete>
<target>
<project>
配置Hibernate描述文件
Hibernate描述文件可以是一個properties或xml 文件,其中最重要的是定義數據庫的連接。我這里列出的是一個XML格式的hibernate.cfg.xml描述文件。
<xml version="1.0" encoding="utf-8" ?>
<DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd">
<ibernate-configuration>
<ession-factory name="java:/hibernate/HibernateFactory">
<roperty name="show_sql">rue<property>
<roperty name="connection.driver_class">
oracle.jdbc.driver.OracleDriver <-- 這里是Oracle 9i的JDBC driver class名 -->
<property>
<roperty name="connection.url">
jdbc:oracle:oci8:@hibernate_test <-- 這里是Oracle的hibernate_test數據庫URL -->
<property>
<roperty name="connection.urname">
你的數據庫用戶名
<property>
<roperty name="connection.password">
你的數據庫密碼
<property>
<roperty name="dialect">
net.sf.hibernate.dialect.Oracle9Dialect <-- 這里是Oracle 9i的Dialect -->
<property>
<apping resource="Customer.hbm.xml" /><-- 指定Customer的映射文件 -->
<ssion-factory>
<hibernate-configuration>
如果你用的不是Oracle 9i,可到C:dev<的Hibernate包所在目錄>srchibernate.properties文件里找到你的數據庫,然后替換以上相對應的值。
開始運行
到c:workspaceMy1stHibernate下,運行ant run。如果你嚴格依照以上步驟,應該看到
run:
[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).
[java] log4j:WARN Plea initialize the log4j system properly.
[java] Hibernate: inrt into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)
BUILD SUCCESSFUL
到你的hibernate_test數據庫看一下,在CUSTMOR表里新添了200條記錄,但你沒有寫任何JDBC code。
以后如果你要更換數據庫,只需要改變hibernate.cfg.xml描述文件里相應的值即可。
查看(89) 評論(4)
掌握 Ajax, Ajax 簡介
2006-11-10
Ajax 由 HTML、JavaScript™ 技術、DHTML 和 DOM 組成,這一杰出的方法可以將笨拙的 Web 界面轉化成交互性的 Ajax 應用程序。本文的作者是一位 Ajax 專家,他演示了這些技術如何協同工作 —— 從總體概述到細節的討論 —— 使高效的 Web 開發成為現實。他還揭開了 Ajax 核心概念的神秘面紗,包括 XMLHttpRequest 對象。
五年前,如果不知道 XML,您就是一只無人重視的丑小鴨。十八個月前,Ruby 成了關注的中心,不知道 Ruby 的程序員只能坐冷板凳了。今天,如果想跟上最新的技術時尚,那您的目標就是 Ajax。
但是,Ajax 不僅僅 是一種時尚,它是一種構建網站的強大方法,而且不像學習一種全新的語言那樣困難。
但在詳細探討 Ajax 是什么之前,先讓我們花幾分鐘了解 Ajax 做 什么。目前,編寫應用程序時有兩種基本的選擇:
桌面應用程序
Web 應用程序
兩者是類似的,桌面應用程序通常以 CD 為介質(有時候可從網站下載)并完全安裝到您的計算機上。桌面應用程序可能使用互聯網下載更新,但運行這些應用程序的代碼在桌面計算機上。Web 應用程序運行在某處的 Web 服務器上 —— 毫不奇怪,要通過 Web 瀏覽器訪問這種應用程序。
不過,比這些應用程序的運行代碼放在何處更重要的是,應用程序如何運轉以及如何與其進行交互。桌面應用程序一般很快(就在您的計算機上運行,不用等待互聯網連接),具有漂亮的用戶界面(通常和操作系統有關)和非凡的動態性。可以單擊、選擇、輸入、打開菜單和子菜單、到處巡游,基本上不需要等待。
另一方面,Web 應用程序是最新的潮流,它們提供了在桌面上不能實現的服務(比如 Amazon.com 和 eBay)。但是,伴隨著 Web 的強大而出現的是等待,等待服務器響應,等待屏幕刷新,等待請求返回和生成新的頁面。
顯然這樣說過于簡略了,但基本的概念就是如此。您可能已經猜到,Ajax 嘗試建立桌面應用程序的功能和交互性,與不斷更新的 Web 應用程序之間的橋梁。可以使用像桌面應用程序中常見的動態用戶界面和漂亮的控件,不過是在 Web 應用程序中。
還等什么呢?我們來看看 Ajax 如何將笨拙的 Web 界面轉化成能迅速響應的 Ajax 應用程序吧。
老技術,新技巧
在談到 Ajax 時,實際上涉及到多種技術,要靈活地運用它必須深入了解這些不同的技術(本系列的頭幾篇文章將分別討論這些技術)。好消息是您可能已經非常熟悉其中的大部分技術,更好的是這些技術都很容易學習,并不像完整的編程語言(如 Java 或 Ruby)那樣困難。
Ajax 的定義
順便說一下,Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的縮寫。這個短語是 Adaptive Path 的 Jes James Garrett 發明的(請參閱 參考資料),按照 Jes 的解釋,這不是 個首字母縮寫詞。
下面是 Ajax 應用程序所用到的基本技術:
HTML 用于建立 Web 表單并確定應用程序其他部分使用的字段。
JavaScript 代碼是運行 Ajax 應用程序的核心代碼,幫助改進與服務器應用程序的通信。
DHTML 或 Dynamic HTML,用于動態更新表單。我們將使用 div、span 和其他動態 HTML 元素來標記 HTML。
文檔對象模型 DOM 用于(通過 JavaScript 代碼)處理 HTML 結構和(某些情況下)服務器返回的 XML。
我們來進一步分析這些技術的職責。以后的文章中我將深入討論這些技術,目前只要熟悉這些組件和技術就可以了。對這些代碼越熟悉,就越容易從對這些技術的零散了解轉變到真正把握這些技術(同時也真正打開了 Web 應用程序開發的大門)。
XMLHttpRequest 對象
要了解的一個對象可能對您來說也是最陌生的,即 XMLHttpRequest。這是一個 JavaScript 對象,創建該對象很簡單,如清單 1 所示。
清單 1. 創建新的 XMLHttpRequest 對象
<script language="javascript" type="text/javascript">
var xmlHttp = new XMLHttpRequest();
</script>
下一期文章中將進一步討論這個對象,現在要知道這是處理所有服務器通信的對象。繼續閱讀之前,先停下來想一想:通過 XMLHttpRequest 對象與服務器進行對話的是 JavaScript 技術。這不是一般的應用程序流,這恰恰是 Ajax 的強大功能的來源。
在一般的 Web 應用程序中,用戶填寫表單字段并單擊 Submit 按鈕。然后整個表單發送到服務器,服務器將它轉發給處理表單的腳本(通常是 PHP 或 Java,也可能是 CGI 進程或者類似的東西),腳本執行完成后再發送回全新的頁面。該頁面可能是帶有已經填充某些數據的新表單的 HTML,也可能是確認頁面,或者是具有根據原來表單中輸入數據選擇的某些選項的頁面。當然,在服務器上的腳本或程序處理和返回新表單時用戶必須等待。屏幕變成一片空白,等到服務器返回數據后再重新繪制。這就是交互性差的原因,用戶得不到立即反饋,因此感覺不同于桌面應用程序。
Ajax 基本上就是把 JavaScript 技術和 XMLHttpRequest 對象放在 Web 表單和服務器之間。當用戶填寫表單時,數據發送給一些 JavaScript 代碼而不是 直接發送給服務器。相反,JavaScript 代碼捕獲表單數據并向服務器發送請求。同時用戶屏幕上的表單也不會閃爍、消失或延遲。換句話說,JavaScript 代碼在幕后發送請求,用戶甚至不知道請求的發出。更好的是,請求是異步發送的,就是說 JavaScript 代碼(和用戶)不用等待服務器的響應。因此用戶可以繼續輸入數據、滾動屏幕和使用應用程序。
然后,服務器將數據返回 JavaScript 代碼(仍然在 Web 表單中),后者決定如何處理這些數據。它可以迅速更新表單數據,讓人感覺應用程序是立即完成的,表單沒有提交或刷新而用戶得到了新數據。JavaScript 代碼甚至可以對收到的數據執行某種計算,再發送另一個請求,完全不需要用戶干預!這就是 XMLHttpRequest 的強大之處。它可以根據需要自行與服務器進行交互,用戶甚至可以完全不知道幕后發生的一切。結果就是類似于桌面應用程序的動態、快速響應、高交互性的體驗,但是背后又擁有互聯網的全部強大力量。
加入一些 JavaScript
得到 XMLHttpRequest 的句柄后,其他的 JavaScript 代碼就非常簡單了。事實上,我們將使用 JavaScript 代碼完成非常基本的任務:
獲取表單數據:JavaScript 代碼很容易從 HTML 表單中抽取數據并發送到服務器。
修改表單上的數據:更新表單也很簡單,從設置字段值到迅速替換圖像。
解析 HTML 和 XML:使用 JavaScript 代碼操縱 DOM(請參閱 下一節),處理 HTML 表單服務器返回的 XML 數據的結構。
對于前兩點,需要非常熟悉 getElementById() 方法,如 清單 2 所示。
清單 2. 用 JavaScript 代碼捕獲和設置字段值
// Get the value of the "phone" field and stuff it in a variable called phone
var phone = document.getElementById("phone").value;
// Set some values on a form using an array called respon
document.getElementById("order").value = respon[0];
document.getElementById("address").value = respon[1];
這里沒有特別需要注意的地方,真是好極了!您應該認識到這里并沒有非常復雜的東西。只要掌握了 XMLHttpRequest,Ajax 應用程序的其他部分就是如 清單 2 所示的簡單 JavaScript 代碼了,混合有少量的 HTML。同時,還要用一點兒 DOM,我們就來看看吧。
以 DOM 結束
最后還有 DOM,即文檔對象模型。可能對有些讀者來說 DOM 有點兒令人生畏,HTML 設計者很少使用它,即使 JavaScript 程序員也不大用到它,除非要完成某項高端編程任務。大量使用 DOM 的是 復雜的 Java 和 C/C++ 程序,這可能就是 DOM 被認為難以學習的原因。
幸運的是,在 JavaScript 技術中使用 DOM 很容易,也非常直觀。現在,按照常規也許應該說明如何使用 DOM,或者至少要給出一些示例代碼,但這樣做也可能誤導您。即使不理會 DOM,仍然能深入地探討 Ajax,這也是我準備采用的方法。以后的文章將再次討論 DOM,現在只要知道可能需要 DOM 就可以了。當需要在 JavaScript 代碼和服務器之間傳遞 XML 和改變 HTML 表單的時候,我們再深入研究 DOM。沒有它也能做一些有趣的工作,因此現在就把 DOM 放到一邊吧。
回頁首
獲取 Request 對象
有了上面的基礎知識后,我們來看看一些具體的例子。XMLHttpRequest 是 Ajax 應用程序的核心,而且對很多讀者來說可能還比較陌生,我們就從這里開始吧。從 清單 1 可以看出,創建和使用這個對象非常簡單,不是嗎?等一等。
還記得幾年前的那些討厭的瀏覽器戰爭嗎?沒有一樣東西在不同的瀏覽器上得到同樣的結果。不管您是否相信,這些戰爭仍然在繼續,雖然規模較小。但令人奇怪的是,XMLHttpRequest 成了這場戰爭的犧牲品之一。因此獲得 XMLHttpRequest 對象可能需要采用不同的方法。下面我將詳細地進行解釋。
使用 Micr