欢迎访问曾颖明的博客
1、每个意念都是一场祈祷。[詹姆士·雷德非]
2、医生知道的事如此的少,他们的收费却是如此的高。 [马克吐温]
3、复杂中带着简单的思考,是人和动物的分别。[皮雅]
4、对一般人而言,凡事要思考并不是什么麻烦的事。 [詹姆士.布莱斯]
5、成功不是全垒打,而要靠每天的、经常的打击出密集安打。[Robert J. Ringer]
6、了解面对逆境,远比如何接受顺境重要得多。[马丁·赛力格曼]
7、绝不测量山的高度─除非你已到达顶峰,那时你就会知道山有多低。 [哈马绍]
8、奋斗、寻觅、发现,而不屈服。 [诗人丁尼生]
9、所有口述手写的辞句中,最悲哀的就是本来可以… [美国诗人惠蒂尔]
10、啊!到达人生的尽头,才发现自己没活过。[梭罗]
11、好的木材并不在顺境中生长;风越强,树越壮。 [马里欧特]
12、爱不能单独存在,它的本身并无意义。爱必须付诸行动,行动才能使爱发挥功能。 [德蕾莎修女]
13、要能感觉存在,就需加强对美的感受力。[詹姆士·雷德非]
14、将爱的能量传送给别人,我们自己就会变成一条管道,吸纳来自上天的神圣能源。而那种玄秘体验是我们每个人都得以品尝的! [詹姆士·雷德非]
15、我们都随时处于正在学习的过程。 [Don Shimoda]
16、人类心灵深处,有许多沉睡的力量;唤醒这些人们从未梦想过的力量,巧妙运用,便能彻底改变一生。[澳瑞森·梅伦]
17、凡是内心能够想到、相信的,都是可以达到的。 [Napoleon Hill]
18、一个客观的艺术不只是用来看的,而是活生生的。 但是你必须知道如何去靠近它,因此你必须要做静心。 [OSHO]
19、烦恼使我受着极大的影响……我一年多没有收到月俸,我和穷困挣扎;我在我的忧患中十分孤独,而且我的忧患是多么多,比艺术使我操心得更厉害! [米开朗基罗]
20、有两种东西,我们对它们的思考愈是深沉和持久,它们所唤起的那种愈来愈大的惊奇和敬畏就会充溢我们的心灵,这就是繁星密布的苍穹和我心中的道德律。[康德]
21、我们的生活似乎在代替我们过日子,生活本身具有的奇异冲力,把我们带得晕头转向;到最后,我们会感觉对生命一点选择也没有,丝毫无法作主。[索甲仁波切]
22、对战士旅行者而言,选择其实不是去选择,而是优雅地接受无限的邀请。[唐望]
23、真正的艺术家从来不会去想到完美, 而他的动作是如此地全然,而完美就是来自于它。 [OSHO]
24、所有主体客体及人类文化活动之全部。 [杜威]
25、智者不只发现机会,更要创造机会。[培根]
26、若无胆量,永远不可能升到高位。 [赛鲁士]
27、前往伟大的颠峰之路,必定崎岖。 [赛尼嘉]
28、若不好到至极,就不算伟大。[威廉·莎士比亚]
29、没有人爬山只为爬到山腰。为何甘于平庸呢?[詹姆士·哈特]
30、世界进步的历史是由那些不愿向失败者俯首称臣的人写下来的。 [西祖]
31、输赢并不在乎外在的强弱─完全发挥你内在的特质才是重要。[道格拉斯·马洛]
32、只要你想象得到,你就能做到;只要你能梦见,你就能实现。 [威廉·雅瑟·渥德]
33、要使一件工作获得最大的成就,尊重自己的情绪是很重要的。[不知名]
34、写作就跟生活一样,是一趟发现之旅。[亨利·米勒]
35、一本好书是大师心灵的鲜血,可以一代一代地保存珍藏。 [强恩·米尔顿]
36、如果你是个作家,这是比当百万富豪更好的事,因为这一份神圣的工作。 [哈兰·爱里森]
37、成为一个成功者最重要的条件,就是每天精力充沛的努力工作,不虚掷光阴。 [威廉·戴恩·飞利浦]
38、人生成功的秘诀是,当机会来到时,立刻抓住它。[班杰明·戴瑞斯李]
39、不停的专心工作,就会成功。 [查尔斯·修瓦夫]
40、你要确实的掌握每一个问题的核心,将工作分段,并且适当的分配时间。[富兰克林]
41、每一年,我都更加相信生命的浪费是在于:我们没有献出爱,我们没有使用力量,我们表现出自私的谨慎,不去冒险,避开痛苦,也失去了快乐。 [约翰·B·塔布]
42、微笑,昂首阔步,作深呼吸,嘴里哼着歌儿。倘使你不会唱歌,吹吹口哨或用鼻子哼一哼也可。如此一来,你想让自己烦恼都不可能。[戴尔·卡内基]
43、、当一切毫无希望时,我看着切石工人在他的石头上,敲击了上百次,而不见任何裂痕出现。但在第一百零一次时,石头被劈成两半。我体会到,并非那一击,而是前面的敲打使它裂开。 [贾柯·瑞斯]
44、人生不是一支短短的蜡烛,而是一只由我们暂时拿着的火炬;我们一要把它燃得十分光明灿烂,然后交给下一代的人们。 [萧伯纳]
45、虚荣心很难说是一种恶行,然而一切恶行都围绕虚荣心而生,都不过是满足虚荣心的手段。 [柏格森]
46、习惯正一天天地把我们的生命变成某种定型的化石,我们的心灵正在失去自由,成为平静而没有***的时间之流的奴隶。 [托尔斯泰]
47、要及时把握梦想,因为梦想一死,生命就如一只羽翼受创的小鸟,无法飞翔。 [兰斯顿·休斯]
48、生活的艺术较像角力的艺术,而较不像跳舞的艺术;最重要的是:站稳脚步,为无法预见的攻击做准备。 [玛科斯·奥雷利阿斯]
49、在安详静谧的大自然里,确实还有些使人烦恼、怀疑、感到压迫的事。请你看看蔚蓝的天空和闪烁的星星吧!你的心将会平静下来。[约翰·纳森·爱德瓦兹]
50、对一个适度工作的人而言,快乐来自于工作,有如花朵结果前拥有彩色的花瓣。 [约翰·拉斯金]
51、没有比时间更容易浪费的,同时没有比时间更珍贵的了,因为没有时间我们几乎无法做任何事。[威廉·班]
52、人生真正的欢欣,就是在于你自认正在为一个伟大目标运用自己;而不是源于独自发光、自私渺小的忧烦躯壳,只知抱怨世界无法带给你快乐。 [萧伯纳]
53、有三个人是我的朋友
爱我的人、恨我的人、以及对我冷漠的人。爱我的人教我温柔;恨我的人教我谨慎;对我冷漠的人教我自立。[J·E·丁格]
54、过去的事已经一去不复返。聪明的人是考虑现在和未来,根本无暇去想过去的事。 [英国哲学家 培根]
55、 真正的发现之旅不只是为了寻找全新的景色,也为了拥有全新的眼光。 [马塞尔·普劳斯特]
56、这个世界总是充满美好的事物,然而能看到这些美好事物的人,事实上是少之又少。 [罗丹]
57、称赞不但对人的感情,而且对人的理智也发生巨大的作用,在这种令人愉快的影响之下,我觉得更加聪明了,各种想法,以异常的速度接连涌入我的脑际。 [托尔斯泰]
58、人生过程的景观一直在变化,向前跨进,就看到与初始不同的景观,再上前去,又是另一番新的气候。 [叔本华]
59、为何我们如此汲汲于名利,如果一个人和他的同伴保持不一样的速度,或许他耳中听到的是不同的旋律,让他随他所听到的旋律走,无论快慢或远近。 [梭罗]
60、我们最容易不吝惜的是时间,而我们应该最担心的也是时间;因为没有时间的话,我们在世界上什么也不能做。 [威廉·彭]
61、人类的悲剧,就是想延长自己的寿命。我们往往只憧憬地平线那端的神奇玫瑰园,而忘了去欣赏今天窗外正在盛开的玫瑰花。 [戴尔·卡内基]
62、休息并非无所事事,夏日炎炎时躺在树底下的草地,听着潺潺的水声,看着飘过的白云,亦非浪费时间。[约翰·罗伯克]
63、没有人会只因年龄而衰老,我们是因放弃我们的理想而衰老。年龄会使皮肤老化,而放弃热情却会使灵魂老化。[撒母耳·厄尔曼]
64、快乐和智能的区别在于:自认最快乐的人实际上就是最快乐的,但自认为最明智的人一般而言却是最愚蠢的。 [卡雷贝·C·科尔顿]
65、每个人皆有连自己都不清楚的潜在能力。无论是谁,在千钧一发之际,往往能轻易解决从前认为极不可能解决的事。 [戴尔·卡内基]
66、每天安静地坐十五分钟·倾听你的气息,感觉它,感觉你自己,并且试着什么都不想。 [艾瑞克·佛洛姆]
67、你知道何谓沮丧---就是你用一辈子工夫,在公司或任何领域里往上攀爬,却在抵达最高处的同时,发现自己爬错了墙头。 [坎伯]
68、「伟大」这个名词未必非出现在规模很大的事情不可;生活中微小之处,照样可以伟大。 [布鲁克斯]
69、人生的目的有二:先是获得你想要的;然后是享受你所获得的。只有最明智的人类做到第二点。 [罗根·皮沙尔·史密斯]
70、要经常听、时常想、时时学习,才是真正的生活方式。对任何事既不抱希望,也不肯学习的人,没有生存的资格。 [阿萨·赫尔帕斯爵士]
71、旅行的精神在于其自由,完全能够随心所欲地去思考、去感觉、去行动的自由。 [威廉·海兹利特]
72、昨天是张退票的支票,明天是张信用卡,只有今天才是现金;要善加利用。 [凯·里昂]
73、所有的财富都是建立在健康之上。浪费金钱是愚蠢的事,浪费健康则是二级的谋杀罪。[B·C·福比斯]
74、明知不可而为之的干劲可能会加速走向油尽灯枯的境地,努力挑战自己的极限固然是令人激奋的经验,但适度的休息绝不可少,否则迟早会崩溃。 [迈可·汉默]
75、进步不是一条笔直的过程,而是螺旋形的路径,时而前进,时而折回,停滞后又前进,有失有得,有付出也有收获。 [奥古斯汀]
76、无论那个时代,能量之所以能够带来奇迹,主要源于一股活力,而活力的核心元素乃是意志。无论何处,活力皆是所谓“人格力量”的原动力,也是让一切伟大行动得以持续的力量。[史迈尔斯]
77、有两种人是没有什么价值可言的:一种人无法做被吩咐去做的事,另一种人只能做被吩咐去做的事。[C·H·K·寇蒂斯]
78、 对于不会利用机会的人而言,机会就像波浪般奔向茫茫的大海,或是成为不会孵化的蛋。 [乔治桑]
79、未来不是固定在那里等你趋近的,而是要靠你创造。未来的路不会静待被发现,而是需要开拓,开路的过程,便同时改变了你和未来。 [约翰·夏尔]
80、一个人的年纪就像他的鞋子的大小那样不重要。如果他对生活的兴趣不受到伤害,如果他很慈悲,如果时间使他成熟而没有了偏见。[道格拉斯·米尔多]
81、何时种马铃薯
大凡宇宙万物,都存在着正、反两面,所以要养成由后面、里面,甚至是由相反的一面,来观看事物的态度。 [老子]
82、在寒冷中颤抖过的人倍觉太阳的温暖,经历过各种人生烦恼的人,才懂得生命的珍贵。 [怀特曼]
83、一般的伟人总是让身边的人感到渺小;但真正的伟人却能让身边的人认为自己很伟大。[G.K.Chesteron]
84、播下行为的种子,可以收成习惯之果;播下习惯的种子,可以收成性格之果;播下性格的种子,可以收成命运之果。 [英国小说家 芮德]
85、问题不在于:一个人能够轻蔑、藐视或批评什么,而是在于:他能够喜爱、看重以及欣赏什么。[约翰·鲁斯金]
86、过去,我曾经接触过世界上许多大人物,但我从没见过被人叱责之后,比被人称赞之后,更能把事情做好的人。 [查尔斯·休瓦夫]
87、忙碌的人只会受到一个恶魔的引诱,而懒惰的人则会受到一群恶魔的引诱。 [汤玛斯·富勒]
88、人们经常会信口说什么尚未找到自我,但是事实上,自我并不是被找出来的,它是被创造出来的。[汤玛斯·萨斯]
89、痛苦才是人生的原貌,我们人类最后的喜悦,就是回忆过去所经历的痛苦经验。 [阿尔夫雷德]
90、 人类会因累积的学习和经验,告诉自己这也不能做,那也不能做,让拒绝尝试变成自己的习惯,那正是创造力最大的致命伤。 [阿雷克斯·F·奥斯本]
91、勇气就是能够超越愤怒、悲惨、恐惧、不平,同时内心明确告诉自己生命是美好的,尽管多磨难,生命是有意义的。 [桃乐丝·汤普森]
92、顺应社会、听从父母与老师告诉你的事,是安全而简单的存活方式,但这不叫生活,要生活,就得自己去发现什么是真实。 [克里希那穆提]
93、你就是自己的情感、思想、行动和意愿的综合体,你有权利感受,你有权利选择,你更有保持自我的权利。 [维斯冠]
94、人家的窃窃私语与你何干。让人家去说长道短;要像一座卓立的塔,绝不因为暴风而倾斜。 [但丁]
95、我时常诧异,虽然每个人都是爱自己甚于爱他人,但他们重视别人的观点却甚于重视自己的判断。[马可]
96、没有德行的美貌,转眼即逝,可是在你的美貌中,有一颗美好的灵魂,所以你的美常在。 [莎士比亚]
97、人格像一棵树,而名声就像树影,我们往往以为树影就像树的样子,其实唯有树身才是真实的。 [林肯]
98、最近常常觉得疲倦吗?这次不要用咖啡提神。试着问自己,有什么事情让你感到心烦、力不从心、无法释怀? [保罗·皮尔梭]
99、改变别人不容易,若要得到别人的好感,必须先改变自己,因为,这样才能心想事成。 [永崎一则]
100、每个人对幸福的认定标准不同,不必在乎别人是否赞同,重要的是自己满足与否。 [蒙特纽]
101、每个人都有自己的剧场,他集经理、演员、提词、编剧、换景、包厢侍者、看门人诸职于一身,此外还是观众。 [朱利叶斯·海尔]
102、如果我不为自己,那么,谁会为我·但如果我只为自己,那么,我生存有什么意义呢? [吉列里]
103、经验、环境和遗传造就了你的面目,无论是好是坏,你都得耕耘自己的园地;无论是好是坏,你都得弹起生命中的琴弦。 [卡耐基]
104、不要过分的醉心于放任自由,一点也不加以限制的自由,它的害处与危险实在不少。 [克雷洛卡]
105、人并不是在有时间时才培养耐心;正确的观念应该是:由于人学会了有耐心,所以才拥有比足够还要多的时间。 [保罗·皮尔梭]
106、如果你生气了,请在面对爱人之前先面对镜子。看看自己,你喜欢现在这张脸吗? [保罗·皮尔梭]
107、学习就像爬山。爬上这一座头,还有另一座更高的山,永无终点。 [永崎一则]
108、人是能用语言教鞭训练的动物。希望大家都能拥有将他人的话听成金玉良言的耳朵。 [永崎一则]
109、星期一的早上喜悦一下也无妨吧!在下个星期一到来之前,也还有一个礼拜的时间。 [艾雷娜·波特]
110、 打开窗户吧!别叫它遮蔽了碧蓝的天空;让花的阵阵幽香,飘进我的屋内;让太阳最初的光芒,洒遍我全身的每个角落。 [塔果卢]
111、对于自己的行动不要懊悔,也不要过于在意,人生一切都是实验,实验的次数愈多,对我们愈有利。 [爱默生]
112、世界上最广阔的是海洋,比海洋更广阔的是天空,比天空更广阔的是人的心灵。 [雨果]
113、横溢的天才,如沃土,如不加耕耘,即可能产生杂草,而不产生葡萄、橄榄供人享用。 [休谟]
114、个人离开社会,不可能得到幸福,正如植物离开土地而被扔到荒漠上不可能生存一样。 [列夫·托尔斯泰]
115、人就像藤萝,他的生存靠别的东西支持,他拥抱别人就从拥抱中得到了力量。 [蒲伯]
116、快乐可遇而不可求,我们最明亮的欢乐之火往往是由意想不到的火所点燃的。 [约克兰逊]
117、你所爱的人,他并不是全然完美,但是正因为他的五音不全,你才发现他的可爱之处。不完美,很好。所以你也该放轻松一点。
[保罗·皮尔梭]
118、与其猜测别人怎么认为你,不如多花点心思了解自己,人们往往因为追求了解自己而富有。 [蒙特纽]
119、你能真心诚意地帮助别人,别人也会来帮助你,这是我们人生中最好的一种报酬。 [爱默生]
120、世间的任何事物,追求时候的兴致总比享用时候的兴致浓烈。[莎士比亚]
121、喜欢作事的人,能因完成一件事而喜悦,这种人是最幸福的。然而改正缺点,补偿了错误,则是最高的幸福。 [哥德]
122、一个好的假期,是与对时间的观念比你更模糊的人一起度过。 [普力斯特里]
123、一个人钻研的愈多,他学习到的愈多,一个人学习到的愈多,他愈了解到他所知道的何其浅薄。 [威斯特]
124、人生只有一事算得是成功的──能够依照你自己的方式去生活。 [摩尔利]
125、世上的成功者愿意付出的远超过规定,同时还以欢喜的心去做。 [山缪.葛雷池]
126、决定你幸福或不幸福的,不在于你有什么,或你是谁,或你在什么地方,或你正在做什么,而是你怎么想。 [卡内基]
127、一句或两句体贴的话,对他人态度作宽大的了解,这些都可以减少对别人的伤害,保住他的面子。[卡内基]
128、人家说最好的好人,都是犯过错误的过来人;一个人往往因为有一点小小的缺点,将来会变得更好。 [莎士比亚]
129、学问是我们随身的财产,我们自己在什么地方,我们的学问也跟着我们在一起。 [莎士比亚]
130、阳光普照与暴风雨,不过是天空表情的不同而已,而不管命运是甘甜或苦涩,都应该使它成为最好的人生粮食。 [贺尔曼.荷生]
131、奉承有如轻吹的北风般令人心情愉快,但是,它却不是使帆张扬起来而触动船开航的一阵风。 [吉尔.鲁纳尔]
132、为何老是有人喜欢对他人恶言恶语·我想可能是大部份的人都误以为肯定了他人的优点,便会跟着减损了自己的光荣所成的。 [哥德]
133、一种方式只适合一种人,每个人都应该追求属于自己的方式;站在自己外围的人们,请小心,别摔倒了! [哥德]
134、名望一闪即逝,钱财振翅而飞,走红是个意外,久长唯有品格。 [无名]
135、休息并不是浪费生命,它能够让你在清醒的时候,做更多清醒、有效率的事。 [卡内基]
136、若想克服恐惧,不要只想到自己,设法去协助别人,恐惧便会消失。 [卡内基]
137、虽住在气候宜人的地方,也免不了受蚊蝇的滋扰,虽然享受着盛大的欢乐,也免不了受烦恼的缠绕。 [莎士比亚]
138、笑声有如音乐,在可以耳闻笑声的地方,人生的各种灾祸都遁逃无踪。 [杉达思]
139、不是自己出头的时候,就不要插嘴说话,什么事都想要插嘴的人,就是没有自信。 [易卜生]
140、我向来宁愿去相信每一个人的最好的一面 --- 这会省去很多的困扰。 [吉普林]
141、我从来没有遇到一个富有的人是快乐的,但是我很少遇到一个贫穷的人不想要变成一个富有的人。[马格瑞吉]
142、真正的友情就像良好的健康一样,不到丧失不会明暸它的价值。 [柯尔顿]
143、胜利者知道无快捷方式可达到高峰,他们一步一步地爬上山去,直升机对他们毫无用处。 [艾德勒]
144、进入一不同的新行业,必须对自己充满信心,在面对无情的打击和不公的命运时,你必须要能自持。 [苏菲亚罗兰]
145、 当批评减少而增多鼓励和夸奖时,人们所做的好事会增加,而不好的事会受到忽视而萎缩。 [卡内基]
146、要从工作中得到乐趣,首先不要让自己变成工作的奴隶,而要让自己变成工作的主人。无止境的日夜工作,正如无止境的追逐玩乐一样不可取。
[摘自乐在工作]
147、快乐是一种选择,我们可以在任何时间、任何地点和状况中做这种选择,因为每一项经验都可被建构出一种正面的意义,我们可以由任何人、事、物上汲取快乐。
[摘自 快乐的秘密]
148、常胜者,既不过份悲观,也不过份乐观。他的危机意识是用来化除危机;他的希望源自于知道未来永远有好转的可能。 [摘自 天天都成功]
149、爱情是一生的功课;宽容是永远的习题。觉悟-屠夫要放下的是刀;恋爱-情人要放下的是心。放心去爱,然后选择放心的携手相伴,或是离开.......
[摘自 爱是一生的功课]
150、每次大海退潮后,都会留下厚礼。看得见的是贝壳、小鱼、虾或是螃蟹;看不见的是懂得赠予与宽容的心 [摘自 希望之旅]
151、 左手拥抱了一堆东西、 右手拥抱了另一堆东西、但是地上还有一堆东西。我想伸手再取一些,结果所有的东西都洒满了一地.. [摘自一首古老的诗]
152、如果人生面对的最大苦难只是死亡,那还有什么可以害怕的呢?人生中没有解决不了的事,也没有无法面对的事。 [摘自电影 新不了情]
153、人生就像一盒巧克力,你永远不知道你会吃到什么口味,每天都要吃点苦的东西,以免忘记苦味。 [摘自电影 阿甘正传]
154、这是一个必须靠新一代领导人应付新问题、把握新机会的时代,因为新世界有待征服。 [约翰·甘乃迪]
155、逃避危险最后并不会比冒险犯难安全,怯懦者失败的机会和胆大的人一样多。 [海伦·凯勒]
156、人们最好在运筹帷幄时胆小一点,并想及所有不良后果;但在必须行动的时候,便要大胆敢为。 [西罗多得]
157、在研究过那些知名男女后,我发现,他们的成功是因为他们做手边诸事都用尽全力、以极度的热忱努力不懈。 [哈瑞·杜鲁门]
158、专家永远没有办法解决富足社会的饥馑问题,必须靠你我同心协力的行动。 [法兰西斯·摩尔·拉蓓]
159、你可能犯各种错误,但只要你豁达、坦诚,并且勇敢,你就不会对这世界有害。世界是属于年轻人的。 [温斯顿·丘吉尔]
160、有三件事使人生有意义-工作、意志与成功。意志开启通往成功之门,那是件宏伟且令人喜悦的事。经由工作我们通过一扇扇的门,直到最后,终能摘取成功的果实。 [路易斯·伯斯特]
161、只有在突破自我关切的瓶颈,进而关切全人类的福祉时,人生才算真正开始。 [马丁·路得·金]
162、适合某人穿的鞋,可能会让另一个穿来痛苦不堪;生活没有放诸四海皆准的良方。每个人都有他自成一格的生活模式。 [艾瑞克·强]
163、往前走,失败没有关系。但要败得有智能,败得优雅,败得有格调..... [汤姆·鲁宾斯]
164、一棵树长到它想长的高度后,它才知道怎样的空气适合它。 [亨利·大卫·梭罗]
165、就拥抱失败吧!寻找失败且学习爱上失败,可能是我们唯一的解脱方式。 [汤姆·鲁宾斯]
166、 无论真实的自我是如何奇怪或令人惊异,我们必须敢于作自己。 [梅·莎顿]
167、在争取正义的奋斗中,我们唯一的报赏只是一个机会。你不必指望你明天即将会有这个机会,而是必须努力不懈。 [佛烈德瑞克·道格拉斯]
168、和同伴格格不入的人,或许只是因为他听到的拍子不一样。何不就让这人随着他听到的乐声走,管他有无节奏,是否离谱呢。 [亨利·大卫·梭罗]
169、人类的进步既非自发也非必然﹍我们没有时间漠然或踌躇,现在就是振作起来积极行动的时刻。 [马丁路得·金]
- 作者: zengyingming 2006年08月9日, 星期三 17:09 回复(0) | 引用(0) 加入博采
- 作者: zengyingming 2006年08月8日, 星期二 12:13 回复(0) | 引用(0) 加入博采
作为开发环境,如果采用经典配置:JBuilder+Weblogic+Oracle,自是得心应手,但价格是惊人的。此配置主要是针对大型或超大型应用,硬件要求也很高,针对国内以中小型应用为主的现况,不作推荐。
虽然国内开发者早已习惯,但笔者以为还是防患于未然,应尽早加入OpenSource行列,促进国内软件业的发展。
本文所推荐的Eclipse、JBoss、MySQL均是名气很高的开源软件,并且非常实用。
1、JDK:到http://java.sun.com下载,推荐使用J2SDK1.4.X
2、JBoss:到http://www.jboss.org下载,笔者使用jboss-3.0.4_tomcat-4.0.6
3、MySQL:到http://www.mysql.com下载,笔者使用mysql-4.0.13,另须下载MySQL Control Center(图形化管理工具),到http://sourceforge.net/projects/mmmysql/下载MySQL的JDBC驱动程序,如mm.mysql-2.0.14-you-must-unjar-me.jar
4、Eclipse:到http://www.eclipse.org下载,最新版本为3.0M8,如果是新手推荐下载2.1.2和中文包(2.1.2_Translations)。到http://www.objectlearn.com/下载lomboz(此插件开发J2EE必需),需要注意的是lomboz的版本必须与eclipse版本一致,否则不正常。
环境设置(以Windows 2000下D盘作根目录为例):
1、JDK的安装配置在此不再说明。
2、将JBoss解压到D:/,将MySQL的JDBC驱程包中的mm.mysql-2.0.14-bin.jar解压到D:/jboss-3.0.4_tomcat-4.0.6/server/default/lib中,再将D:/jboss-3.0.4_tomcat-4.0.6/docs/examples/jca目录下的mysql-service.xml拷贝到D:/jboss-3.0.4_tomcat-4.0.6/server/default/deploy目录下,找到相应段落并作如下修改:
MySqlDS
jdbc:mysql://localhost:3306/test
org.gjt.mm.mysql.Driver
root
3、安装MySQL和MySQL Control Center,到mysql/bin目录中启动mysqld-nt.exe,即开启mysql服务。使用MySQL Control Center很方便地进行管理(类似SQL Server)。
4、将Eclipse(以3.0M8为例)解压到D:/,再将lomboz包中plugins目录中的内容解压到D:/Eclipse/plugins中,启动eclipse。(1)window--preferences--lomboz,设置JDK Tools.jar,Server Definitions--Server types:JBoss 3.0--Application Server Directory:D:/jboss-3.0.4_tomcat-4.0.6;Classpath Variable:D:/jboss-3.0.4_tomcat-4.0.6(2)window--Customize Perspective--Shortcuts--New--Java,勾选lomboz J2EE Wizards
- 作者: zengyingming 2006年08月1日, 星期二 16:08 回复(0) | 引用(0) 加入博采
【正文】和Java类路径(classpath)打交道的过程中,开发者偶尔会遇到麻烦。这是因为,类装载器实际装入的是哪一个类有时并不显而易见,当应用程序的classpath包含大量的类和目录时,情况尤其严重。本文将提供一个工具,它能够显示出被装入类文件的绝对路径名。
一、Classpath基础
Java虚拟机(JVM)借助类装载器装入应用程序使用的类,具体装入哪些类根据当时的需要决定。CLASSPATH环境变量告诉类装载器到哪里去寻找第三方提供的类和用户定义的类。另外,你也可以使用JVM命令行参数-classpath分别为应用程序指定类路径,在-classpath中指定的类路径覆盖CLASSPATH环境变量中指定的值。
类路径中的内容可以是:文件的目录(包含不在包里面的类),包的根目录(包含已打包的类),包含类的档案文件(比如.zip文件或者.jar文件)。在Unix家族的系统上,类路径的各个项目由冒号分隔,在MS Windows系统上,它们由分号分隔。
类装载器以委托层次的形式组织,每一个类装载器有一个父类装载器。当一个类装载器被要求装载某个类时,它在尝试自己寻找类之前会把请求先委托给它的父类装载器。系统类装载器,即由安装在系统上的JDK或JRE提供的默认类装载器,通过CLASSPATH环境变量或者-classpath这个JVM命令行参数装入第三方提供的类或者用户定义的类。系统类装载器委托扩展类装载器装入使用Java Extension机制的类。扩展类装载器委托自举类装载器(bootstrap class loader)装入核心JDK类。
你可以自己开发特殊的类装载器,定制JVM如何动态地装入类。例如,大多数Servlet引擎使用定制的类装载器,动态地装入那些在classpath指定的目录内发生变化的类。
必须特别注意的是(也是令人吃惊的是),类装载器装入类的次序就是类在classpath中出现的次序。类装载器从classpath的第一项开始,依次检查每一个设定的目录和压缩文件,尝试找出待装入的类文件。当类装载器第一次找到具有指定名字的类时,它就把该类装入,classpath中所有余下的项目都被忽略。
看起来很简单,对吧?
二、可能出现的问题
不管他们是否愿意承认,初学者和富有经验的Java开发者都一样,他们都曾经在某些时候(通常是在那些最糟糕的情形下)被冗长、复杂的classpath欺骗。应用程序所依赖的第三方类和用户定义类的数量逐渐增长,classpath也逐渐成了一个堆积所有可能的目录和档案文件名的地方。此时,类装载器首先装载的究竟是哪一个类也就不再显而易见。如果classpath中包含重复的类入口,这个问题尤其突出。前面已经提到,类装载器总是装载第一个它在classpath中找到的具有合适名字的类,从实际效果看,它“隐藏”了其他具有合适名字但在classpath中优先级较低的类。
如果不小心,你很容易掉进这个classpath的陷阱。当你结束了一天漫长的工作,最后为了让应用程序使用最好、最新的类,你把一个目录加入到了classpath,但与此同时,你却忘记了:在classpath的另一个具有更高优先级的目录下,存放着该类的另一个版本!
三、一个简单的classpath工具
优先级问题是扁平路径声明方法与生俱来固有的问题,但它不是只有Java的classpath才有的问题。要解决这个问题,你只需站到富有传奇色彩的软件巨构的肩膀上:Unix操作系统有一个which命令,在命令参数中指定一个名字,which就会显示出当这个名字作为命令执行时执行文件的路径名。实际上,which命令是分析PATH变量,然后找出命令第一次出现的位置。对于Java的类路径管理来说,这应该也是一个好工具。在它的启发之下,我着手设计了一个Java工具JWhich。这个工具要求指定一个Java类的名字,然后根据classpath的指引,找出类装载器即将装载的类所在位置的绝对路径。
下面是一个JWhich的使用实例。它显示出当Java类装载器装载com.clarkware.ejb.ShoppingCartBean类时,该类第一次出现位置的绝对路径名,查找结果显示该类在某个目录下:
> java JWhich com.clarkware.ejb.ShoppingCartBean
Class 'com.clarkware.ejb.ShoppingCartBean' found in '/home/mclark/classes/com/clarkware/ejb/ShoppingCartBean.class'
下面是第二个JWhich的使用实例。它显示出当Java类装载器装载javax.servlet.http.HttpServlet类时,该类第一次出现位置的绝对路径名,查找结果显示该类在某个档案文件中:
> java JWhich javax.servlet.http.HttpServlet
Class 'javax.servlet.http.HttpServlet' found in 'file:/home/mclark/lib/servlet.jar!/javax/servlet/http/HttpServlet.class'
四、JWhich的工作过程
要精确地测定classpath中哪一个类先被装载,你必须深入到类装载器的思考方法。事实上,具体实现的时候并没有听起来这么复杂——你只需直接询问类装载器就可以了!
1: public class JWhich {
2:
3: /**
4: * 根据当前的classpath设置,
5: * 显示出包含指定类的类文件所在
6: * 位置的绝对路径
7: *
8: * @param className <类的名字>
9: */
10: public static void which(String className) {
11:
12: if (!className.startsWith("/")) {
13: className = "/" + className;
14: }
15: className = className.replace('.', '/');
16: className = className + ".class";
17:
18: java.net.URL classUrl =
19: new JWhich().getClass().getResource(className);
20:
21: if (classUrl != null) {
22: System.out.println("/nClass '" + className +
23: "' found in /n'" + classUrl.getFile() + "'");
24: } else {
25: System.out.println("/nClass '" + className +
26: "' not found in /n'" +
27: System.getProperty("java.class.path") + "'");
28: }
29: }
30:
31: public static void main(String args[]) {
32: if (args.length > 0) {
33: JWhich.which(args[0]);
34: } else {
35: System.err.println("Usage: java JWhich
36: }
37: }
38: }
首先,你必须稍微调整一下类的名字以便类装载器能够接受(12-16行)。在类的名字前面加上一个“/”表示要求类装载器对classpath中的类名字进行逐字精确匹配,而不是尝试隐含地加上调用类的包名字前缀。把所有“.”转换为“/”的目的是,按照类装载器的要求,把类名字格式化成一个合法的URL资源名。
接下来,程序向类装载器查询资源,这个资源的名字必须和经过适当格式化的类名字匹配(18-19行)。每一个Class对象维护着一个对装载它的ClassLoader对象的引用,所以这里是向装载JWhich类的类装载器查询。Class.getResource()方法实际上委托装入该类的类装载器,返回一个用于读取类文件资源的URL;或者,当指定的类名字不能在当前的classpath中找到时,Class.getResource()方法返回null。
最后,如果当前的classpath中能够找到指定的类,则程序显示包含该类的类文件所在位置的绝对路径名(21-24行)。作为一种调试辅助手段,如果当前classpath中不能找到指定的类,则程序获取java.class.path系统属性并显示当前的classpath(24-28行)。
很容易想象,在使用Servlet引擎classpath的Java Servlet中,或者在使用EJB服务器classpath的EJB组件中,上面这段简单的代码是如何运作。例如,如果JWhich类是由Servlet引擎的定制类装载器装入,那么程序将用Servlet引擎的类装载器去寻找指定的类。如果Servlet引擎的类装载器不能找到类文件,它将委托它的父类装载器。一般地,当JWhich被某个类装载器装入时,它能够找出当前类装载器以及所有其父类装载器所装入的所有类。
【结束语】如果需要是所有发明之母,那么帮助我们管理Java类路径的工具可以说迟到了很长时间。Java新闻组和邮件列表中充塞着许多有关classpath的问题,现在JWhich为我们提供了一个简单却强大的工具,帮助我们在任何环境中彻底玩转Java类路径。
- 作者: zengyingming 2006年07月31日, 星期一 14:31 回复(0) | 引用(0) 加入博采
- 作者: zengyingming 2006年07月31日, 星期一 14:29 回复(0) | 引用(0) 加入博采
一、MySQL下载与安装
1、下载介绍
MySQL相信大家一定听说过,如果不知道它是干什么的,可以去google一下。
MySQL的大本营:http://www.mysql.com/
MySQL的下载地址:http://dev.mysql.com/downloads/ 因为要从这个地址下载不少东东,所以详细分析一下这个网页。
· 关于镜像网站,没有大陆的,有香港和台湾的。选择它,是为了加快下载速度,不过也不是绝对的,我经常就从北美的镜像下载,速度反而更快些。
· MySQL数据库服务器 这里我选择MySQL 4.1版本。版本太低,许多新特性用不上;太高,测试还没有完善,容易出Bug。这里选择它推荐的。
点击这个链接,进入下载页面,可以看到,当前版本是4.1.8。找到“Windows downloads”,如图,因为我使用的是Windows平台。这里我选择“Without installer (unzip in C:/)”这个版本,因为我喜欢不需要安装的软件,用的不高兴,随时可以直接删除,当然需要自己配置一下才能使用。
点击“Pick a mirror”,进入一个页面,那里的表格可以不填,直接选择一个链接下载它就可以了。下载后的文件名是“mysql-4.1.8-win-noinstall.zip”,大小是35.2M。
· 关于“Graphical clients” 图形界面的客户端,选择一个吧,可以进行图形化操作,何乐而不为?只不过以前我一直用“MySQL Control Center”的,现在却不开发了。选择“MySQL Administrator”吧,下载后的文件名是“mysql-administrator-1.0.19-win-noinstall.zip”(这里我选择的是不需要安装版本),大小是4.5M。
同样也选择“MySQL Query Browser”,它是来查询的。下载后的文件名是“mysql-query-browser-1.1.5-win-noinstall.zip”(不需要安装版本),大小是4.5M。
关于这方面的软件比较多,如:MySQL-Front,EMS MySQL Manager等,比较好用,不过它们是要Money的。
· “Application Programming Interfaces (APIs) ” 应用程序接口 由于我主要是面向Java应用,所以这里就选择“MySQL Connector/J ”,版本选择“MySQL Connector/J 3.0”,因为它是“Procdution”版本。下载后的文件名是“mysql-connector-java-3.0.16-ga.zip”,大小是1.2M。
2、安装MySQL
· 找到下载后的mysql-4.1.8-win-noinstall.zip,解压到D盘,是一个“mysql-4.1.8-win”文件夹,这里我把它改名为“mysql”,因为我不喜欢带版本号。即这时是“D:/mysql”目录,这个目录下有一个“data”目录,这里就是存放数据的地方。为了方便备份和升级,最好把它放在其它地方。这里我在D盘新建一个目录“mysql-data”,然后把“D:/mysql”目录下的“data”子目录剪切到“D:/mysql-data”目录中。
·新建一个“my.ini”文件,注意后缀名是“ini”。内容如下:
E:/WINDOWS/my.ini |
[WinMySQLAdmin] Server=D:/mysql/bin/mysqld-nt.exe [mysqld] basedir=D:/mysql datadir=D:/mysql-data/data |
上面“Server”指向MySQL的执行主程序,“basedir”指向MySQL的安装目录,“datadir”指向MySQL的数据存放目录(因为我改变了它,所以需要特别指定)。
然后把这个文件移动到Windows的系统安装目录下,我这里是“E:/WINDOWS”。
· 打开MS-DOS窗口,切换到“D:/mysql/bin”目录;或者把“D:/mysql/bin”添加到“环境变量”的“Path”变量中,这样可以避免切换到“D:/mysql/bin”目录。
·加入到Windows XP的服务中:
D:/mysql/bin> mysqld-nt -install
(这时打开“控制面板”->管理工具->服务:可以看到服务列表中存在“MySQL”服务,如果不希望它自动执行,可以改为手动,不用它的时候可以节省点内存)
· 启动和停止mysql服务
D:/mysql/bin>net start mysql
D:/mysql/bin>net stop mysql
· 移出mysql服务
mysqld-nt --remove
(如果你不再需要MySQL了,先停止MySQL服务,然后再移出MySQL服务,最后删除MySQL安装目录即可)
二、基本操作
1、准备工作
在D盘建立一个mysql-software的目录,把刚才下载的 mysql-administrator-1.0.19-win-noinstall.zip 复制到这个子目录中,解压,得到一个 MySQL Administrator 1.0 的目录。
同样如此操作 mysql-query-browser-1.1.5-win-noinstall.zip,得到一个 MySQL Query Browser 1.1 的目录。
2、启动服务:
·双击D:/mysql-software/MySQL Administrator 1.0 目录下的 MySQLSystemTrayMonitor.exe,这时会在任务栏右侧出现一个图标。点击“Start Instance”,运行MySQL。
· 然后双击 D:/mysql-software/MySQL Administrator 1.0 目录中的 MySQLAdministrator.exe,或者直接点击上面右键菜单中的“MySQL Administrator ”:
· 创建一个连接名,可以随便填,这里是“mxj”,用户名:root,密码空着。这是因为mysql默认有一个没有密码的root帐号。点击“OK”,出现管理窗口:
这没什么好说的,英文也很简单。只谈谈上面勾选的两项。
3、更改密码
好了,我的root帐号的密码设置为:javamxj 最后,点击“Apply Change”。
4、初始的数据库
上图可以看到,初始有两个数据库,mysql库中含有各种配置信息,不要在这个库中进行表操作。
test库初始是空的。另外,建立表时,不要和mysql库中的表名取名相同,以免冲突。
5、数据创建与查询(兼谈谈字符编码)
·现在来到查询浏览器,还是右击右下角“MySQL System Tray Monitor”图标,从中选择“MySQL Query Browser”,因为已经更改过root的密码,所以要填入新密码。
· 进入主界面,右击test数据库,创建一个新表。
· 如下简单创建一个表
· 切换到“Table Options”:
如果了解数据库的话,这些应该是很熟悉的,不多说了。注意字符设置默认是“Latin1”(保存改变,再次切换到这一栏,就能看到了)。
· 填入一些测试数据:
· 关闭“MySQL Query Browser”,再重新打开它,切换到testtable表,看到了没有?刚才输入的中文变成了“??????”,为什么呢? 再次切换到“Table Options”:
知道为什么了吧,原来默认字符是“latin1”,因为MySQL是瑞典一家公司的产品。中国人看来要努力了!
6、解决方法:
· 停止MySql服务,关闭所有与MySql相关的程序,打开Windows的系统安装目录下的 my.ini 文件,如下修改:
E:/WINDOWS/my.ini |
[WinMySQLAdmin] Server=D:/mysql/bin/mysqld-nt.exe [mysqld] basedir=D:/mysql datadir=D:/mysql-data/data default-character-set=gbk [client] default-character-set=gbk |
- 作者: zengyingming 2006年07月28日, 星期五 17:06 回复(0) | 引用(0) 加入博采
安装并初始化MYSQL后我们还要测试是否能够正常连接该数据库。
第一步:通过“开始->运行->输入cmd”进入命令行模式。
第二步:使用cd/退到C盘根目录,然后使用cd usr,cd mysql,cd bin三个命令进入c:/usr/mysql/bin目录。(如图12)
图12:进入c:/usr/mysql/bin目录
第三步:输入mysql -h xxzxcompaq连接此MYSQL数据库,名称xxzxcompaq实际上就是计算机名称,当然我们也可以用IP地址或localhost来替代,出现Welcome to the MySQL monitor. Commands end with ; or /g.
Your MySQL connection id is 459 to server version: 3.22.20a-log
Type 'help' for help.
mysql>
说明我们已经正常连接到数据库上。(如图13)
图13:正常连接数据库
小提示:
当要登录到网上其他数据库时需要使用诸如MySQL -h host -u user -p password的命令,-h后的host为对方主机名或IP地址,-u后为数据库用户名,-p后跟密码。
第四步:在mysql>提示符中输入?可以查看可用命令。(如图14)
图14:查看可用命令
第五步:输入connect test将连接默认数据库。(如图15)
图15:连接默认数据库
四、启动MYSQL数据库:
安装完MYSQL数据库后我们有多种方法启动他。
方法一:系统默认启动
因为安装完MYSQL后该数据库将以服务的形式存在,所以在每次启动系统时都会自动启动MYSQL数据库。
方法二:命令启动法
手工运行bin目录中的winmysqladmin程序也可以实现启动MYSQL数据库的目的。(如图16)
图16:使用winmysqladmin程序启动MYSQL数据库
五、总结:
至此我们完成了MYSQL数据库的安装,初始化与连通调试工作,接下来就可以根据企业实际来建立数据库建立各种表了。相信稳定高效的MYSQL数据库会为企业业务提供良好的支持。
- 作者: zengyingming 2006年07月28日, 星期五 16:56 回复(0) | 引用(0) 加入博采
1、安装向导欢迎界面
2、选择安装类型
Typical(典型)、Complete(完全)、Custom(自定义)
选择“Custom”安装
3、自定义安装
默认情况下MySQL将会被安装到C:/Program Files/MySQL/MySQL Server 4.1/文件夹里面。
可以点“Change”更改路径。
4、准备开始安装
Install——开始安装
5、创建MySQL.com帐号的界面,如果是首次使用MySQL,选“Create anew free MySQL.com accout”。
6、输入带“*”号需要填写的信息
7、出现预览你刚才填的信息的界面
8、安装完成界面
注意:这里有个配置向导的选项(Configure the MySQL Server now),建议勾选立即配置你的MySQL。
9、配置类型选择页面。选“Detailed configuration”(详细配置)。
10、进入服务类型选择页面。选“Developer Machine”(开发者机器),这样占用系统的资源不会很多。
11、数据库用法选择页面。选择“Multifunctional Database”。
12、选择InnoDB数据存放位置页面。
不用更改设置,直接放在Installation Path安装目录里即可
13、选择MySQL的同时联接数。
选择“Manual Setting”,设置根据自己需要,酌情设置。
14、配置MySQL在TCP/IP通讯环境中的端口。
选择默认的3306端口即可。
15、选择MySQL中的字符设置。
注意,这里的选择将会影响你是否能在MySQL中使用中文。选择gb2312字符集以便支持简体中文,繁体中文选big5。
16、设置Windows服务选项。
注意,“Install As Windows Service”一定要勾选,这是将MySQL作为Windows的服务运行。“Service Name”就用默认的“MySQL”或者你喜欢的服务名(推荐用默认的“MySQL”)。下面的“Launch the MySQL Server automatically”一定要勾选,这样Windows启动时,MySQL就会自动启动服务,要不然就要手工启动MySQL。出现10061错误,原因在这里。
17、设置根帐号root的登录密码。
“Modify Security Settings”是设置根帐号的密码,输入你设定的密码即可。“Create An Anonymous Account”是创建一个匿名帐号,这样会导致未经授权的用户非法访问你的数据库,有安全隐患,建议不要勾选。
18、MySQL配置向导将依据你上面的所有设定配置MySQL,以便MySQL的运行符合你的需要。
点“Execute”开始配置,当出现“Service started successfully”时,说明你的配置完成,MySQL服务启动成功。
点“Finish”完成,整个MySQL的配置完成,剩下的就是用MySQL客户端连接MySQL服务器,然后使用了。
19、检查
在Windows XP下安装完MySQL后,它就已经自动启动服务了,并且在开始菜单中有其客户端的快捷方式连接。
20、通过Windows的服务管理器查看。
“开始”-“运行”,输入“services.msc”,回车。弹出Windows的服务管理器,然后就可以看见服务名为“mysql”的服务项了,其右边标明“已启动”。
21、开启和关闭
开始”-“运行”,输入“cmd”, XP命令提示符界面
启动mysql服务:输入“net start mysql”
停止mysql服务:输入“net stop mysql”
(注意,这里是输入的MySQL服务的名字。如果你的MySQL服务的名字是DB或其它名字,你应该输入“net start DB”或其它名)。
- 作者: zengyingming 2006年07月28日, 星期五 16:37 回复(0) | 引用(0) 加入博采
一、开发环境配置
第一步:下载j2sdk和tomcat:到sun官方站(http://java.sun.com/)下载j2sdk,注意下载版本,同时最好下载J2SE Documentation,然后到tomcat官方站点(http://jakarta.apache.org/)下载tomcat
第二步:安装和配置你的j2sdk和tomcat:执行j2sdk和tomcat的安装程序,然后按默认设置进行安装即可。
1.安装j2sdk以后,需要配置一下环境变量,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的j2sdk安装在c:/j2sdk1.5.0):
JAVA_HOME=c:/j2sdk1.5.0
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;(.;一定不能少,因为它代表当前路径)
path=%JAVA_HOME%/bin
接着可以写一个简单的java程序来测试J2SDK是否已安装成功:
public class Test{
public static void main(String args[]){
System.out.println("This is a test program.");
}
}
将上面的这段程序保存为文件名为Test.java的文件。
然后打开命令提示符窗口,cd到你的Test.java所在目录,然后键入下面的命令
javac Test.java
java Test
此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印出这句话,你需要仔细检查一下你的配置情况。
2.安装Tomcat后,在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在c:/tomcat):
CATALINA_HOME=c:/tomcat
然后修改环境变量中的classpath,把tomat安装目录下的common/lib下的(可以根据实际追加)servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%/lib/dt.jar;%JAVA_HOME%/lib/tools.jar;%CATALINA_HOME%/common/lib/servlet-api.jar;
接着可以启动tomcat,在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
PS:
版本问题: j2sdk1.4.2_08+Tomcat 5.0一切正常,jdk1.5.0_04+Tomcat 5.5好像不能通过,Tomcat 5.5启动不了。还发现一种情况Tomcat 启动后会自动关闭
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
A application for test.
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
jvm应填写到
c:/j2sdk/bin
给你一个简单的配置::::
JSP环境配置心得
首先要说的是,使用jdk+tomcat完全可以配置我们的jsp服务器,不再需要其实任何东东,有很多文章介绍了Apache,其实根本用不着,一般的学习调试tomcat完全可以胜任了。
安装jdk后,tomcat在安装之前会自动找到jdk的安装路径,一路点击"下一步",经过一段时间的文件复制,最后"close",完成comcat的安装。
您最好去下载一个版本较高的tomcat,比如4.1以上的,因为它不需要设置太多的系统变量,右击"我的电脑",选择"属性"->"高级"->"环境变量"->"系统变量",新建一个TOMCAT_HOME,值设置成你的tomcat所在的路径,比如:D:/Program Files/Apache Group/Tomcat 5.5,配置完成。
从开始菜单中找到tomcat选项,一般打开顺序是:开始->程序->Apache Tomcat 5.5,选择"Start Tomcat",让jsp服务器开始运行,此时会打开一个类似Dos的窗口,会显示一些相关的信息。
如果您使用代理上网,一定要先撤掉代理,不然您的jsp程序永远也得不到执行。如果不是代理的,这一步就跳过了。
打开浏览器,在地址栏中输入:http://localhost:8080,如果看到有老虎(我也不知道是老虎还是猫)的画面,恭喜您,您成功了一半。
先来享受一下成功的喜悦吧,请输入下面的代码:
Reusing JavaBeans in JSP |
---|
下面就讨论Servlet的运行:
首先要运行Servlet,则需要JSP/Servlet container,我建议初学者用Tomcat
Tomcat(最新版本5.5):http://apache.justdn.org/jakarta/tomcat-5/v5.5.9/bin/jakarta-tomcat-5.5.9.exe然后把这个压缩包解压到:
C:/Tomcat
然后再配置环境变量:
添加三个系统变量:
JAVA_HOME: C:/JDK
TOMCAT_HOME: C:/Tomcat
CLASSPATH: %JAVA_HOME%/lib;%TOMCAT_HOME%/lib
Tomcat的环境变量就配置完毕了,下面检验Tomcat是否能够运行:
在控制台中转到C:/Tomcat/bin这个目录,运行startup,然后回出现一个窗口,连跳一大串东西,最后表示Server已经运行
在浏览器中输入http://localhost:8080,出现欢迎界面,则表示Tomcat没问题了
然后和上面一样,写入你的第一个Servlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HelloWorld extends HttpServlet
{
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("
}
}
然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servlet.*
那么就是应该把C:/Tomcat/common/lib里面的servlet.jar(根据实际来看)文件拷贝到C:/JDK/jre/lib/ext中,再次编译,就没有问题了!
然后在Tomcat目录里面的C:/Tomcat/webapps/ROOT里面按如下的文件结构:
ROOT/index.html
ROOT/welcom.jsp
ROOT/WEB-INF/lib/MyServlet.jar(如果你的servlet的.class打成了.jar文件,则放在lib下面)
ROOT/WEB-INF/classes/HelloWorld.class(把上面生成的HelloWorld.class文件放在这个里面)
然后在浏览器中输入http://localhost:8080/servlet/HelloWorld,于是Server众望所归的报错了:Error 404--Not Found
怎么回事呢?
Servlet必须使用C:/Tomcat/webapps/ROOT/WEB-INF这个目录下面的web.xml文件进行注册,用EP打开这个web.xml文件,
在里面加入
这样的结构
表示指定包含的servlet类.
而以下的结构
表示指定HelloServlet应当映射到哪一种URL模式。
在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/servlet/HelloWorld,那么偌大一个Hello,World!等着你呢,恭喜你
- 作者: zengyingming 2006年07月28日, 星期五 14:47 回复(0) | 引用(0) 加入博采
测试环境为 jdk1.2.2 jswdk-1.0 winnt4.0中文版。
1。java是大小写敏感的,用过其他编程语言的人最容易犯这个错误,尤其是刚上手的时候。我刚开始调试jsp的时50%以上的编译错误是都是因为这个。
2。java的调用过程都是要加括号的,一开始比较容易忽视,如title=request.getParameter(/"title/").trim();
3。jsp中对应asp中的request.form()和request.querystring()的解决方法。
jsp中取得参数没有form和queryString之分,都是通过request.getParameter(/"XXXX/")来取得。虽然jsp也有request.getQueryString()方法,但测试结果是 test.jsp?id=1&page=20 得到 id=1&page=20。
如果url和form有相同的参数名称呢?下面是一段测试代码:
缩略图实现,将图片(jpg,gif,bmp等等)真实的变成想要的大小
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
import java.net.*;
import java.applet.*;
import java.sql.*;
//缩略图类,
//本java类能将jpg图片文件,进行等比或非等比的大小转换。
//具体使用方法
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度,是否等比缩放(默认为true))
public class Small_pic{
String InputDir; //输入图路径
String OutputDir; //输出图路径
String InputFileName; //输入图文件名
String OutputFileName; //输出图文件名
int OutputWidth=80; //默认输出图片宽
int OutputHeight=80; //默认输出图片高
int rate=0;
boolean proportion=true; //是否等比缩放标记(默认为等比缩放)
public Small_pic(){
//初始化变量
InputDir="";
OutputDir="";
InputFileName="";
OutputFileName="";
OutputWidth=80;
OutputHeight=80;
rate=0;
}
public void setInputDir(String InputDir){
this.InputDir=InputDir;
}
public void setOutputDir(String OutputDir){
this.OutputDir=OutputDir;
}
public void setInputFileName(String InputFileName){
this.InputFileName=InputFileName;
}
public void setOutputFileName(String OutputFileName){
this.OutputFileName=OutputFileName;
}
public void setOutputWidth(int OutputWidth){
this.OutputWidth=OutputWidth;
}
public void setOutputHeight(int OutputHeight){
this.OutputHeight=OutputHeight;
}
public void setW_H(int width,int height){
this.OutputWidth=width;
this.OutputHeight=height;
}
public String s_pic(){
BufferedImage image;
String NewFileName;
//建立输出文件对象
File file = new File(OutputDir+OutputFileName);
FileOutputStream tempout =null;
try{
tempout= new FileOutputStream(file);
}catch(Exception ex){
System.out.println(ex.toString());
}
Image img=null;
Toolkit tk=Toolkit.getDefaultToolkit();
Applet app=new Applet();
MediaTracker mt = new MediaTracker(app);
try {
img=tk.getImage(InputDir+InputFileName);
mt.addImage(img, 0);
mt.waitForID(0);
}catch(Exception e) {
e.printStackTrace();
}
if(img.getWidth(null)==-1){
System.out.println(" can't read,retry!"+"
");
return "no";
}else{
int new_w;
int new_h;
if (this.proportion==true) //判断是否是等比缩放.
{
//为等比缩放计算输出的图片宽度及高度
double rate1=((double)img.getWidth(null))/(double)OutputWidth+0.1;
double rate2=((double)img.getHeight(null))/(double)OutputHeight+0.1;
double rate=rate1>rate2?rate1:rate2;
new_w=(int)(((double)img.getWidth(null))/rate);
new_h=(int)(((double)img.getHeight(null))/rate);
}
else{
new_w=OutputWidth; //输出的图片宽度
new_h=OutputHeight; //输出的图片高度
}
BufferedImage buffImg = new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
Graphics g = buffImg.createGraphics();
g.setColor(Color.white);
g.fillRect(0,0,new_w,new_h);
g.drawImage(img,0,0,new_w,new_h,null);
g.dispose();
JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(tempout);
try{
encoder.encode(buffImg);
tempout.close();
}catch(IOException ex){
System.out.println(ex.toString());
}
}
return "ok";
}
public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName){
//输入图路径
this.InputDir=InputDir;
//输出图路径
this.OutputDir=OutputDir;
//输入图文件名
this.InputFileName=InputFileName;
//输出图文件名
this.OutputFileName=OutputFileName;
return s_pic();
}
public String s_pic(String InputDir,String OutputDir,String InputFileName,String OutputFileName,int width,int height,boolean gp){
//输入图路径
this.InputDir=InputDir;
//输出图路径
this.OutputDir=OutputDir;
//输入图文件名
this.InputFileName=InputFileName;
//输出图文件名
this.OutputFileName=OutputFileName
//设置图片长宽
setW_H(width,height);
//是否是等比缩放 标记
this.proportion=gp;
return s_pic();
}
public static void main(String [] a)
{
//s_pic(大图片路径,生成小图片路径,大图片文件名,生成小图片文名,生成小图片宽度,生成小图片高度)
Small_pic mypic =new Small_pic();
System.out.println(
mypic.s_pic("E://JAVA//J2EEDatum//王亮jsp资料//缩图例子//personal//",
"E://JAVA//J2EEDatum//酒剑仙jsp资料//缩图例子//personal//",
"1.jpg","new1.jpg",80,80,true)
);
}
在JSP中使用JavaMail
Java中文站
你希望在jsp中建立一个邮件发送收取工具吗?下面将介绍的就是在jsp中建立一个邮件发送收取工具。在这篇文章中你可以了解到JavaMail API的一些要点以及如何在JSP中使用它。本文中还包括了在JSP中使用JavaMail的实例。JavaMail是JSP应用软件中相当强大的API。
阅读这篇文章需要对JSP、JavaBeans和JavaMail有一定的初步了解。当然,有关于JavaMail的知识你可以通过阅读这篇文章来获得。如果你对于以上三项一无所知,但你所使用的服务器支持JSP和JavaMail的话,你可以仅仅通过复制/粘贴来使用它们。
什么是JavaMail
JavaMail是Sun发布的用来处理email的API。它可以方便地执行一些常用的邮件传输。
虽然JavaMail是Sun的API之一,但它目前还没有被加在标准的java开发工具包中(Java Development Kit),这就意味着你在使用前必须另外下载JavaMail文件。除此以外,你还需要有Sun的JavaBeans Activation Framework (JAF)。JavaBeans Activation Framework的运行很复杂,在这里简单的说就是JavaMail的运行必须得依赖于它的支持。在Windows 2000下使用需要指定这些文件的路径,在其它的操作系统上也类似。
接下来要讲解的是这篇指南的最难理解的部分。
这篇指南包括三部分:HTML表格、关于JavaMail、JavaMail和JSP的结合。
第一部分:HTML表格
第一部分提供了一个最基本的基于HTML的email发送收取程序的例子。第二部分则讲述JavaMail的工作原理。第三部分则介绍将JavaMail加入JSP,创建一个基本的email发送收取程序。
划分组件
JSP最重要的特性是能将整个网页划分成一些细小的组件。这里使用的组件包括:
●一个用来将email的信息发送给JSP的HTML表格;
●一个JSP页面用来处理和发送信件。
第一步,就是创建一个HTML表格用来给JSP页面发送信息。你可以将以下的HTML代码复制到你的电脑上:
用来发送email的HTML源代码
Your mail has been sent.
- 作者: zengyingming 2006年07月28日, 星期五 14:44 回复(0) | 引用(0) 加入博采