请帮忙起个英文名!重谢!
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