??xml version="1.0" encoding="utf-8" standalone="yes"?>欧美xxxx网站,偷拍与自拍一区,中文字幕一区avhttp://www.aygfsteel.com/lijiezjn/articles/94155.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:45:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94155.html

1. 问:(x)怎样?Win95 的记事本 (Notepad) 来编?Java源程序?

{:(x)记得存档时扩展名要加?.java"Q文件类型改成:(x)“所有的文g(*.*)”?

 

2. 问:(x)到底 Java 是如何传递参数的Q是by value或by referenceQ?

{:(x)All parameters (values of primitive types, and values that are references to objects) are passed by value [JLS sect 8.4.1]。根据以?Java规格文g的说? 所有参数应该都是传值的(by value)。但实际? 实际l验却告诉我们所?Java 的对象都是传址?by reference)。因此我们可以这栯? 基本cd(如int, float, char{?是by valueQ而所谓“对象?Object)则是by value of reference to object?

 

3. 问:(x)Stringq个cd的classZ定义成finalQ?

{:(x) 主要是ؓ(f)了“效率??“安全性?的缘故。若 String允许被? ׃它的高度被用率, 可能?x)降低程序的性能Q所以String被定义成final?

 

4. 问:(x)finalizers和C++ ?destructors有何差异?

{:(x)Java内部h“内存用回收?的机Ӟ 虽然它也提供了类?(C++ ? destructors?finalize()Q每个对象都可以使用q个Ҏ(gu) methodQ但必须冒著破坏原先回收机制的危险。所以徏议尽量避免用finalize()Q不妨考虑多?null ?dispose() 来释源会(x)好一些?

 

5. 问:(x)l承了一个class叫做 FrotzQ编译器却给我“No constuctor Frotz() in the class”这L(fng)错误提示Qؓ(f)什么呢Q?

{:(x)C每当(zhn)定义了一?class的constructorQ除非?zhn)一开始就去call q个constructorQ否?Java ?x)自动引入superclass原先不含参数?constructorQ?如果superclass?constructor都是有参数的Q那么问题中的错误提CZ出现了?解决的方法很? 找一?API文gQ加上正的参数得了?

 

6. 问:(x)怎样让charcd的东西{换成intcdQ?

{:(x)

char c = 'A'Q?

int i = cQ?

//反过来只要作强制cd转换p?

c = (char) IQ?

 

7. 问:(x)我的applet原先好好? 一攑ֈweb server׃(x)有问题,Z么?

{:(x)一般来_(d)从以下方向试试:(x)

定class文g的格式没错——已l编译过Q也没有损坏的情形;

定所有用到的class文g攑ֈweb server上,一个都不行Q?

定所有的文g名和class名称一_(d)特别(g)查大写有无差错Q?

如果E序中用到packageQweb server上的目录p当心了。譬如?zhn)在class中宣告了一个叫COM.foo.util的packageQ那么web server的applet codebase目录底下非得有 COM/foo/utilq个子目录不可?注意目录名称也有大小写之?Q?

web server上的文g档案应该事先讑֮好?其是searchQread和execute权限)

 

8. 问:(x)怎样?Applet中用某个囑Ş涂满整个背景Q?

{:(x)在背景徏?Panel ?Canvas, 然後用图形填满它?

 

9. 问:(x)怎样?Applet 中徏立自q菜单(MenuBar/Menu)Q?

{:(x)首先在Applet的init() Ҏ(gu)中徏立Frame instanceQ?然后MenusQ?Menubar都加上去卛_?(setMenuBar() ?Frame下的Ҏ(gu))或者,扑ֈApplet上层的Frame后依法炮制?

Container parent = getParent();

while (! (parent instanceof Frame) )

parent = parent.getParent();

Frame theFrame = (Frame) parent;

注意Q第二个Ҏ(gu)在Mac或某些browsers上ƈ不可行?

如果(zhn)用的是JDK 1.1Q也可以考虑使用popup menuQ这样就不必理会(x)Frame的问题了?

 

10. 怎样比较两个cd为String的字W串Q?

{:(x)在两个对象之间?"=="Q会(x)“两个对象是否有同一reference”的l果传回。也是? q等同于“两个对象是否拥有同一地址 (address)”,或者“两个对象物件是否ؓ(f)同一对象”。如果?zhn)的意思是判断两个字符串的内容是否相同Q那么应该用以下的Ҏ(gu)才对Q?

if (s1.equals(s2) )

or if (s1.equalsIgnoreCase(s2) )

or if (s1.startsWith(s2) )

or if (s1.endsWith(s2) )

or if (s1.regionMatches(s1_offset, s2, s2_offset, length) )

or if (s1.compareTo(s2) <0)

 

11. 怎样QҎ(gu)(float)相加 ? Float 好像没有办法Q?

{:(x)我猜x的程式大概写成这P(x)

Float One;

Float Two;

Float Hard = One + Two;

h?float ?Float 是不同的Q前者是 Java 基本cd之一, 而后者却是class。?zhn)应该源代码改?f)Q?

float One;

float Two;

float Hard = One + Two;

?

Float One = new Float(1.0);

Float Two = new Float(2.0);

Float Hard = new Float(One.floatValue() + Two.floatValue());

 

12. 如何字串String转换成整数intQ?

{:(x)有两个方法:(x)

1)int i = Integer.parseInt([String]); ?

 

i = Integer.parseInt([String],[int radix]);

2)int i = Integer.valueOf(my_str).intValue();

? 字串转成Double, Float, Long的方法大同小异?

 

13. 如何整?int 转换成字?StringQ?

{:(x)有三U方法:(x)

1)String s = String.valueOf(i);

2)String s = Integer.toString(i);

3)String s = "" + i;

注:(x)Double, Float, Long 转成字串的方法大同小异?

 

14. 如何从一个文件档案的新增记录Q?

{:(x)有两U方法:(x)

1)RandomAccessFile fd = new RandomAccessFile(file,"rw");

fd.seek(fd.length());

然后使用 fd 的method写入

2)使用FileOutputStream(String nameQboolean append) throws IOExceptionq个 constructor

 

15. 如何讄Java 2(JDK1.2)的环境变量?

{:(x)Java 2安装后,需要设|PATH和JAVA_HOME环境变量。与JDK1.1不同的是Q设|好JAVA_HOME环境变量后,JVM自动搜索系l类库以?qing)用L(fng)当前路径。Java 2环境变量的设|如下例所C:(x)

Solarisq_Q?setenv JAVA_HOME Java2的安装\?
setenv PATH $JAVA_HOME/bin:${PATH}

Windowsq_Qset JAVA_HOME=Java2的安装\?
set PATH=$JAVA_HOME\bin;%PATH%

 

16. 哪些Java集成开发工h持Java 2Q?

{:(x)目前行的Java集成开发环?如Inprise的JbuilderQSymantec的Visual Cafe,QSybase的PowerJ都支持Java 2?

 

17. 如果在Netscape或IE览器中q行Java applet时出C错误,如何定错误范围Q?

{:(x)当java applet在浏览器中运行时Q用的是浏览器本n的缺省JVM。而不同浏览器对JDK的支持程度也不尽相同。因此,在Netscape或IE览器中q行Java applet出现了错误,使用JDK提供的工具appletviewer或Sun公司的Hotjava览器来试该appletQ以定错误的生是与浏览器相关。如果applet在appletviewer或Hotjava中运行一切正常,则错误的产生是由于浏览器不完全兼容JDK而引L(fng)。此Ӟ解决Ҏ(gu)可以是用Hotjava览器或者安?Sun公司的Java Plugin。如果applet在Hotjava览器或appletviewer中运行即发生错误Q则应当Ҏ(gu)错误提示(g)查appletE序?

 

18. 在Java语言?如何列出PC机文件系l中的所有驱动器名?

{?在Java 2版本中,java.io包中的FilecL增加了方法listRoots()可以实现q一功能?

 

19. Z么Runtime.exec("ls")没有M输出Q?

{:(x)调用Runtime.execҎ(gu)生一个本地的q程Qƈq回一个Process子类的实例,该实例可用于控制q程或取得进E的相关信息。由于调用Runtime.execҎ(gu)所创徏的子q程没有自己的终端或控制収ͼ因此该子q程的标准IO(如stdinQstdouQstderr)都通过 Process.getOutputStream()QProcess.getInputStream()Q?Process.getErrorStream()Ҏ(gu)重定向给它的父进E了。用户需要用q些stream来向子进E输入数据或获取子进E的输出。所以正执行Runtime.exec("ls")的例E如?

try

{

process = Runtime.getRuntime().exec (command);

InputStreamReader ir=newInputStreamReader(process.getInputStream());

LineNumberReader input = new LineNumberReader (ir);

String line;

while ((line = input.readLine ()) != null)

System.out.println(line);

}

catch (java.io.IOException e){

System.err.println ("IOException " + e.getMessage());

}

 

20. 若通过ObjectOutputStream向一个文件中多次以追加方式写入objectQؓ(f)什么用ObjectInputStreamdq些object时会(x)产生StreamCorruptedExceptionQ?

{?使用~省的serializetion的实现时Q一个ObjectOutputStream的构造和一个ObjectInputStream的构造必M一对应。ObjectOutputStream的构造函C(x)向输出流中写入一个标识头Q而ObjectInputStream?x)首先读入这个标识头。因此,多次以追加方式向一个文件中写入objectӞ该文件将?x)包含多个标识头。所以用ObjectInputStream?deserializeq个ObjectOutputStreamӞ生StreamCorruptedException?

一U解x法是可以构造一个ObjectOutputStream的子c,q覆盖writeStreamHeader()Ҏ(gu)。被覆盖后的 writeStreamHeader()Ҏ(gu)应判断是否ؓ(f)首次向文件中写入objectQ若是,则调用super.writeStreamHeader ()Q若否,即以q加方式写入objectӞ则应调用ObjectOutputStream.reset()Ҏ(gu)?

 

21. 对象的序列化(serialization)cL面向的,应如何将对象写入到随机存取文件中Q?

{? 目前,没有直接的方法可以将对象写入到随机存取文件中。但是可以用ByteArray输入/输出作Z介,来向随机存取文g中写入或从随机存取文件中d字节Qƈ且可以利用字节流来创建对象输?输出,以用于读写对象。需要注意的是在字节中要包含一个完整的对象Q否则读写对象时发生错误。例如, java.io.ByteArrayOutputStream可用于获取ObjectOutputStream的字节流Q从中可得到byte数组q可之写入到随机存取文件中。相反,我们可以从随机存取文件中d字节数组Q利用它可构造ByteArrayInputStream,q而构造出 ObjectInputStream,以读取对象?

 

22. 在JDK1.1中Threadcd义了suspend()和resume()Ҏ(gu)Q但是在JDK1.2中已l过?应用什么方法来替代之?

{? Thread.suspend本n易于产生死锁。如果一个目标线E对某一关键pȝ资源q行了加锁操?然后该线E被suspendQ那么除非该U程?resumeQ否则其它线E都无法访问该pȝ资源。如果另外一个线E将调用resumeQ该线El运行,而在此之前,它也需要访问这一pȝ资源Q则生死锁?

因此,在Java 2中,比较行的方式是定义U程的状态变量,q目标U程轮询该状态变量,当状态ؓ(f)(zhn)挂状态时Q可以用wait()Ҏ(gu)使之处于{待状态。一旦需要该U程l箋q行Q其它线E会(x)调用notify()Ҏ(gu)来通知它?


如果(zhn)有更好的答案,误贴。谢谢!

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:45 发表评论
]]>
(转蝲)Java学习(fn)Q是一条O长的道\http://www.aygfsteel.com/lijiezjn/articles/94154.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:43:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94154.html
  我在Java 1.0正式问世前就开始学?fn)JavaQ这么多q过MQ到现在我的Java学习(fn)历程q没有停q。我阅读原文书,研究原始码,撰写E序Q自认ؓ(f)走得扎实Q不奢望一步登天。像我这栯(g)式的学?fn)方式,昄和现在的快餐M背道而驰。从许多读者的来信和学生的反应中,我发现大多数的h对于Java的学?fn)历E都差不多是:因ؓ(f)公司需要用Java来进行服务器的计画,所以急急忙忙地学习(fn)Java语言Q然后就开始用J2EE的APIQ开始写L(fng)序来了。如此急就章的学习(fn)方式Q程序员基础能力Ҏ(gu)׃够,对于对象导向_N不能掌握Q对于Java语言内部的运作机制毫无所(zhn),对API的整体连贯性懵應|懂?

  当然Q我们也不好因此责怪程序员Q毕竟Y件技术变动得太快。公怸可能l程序员_的训l之后才开始做计画。程序员一下子被指z用A技术,q没弄懂A技术是怎么回事Q又被指z用B技术,而且都是~缝补补的方式边学边用,每次都像是全新的开始,遑论技术能量的累积?/p>

  我很庆幸的是Q我不太有这L(fng)困扰。因为我是资讯工E系n(而且我大学时上课一向很认真)Q所以理论基E_Q学?fn)新技术对我来说不是难事。我p大学Ӟ周遭许多同学都瞧不v数据l构、程序语a、操作系l这些所谓「学院派」的评Q以些课E一炚w不实用。他们认为到了外面公司,q些信息U系所学的一切都z不上用场,「只要会(x)Visual Basic和数据库够了」。这U偏差的心态,恐怕会(x)使得他们在知识经时代吃了苦头?/p>

  另外q有一z֐学很瞧不L(fng)序设计工作,他们告诉我,像我q样?x)写E序的hQ未来进了社?x)「还不是被他们这些走理的ht在脚下」。所以,他们很轻忽理工课E的学习(fn)Q甚臌有h相当热衷「成功学」,认ؓ(f)q是q向成功的快h式,却因此把学校的课业弃之不。我不敢怿有h竟然如此地本末倒置?/p>

  前一cȝ人太q于短视q利Q后一cȝ人太q于好高骛远。我一直很不能理解q些人的xZ么会(x)q样Q或许是因ؓ(f)C会(x)环境的风气然。我很庆q我到目前还没被C会(x)的大染׾l玷污了(最好这辈子都不?。我不认为我的学?fn)方式是一U典范,但是一路走来,倒也颇有q展。许多读者来信问我的学习(fn)历程Q虽然我个h的学?fn)方式不见得适用于每个hQ但或许q有一些参考h(hun)?特别是对于那些有志进入信息行业的q轻学子)Q我想透过本文短地叙述一下?/p>

  我一向是采用先深后广(也称为Bottom-UpQDeep-First)的学?fn)方式。比方说Q当我在学A技术的时候,学到一半发现需要B技术的基础Q我?x)到书局扑և一两本B技术的书,然后把A先搁着Q开始看起B技术的书。甚臻I我在技术书c上看到不太熟?zhn)的英文句构时Q我?x)找Z本英文文法书详细读过。这U先深后q的学习(fn)方式Q适合学生时代全面地自我能力提升,但不适合业界人士。试惻I老板要你开发的ERPpȝ已经延迟了,你怎有I研I?J2EE原文书中的英文文法。先深后q的好处是,学习(fn)很扎?~点是有时候会(x)偏离主题太多。有一ơ我发现我原本是要学某Y件技术,几次「先深后qѝ下来,我居然看赯(g)子的道L(fng)了?/p>

  在技术上Q我一直都是一个喜新厌旧的人,很少有Y件技术能让我持箋研究半年以上Q我几乎每隔几个月就要换一ơ领域。Java 能让我持l这么久Q也正是因ؓ(f)Java的领域广。透过JavaQ我的技术视野变开阔了。这些年来,我换q的 Java 相关领域包括?虚拟机器、数据库、企业运、多媒体?D/3D囑֭、网l??.{?/p>

  我的学习(fn)完全是兴导向的Q所以压力ƈ不大。因为有兴趣Q所以我?x)很惛_分理解一切细节。又因ؓ(f)理解Q所以许多原本片片断断的知识都可以渐渐互相融?x)诏通,累积技术能量,理论和实务之间的藩篱被打破了Q学?fn)效率倍增?/p>

  我多q来的学?fn)触觉很敏锐Q我常常?x)抢先一步学好有前瞻性的技术。比方说QJavaq在beta时、UMLq在0.8时、XMLq在draft Ӟ我都已经透过|络下蝲技术文件回来每天抱着猛读了。而在Java、UML、XML当红之后Q我已经差不多把q些技术都摸熟了?/p>

  至于该学什么技术,我的判断方式是以技术的优劣来决定。优U而有独到之处的技术是我的最爱,虽然q类的技术不见得?x)在市场上胜出,但学习(fn)这些技术所得到的启发,对于技术能量的累积与能力的提升?x)有相当大的助益。至于技术差Q但市场需求甚D(g),我还是懒得碰?好吧!我承认我曑֛为市场需求的~故而学qMFC。越清楚MFC的技术细节,是讨厌它,q真是个不堪回首的经验?

  我通常只看英文技术资料,毕竟大部分第一手的技术信息都是以英文来传播。所以我很早开始阅读英文技术资料。读英文技术资料的好处是,q没有学到书中的专业知识,臛_也篏U培M英文阅读能力Q我一直都是抱着q样的态度。一开始是正襟危坐的看英文技术书c,字典、翻译机随侍在侧;几年下来Q现在是w着看、趴着看、很随性地看英文技术书c,因ؓ(f)看英文技术书c变成一U习(fn)惯了。现在,我可以用很快的速度吸收英文技术书c的知识(有h叫我「吃书的机器」,我把q称号当作是一U恭l??/p>

  q年来,我花在写E序的时间不多,因ؓ(f)旉Ҏ(gu)来说很宝贵,而写E序很浪Ҏ(gu)间。对初学者来_(d)大量地写E序是必要的Q但q了某个阶段之后Q写E序所带来的技术能力成长已l到了极限,q不如多׃Ҏ(gu)间看书,学新技术和新观c(din)?/p>

  我从国小时期开始学?fn)写E序Q迄今已有近十八q的旉;采取上述的方式密集学?fn),q今也有q十q的光景。迩来数q_(d)我接触的领域来广Q而且学习(fn)速度正在加快Q我认ؓ(f)是以前那些努力植下的根苗开始成长了。看看现在的我,或许你会(x)觉得慕Q但回顾q段学习(fn)的岁月,何尝不是一条O长的道\?/p>

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:43 发表评论
]]>
(转蝲)学习(fn)Java?0个基本概?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94152.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94152.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt"> <font color="#000000">在我们学?fn)Java的过E中,掌握其中的基本概念对我们的学?fn)无论是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基,所以有必要对其中的基本概念做以归纳,以便大家在以后的学习(fn)q程中更好的理解java的精?在此我ȝ?0条基本的概念. <br /><br /><br /><br />  Java概述: <br /><br />  目前Java主要应用于中间g的开?middleware)---处理客户Z服务器之间的通信技?早期的实践证?Java不适合pc应用E序的开?其发展逐渐变成在开发手持设?互联|信息站,?qing)R载计机的开?Java于其他语a所不同的是E序q行时提供了q_的独立?U许可以?windows,solaris,linux其他操作pȝ上用完全相同的代码.Java的语法与C++语法cM,C++/CE序员很Ҏ(gu)掌握,而且 Java是完全的d的面向对象的,其中提出了很好的GC(Garbage Collector)垃圾处理机制,防止内存溢出. <br /><br />  Java的白皮书为我们提ZJava语言?1个关键特? <br /><br />  (1)Easy:Java的语法比C++的相对简?另一个方面就是Java能软g在很的机器上运?基础解释其和cd的支持的大小Uؓ(f)40kb,增加基本的标准库和线E支持的内存需要增?25kb. <br /><br />  (2)分布?Java带有很强大的TCP/IP协议族的例程?Java应用E序能够通过URL来穿q网l来讉Kq程对象,׃servlet机制的出?使Java~程非常的高?现在许多的大的web server都支持servlet. <br /><br />  (3)OO:面向对象设计是把重点攑֜对象?qing)对象的接口上的一个编E技?光向对象和C++有很多不?在与多重l承的处理及(qing)Java的原cL? <br /><br />  (4)健壮Ҏ(gu)?Java采取了一个安全指针模?能减重写内存和数据崩溃的可能性?<br /><br />  (5)安全:Java用来设计|\和分布系l?q带来了新的安全问题,Java可以用来构徏防病毒和防攻ȝSystem.事实证明Java在防毒这一斚w做的比较? <br />(6)中立体系l构:Java~译其生成体pȝ构中立的目标文g格式可以在很多处理器上执?~译器生的指o(h)字节?Javabytecode)实现此特?此字节码可以在Q何机器上解释执行. <br /><br />  (7)可移植?Java中对基本数据l构cd的大和法都有严格的规定所以可UL性很? <br /><br />  (8)多线E?Java处理多线E的q程很简?Java把多U程实现交给底下操作pȝ或线E程序完?所以多U程是Java作ؓ(f)服务器端开发语a的流行原因之一 <br /><br />  (9)Applet和servlet:能够在网上执行的程序叫Applet,需要支持Java的浏览器很多,而applet支持动态的|页,q是很多其他语言所不能做到? <br /><br />  基本概念: <br /><br />  1.OOP中唯一关系的是对象的接口是什?像计算机的销售商她不电(sh)源内部结构是怎样?他只关系能否l你提供?sh)就行?也就是只要知道can or not而不是how and why.所有的E序是由一定的属性和行ؓ(f)对象l成?不同的对象的讉K通过函数调用来完?对象间所有的交流都是通过Ҏ(gu)调用,通过对封装对象数?很大限度上提高复用率. <br /><br />  2.OOP中最重要的思想是类,cL模板是蓝?从类中构造一个对?卛_Zq个cȝ一个实?instance) <br /><br />  3.装:是把数据和行ؓ(f)l合起在一个包?q对对象使用者隐藏数据的实现q程,一个对象中的数据叫他的实例字段(instance field) <br /><br />  4.通过扩展一个类来获得一个新cdl承(inheritance),而所有的c都是由O(jin)bject根超cL展而得,根超cM文会(x)做介l? <br /><br />  5.对象?个主要特?<br />  behavior---说明q个对象能做什? <br />  state---当对象施加方法时对象的反? <br />  identity---与其他相D为对象的区分标志. <br />  每个对象有唯一的indentity 而这3者之间相互媄(jing)? <br />6.cM间的关系: <br />  use-a :依赖关系 <br />  has-a :聚合关系 <br />  is-a :l承关系--?Acȝ承了Bc?此时AcM仅有了BcȝҎ(gu),q有其自qҎ(gu).(个性存在于共性中) <br /><br />  7.构造对象用构造器:构造器的提?构造器是一U特D的Ҏ(gu),构造对象ƈ对其初始? <br />  例Datacȝ构造器叫Data <br />  new Data()---构造一个新对象,且初始化当前旉. <br />  Data happyday=new <br />  Data()---把一个对象赋值给一个变量happyday,从而该对象能够多ơ?此处要声明的使变量与对象变量二者是不同?newq回的值是一个引? <br />  构造器特点:构造器可以??一个或多个参数 <br />  构造器和类有相同的名字 <br />  一个类可以有多个构造器 <br />  构造器没有q回?<br />  构造器L和newq算W一起? <br /><br />  8.重蝲:当多个方法具有相同的名字而含有不同的参数?便发生重?~译器必L选出调用哪个Ҏ(gu). <br /><br />  9.?package)Java允许把一个或多个cL集在一hZl?UC?以便于组lQ?标准Java库分多包.java.lang java.util java,net{?包是分层ơ的所有的java包都在java和javax包层ơ内. <br /><br />  10.l承思想:允许在已l存在的cȝ基础上构建新的类,当你l承一个已l存在的cL,那么你就复用了这个类的方法和字段,同时你可以在新类中添加新的方法和字段. <br /><br />  11.扩展c?扩展cd分体Cis-a的承关p? 形式?class (子类) extends (基类). <br /><br />  12.多?在java?对象变量是多态的.而java中不支持多重l承. <br />13.动态绑?调用对象Ҏ(gu)的机? <br />  (1)~译器检查对象声明的cd和方法名. <br />  (2)~译器检查方法调用的参数cd. <br />  (3)静态绑?若方法类型ؓ(f)priavte static final ~译器会(x)准确知道该调用哪个方? <br />  (4)当程序运行ƈ且用动态绑定来调用一个方法时,那么虚拟机必调用x所指向的对象的实际cd相匹配的Ҏ(gu)版本. <br />  (5)动态绑?是很重要的特?它能使程序变得可扩展而不需要重~译已存代码. <br /><br />  14.finalc?为防止他Z你的cMz新类,此类是不可扩展的. <br /><br />  15.动态调用比静态调用花费的旉要长, <br /><br />  16.抽象c?规定一个或多个抽象Ҏ(gu)的类本n必须定义为abstract? public abstract string getDescripition <br /><br />  17.Java中的每一个类都是从ObjectcL展而来? <br /><br />  18.objectcM的equal和toStringҎ(gu).equal用于试一个对象是否同另一个对象相{?toStringq回一个代表该对象的字W串,几乎每一个类都会(x)重蝲该方?以便q回当前状态的正确表示.(toString Ҏ(gu)是一个很重要的方? <br /><br />  19.通用~程:Mcȝ型的所有值都可以同objectcL的变量来代? <br /><br />  20.数组列表:ArrayList动态数l列?是一个类?定义在java.uitl包中,可自动调节数l的大小. <br /><br />  21.classc?objectcM的getclassҎ(gu)q回ckasscd的一个实?E序启动时包含在mainҎ(gu)的类?x)被加?虚拟加蝲他需要的所有类,每一个加载的c都要加载它需要的c? <br /><br />  22.classcMؓ(f)~写可动态操Ujava代码的程序提供了强大的功能反?q项功能为JavaBeans特别有用,使用反射Java能支持VBE序员习(fn)惯用的工具.能够分析c能力的E序叫反器,Java中提供此功能的包叫Java.lang.reflect反射机制十分强大. <br />  1.在运行时分析cȝ能力. <br />  2.在运行时探察cȝ对象. <br />  3.实现通用数组操纵代码. <br />  4.提供Ҏ(gu)对象. <br />  而此机制主要针对是工兯(g)而不是应用及(qing)E序. <br />  反射机制中的最重要的部分是允许你检查类的结?用到的API? <br />  java.lang.reflect.Field q回字段. <br />  java.reflect.Method q回Ҏ(gu). <br />  java.lang.reflect.Constructor q回参数. <br />  Ҏ(gu)指针:java没有Ҏ(gu)指针,把一个方法的地址传给另一个方?可以在后面调用它,而接口是更好的解x? <br />23.接口(Interface)说明c该做什么而不指定如何d,一个类可以实现一个或多个interface. <br /><br />  24.接口不是一个类,而是对符合接口要求的cȝ一套规?若实C个接口需?个步? <br />  1.声明c需要实现的指定接口. <br />  2.提供接口中的所有方法的定义. <br />  声明一个类实现一个接口需要用implements 关键字class actionB implements Comparable 其actionb需要提供CompareToҎ(gu),接口不是c?不能用new实例化一个接? <br /><br />  25.一个类只有一个超c?但一个类能实现多个接?Java中的一个重要接口Cloneable <br /><br />  26.接口和回?~程一个常用的模式是回调模?在这U模式中你可以指定当一个特定时间发生时回调对象上的Ҏ(gu).?ActionListener 接口监听. <br />  cM的API?java.swing.JOptionPane <br />        java.swing.Timer <br />        java.awt.Tookit <br /><br />  27.对象clone:cloneҎ(gu)是object一个保护方?q意味着你的代码不能单的调用? <br /><br />  28.内部c?一个内部类的定义是定义在另一个内部的c?<br />  原因?1.一个内部类的对象能够访问创建它的对象的实现,包括U有数据 <br />  2.对于同一个包中的其他cL?内部c能够隐藏v? <br />  3.匿名内部cd以很方便的定义回? <br />  4.使用内部cd以非常方便的~写事g驱动E序. <br /><br />  29.代理c?proxy):1.指定接口要求所有代码 2.objectcd义的所有的Ҏ(gu)(toString equals) <br /><br />  30.数据cd:Java是强调类型的语言,每个变量都必dx它都cd,java中d?个基本类?4U是整型,2U是点?一U是字符?被用于Unicode~码中的字符,布尔? <br /><br /></font> </div> </td> </tr> <tr> <td colspan="2"> <b> <font color="#000000">(转蝲文章请保留出处:(x)</font> <a > <font color="#000000">北天JAVA技术网(www.java114.com))</font> </a> </b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94152.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:39 <a href="http://www.aygfsteel.com/lijiezjn/articles/94152.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)Java初学问题实录http://www.aygfsteel.com/lijiezjn/articles/94151.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:38:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94151.html
1. 问:(x)在JAVA与JSP中要调用一个LINUX上的脚本E序,或WINDOWS上的脚本E序,该怎么写?
{:(x)System.getRuntime().exec("bash < aaa.sh");

2. 问:(x)java中用什么表C双引号
{:(x)"""

3. 问:(x)如何在JSPE序里另起一个线E?
{:(x)
JSP本n是独立U程q行而不象CGI都是独立q程.
一?
Thread t = new Thread("你的对象\");
t.start();可以了.
要求你这个对象要实现runnable接口或承thread.

4. 问:(x)jsp如何获得客户端的IP地址Q?br />{:(x)
request.getRemoteAddr()
看看各个webserver的API文档说明Q一般都有自带的Qresin和tomcat都有

5. 问:(x)E序l止与输出终?br />{:(x)
E序中止:return;
输出中止:out.close();q一句相当于ASP的response.end

6. 问:(x)jsp中如何得C늚URLQ?br />{:(x)request.getHeader("referer");

7. 问:(x)提交|页的网过期功能是怎么做的Q?br />{:(x)response.setHader("Expires","0");

8. 问:(x)在JSP|页中如何知道自已打开的页面的名称
{:(x)
request.getRequestURI() ;//文g?
request.getRequestURL() ;//全部QRQ?br />
9. 问:(x)提交表单后验证没有通过Q返回提交页面,如何使原提交面中的数据保留Q?br />{:(x)javascript的go(-1)可以把上늚表单内容重新昄出来,但password域没?br />
10. 问:(x)如何取得http的头信息Q?br />{:(x)request.getHader(headerName);

11. 问:(x)&&?amp;的区别?
{:(x)
&&是短路的与操作,也就是当C个条件是false的时候,W二个条件不用执?br />&相反Q两个条件L执行?br />
12. 问:(x)?以正弦曲U的一个周期显C出?br />{:(x)
public void paint(Graphics g)
{
for(int i=0;i<200;i++)
g.drawString("*",i,(int)(Math.sin(i)*20)+50);
}
}

13. 问:(x)点数相乘后l果不精如100.0 * 0.6 l果{于 60.0004
{:(x)
q不叫错?float和double是这样实现的.如果要精计,java提供了一?
strictfp,它的计算遵@IEEE 754标准.而普通的float和double是由地^台QҎ(gu)式或
g?
供的额外_ֺ或表C围?br />
14. 问:(x)如何获得当前用的cursors的位|?
{:(x)
int row = rs.getRow()是当前指针行数,q有
isFrist();isBeforeFist();isLast();isAfterLast();可以试是不是在Ҏ(gu)名所说的
位置

15. 问:(x)表单成功提交了,点后退昄|页q期
{:(x)
在里面加以下代码



或?br />在表单页中加?br />

16. 问:(x)接口的简单理?
{:(x)接口Z规范,比如我在接口中定义了一个方?
getData()
q是用来从不同的数据库中取数据的,是JDBC的实?br />对于用户,我不要知道每U数据库是如何做?但我知道如何它们要实现这个接口就一?br />有这个方法可以供我调
?q样SUN把q个接口l各个数据库开发商,让他们自己实?
但ؓ(f)什么不用承而用接口?因ؓ(f)l承只能从一个你cȝ?而接口可以实现多??br />是说我实现的子类有多
个规定好的接口中的功?
q只是简单的理解,{你深入理解抽象的时候就知道抽象到抽象类时ؓ(f)什么还要再抽象
到接?

17. 问:(x)怎样~写一个取消按钮(怎样q回上一个页面,象工h的后退按钮Q?
{:(x)
javascript把每ơ浏览过的location都压C一个栈?q个栈就?br />history,然后你如果要回到W几个页面它?yu)做几次POP操作,把最后POP出来的那个LOCA
TIONl你.
q就是JAVASCRIPT在实现history.go(-x)的原?

18. 问:(x)什么是回调Q?br />{:(x)
单说,回调用不是让你去监听谁做完了什么事,而是谁做完了什么事报告给?
q就是回调用的思想.例子太多?AWT的事?SWING事g模型都是q样?
q有多线E中,如果要控制线E数,不能L查询每个U程是否l束,要在每个U程l束
时让U程自己告诉ȝ
E我l束?你可以开新的U程?

19. 问:(x)要介l一下compareToҎ(gu)
{:(x)
compareToҎ(gu)是Comparable 接口必需实现的方?只要实现Comparable 可以用Arr
ays.srot()排序p?br />现Runnable接口的runpThread()一?

20. 问:(x)如何可以从别的Web服务器检索页, 然后把检索到的网늚HTML代码储存在一个变
量中q回q来
{:(x)q是一个简单的WEB ROBOT实现,用URLcdC|页中抓内容,然后自己写一个分?br />E序从中扑և新的URL,不断递归下去p?

张{ 2005-11-21 17:56
(?
21. 问:(x)applet中如何获得键盘的输入
{:(x)application的System.in是当前系l的标准输入,applet因ؓ(f)安全的原因不可能?br />取当前系l?客户?的标准输?只能从它的ROOTlg的事件中,比如键盘事g中取得键?

22. 问:(x)怎样计算代码执行所p的时_(d)
{:(x)
代码开始取旉Q结束后取时_(d)相减
long t1 = System.currentTimeMillis();
///////////////// your code
long t2 = System.currentTimeMillis() ;
long time = t2-t1;

23. 问:(x)如何获在E序中获得一个文件的ContentTypeQ?br />{:(x)
URL u = new URL("file:///aaa.txt");
URLConnection uc = u.openConnection();
String s = uc.getContentType();

24. 问:(x)q接池的使用是徏立很多连接池Q还是一个连接池里用多个q接Q?br />{:(x)
只有在对象源不同的情况下才会(x)发生多个池化,如果你只q一l一个数据源,永远不要?br />多个q结?
所以连l池的初始化一定要做成静态的,而且应该在构造对象之?也就是只有在cLOA
D的时?别的时候不应该有Q何生成新的连l池的时候?br />
25. 问:(x)JavaMail要怎么安装Q?br />{:(x)下蝲两个包,一个是javamail包,另一个是jaf包。下载完直接把这两个包不解压
加到CLASSPATH?br />
26. 问:(x)怎样把地址栏里的地址锁定Q?br />{:(x)把你的服务器的可讉K目录索引选项关闭p?M服务器都有一个conf文g,?br />面都有这个选项?br />
27. 问:(x)在JAVA中怎么取得环境变量啊。比如:(x) TEMP = CQTEMP Q?br />{:(x)String sss = System.getProperty(key)?br />
28. 问:(x)怎样实现四舍五入Q保留小数点后两位小敎ͼ
{:(x)
import java.text.*;
...
NumberFormat nf=NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);
nf.format(numb);

29. 问:(x)Applet和form如何通信Q?br />{:(x)
取得的参C到param里面



30. 问:(x)java-plug-in是什么?
{:(x)Java Runtime Environment的插件。用来运行javaE序。不需要什么特别的讄?br />{于你的机器里面有了jvm?br />
31. 问:(x)WEB上面怎么栯接上一个EXCEL表格Q?br />{:(x)
定义面得contentType="application/vnd.ms-excel",让页面以excel得Ş式打开?br />同样也可以以word得Ş式打开:application/msword?br />
32. 问:(x)怎样才能避免textarea字数限制Q?br />{:(x)是用了FORM的默认方法的~故,如果什么也不写默认是GET改用Post卛_Q在For
m中定义mothod="post"?br />
33. 问:(x)Z么加了插入数据库?br />中文Q依然是qQ?br />{:(x)
q要从环境看,能显C明你的JSP引擎没有问题,但写入数据库时你的JDBC能不能处?br />中文,?br />一公司不同版本的JDBC都有支持中文和不支持中文的情?RESIN自带的MYSQL JDBC׃
支持,MM
的就支持,q有你的数据库类型是否支持中?CHAR的一般支?但是否用binary存储?br />字节?

34. 问:(x)对于JFrameQhide()Qshow()与setVisibel()有什么区别吗Q?br />{:(x)
setVisible()从Componentl承q来Q而hide(),show()从Window里面l承q来?br />Makes the Window visible. If the Window and/or its owner are not yet displa
yable, both are made
displayable. The Window will be validated prior to being made visible. If t
he Window is already
visible, this will bring the Window to the front.
区别在这?br />
36. 问:(x)sendRedirectZ么不可以转到mms协议的地址的?response.sendRedirect("mms
://missiah.adsldns.org:9394");
{:(x)javaq_目前实现的protocol中ƈ没有mms,你可以取pȝ属性java.protocol.han
dler.pkgs看看它的g有没有mms,所以如果要想重定向?a href="mms://host/" target="_blank">mms://hostq样和URL,只有生成
客户端的JAVASCRIPT让它来重定向

37. 问:(x)JTable中怎样定义各个Columns和W(xu)idth和怎样讄表格的内定w做靠x居中Q?br />{:(x)
TableColumn tc = table.getColumn("Name");//取得列名为“Name”的列Handle
int currentWidth = tc.getPreferredWidth(); //取得该列当前的宽?br />tc.setPreferredWidth(200); //讄当前列宽
tc.setMaxWidth(200); //讄该列最大宽?br />tc.setMinWidth(50); //讄该列最宽?br />
38. 问:(x)Ҏ(gu)作是否可用于select语句Q?br />{:(x)Ҏ(gu)作其实是指成批理更新的操?l对不可能用于select操作?br />
39. 问:(x)Z么jsp路径太深文g名太长就无法d文gQ?br />{:(x)path不能过255长度,不然找不到?q是作业pȝ的事?/td>

张{ 2005-11-21 17:59
(?
51. 问:(x)object的cloneҎ(gu)Z么不能直接调用?
{:(x)
q个Ҏ(gu)在object中是protected
Z么要把这个方法定义ؓ(f)protected,q是一个折?它的目的是想知道你这个方法在
Object里只是一个标?而不是一个实?比如

public class Object
{

.............
protected Object clone()
{}
}

所以直接承的clone()Ҏ(gu)q不能做M?你要使用q个Ҏ(gu)p重蝲q个Ҏ(gu)q放
宽访问权限ؓ(f)public,或实现cloneable接口.
但它没法q样告诉你它没有真的实现,只好用protected Ҏ(gu)加以警示

52. 问:(x)一个页面中如何h另外一个页面?
{:(x)
要求是这些面必L兌,一是它们都有一个共同的层?也就是说是一个内的?br />U页?当然可以是Q意,帧内再分帧也可以,另一个可能是当前H口弹出的窗?如果没有
联系,那就不可能用一个页面刷新另一个页?
帧内只要一U一U引用就行了.
比如在左帧中一个页面中?br />top.right.location.reload();那么名ؓ(f)right的右帧中的页面就?x)刷?
弹出的一?用open时的名称h子窗?子窗口用openerhȝ?br />
53. 问:(x)如何在jsp中怎么样向客户端写cookiesQ?br />{:(x)
Cookie coo = new Cookie(name, value);
HttpServletResponse.addCookie(name);

54. 问:(x)Z么jTextField1.setText("aaabbb");jTextField2.setText("AAABBB"); 得到
的字体宽度不一P
{:(x)是说如果不是指定ؓ(f){宽字体,每个字体的宽度都是不一L(fng).因此JAVA中用Fon
tMetrics cL取字W宽度?br />
55. 问:(x)String kk=application/octet-stream; name="G:/SMBCrack.exe";如何得到SMBC
rack.exeQ?br />{:(x)
q应该是解析上传时候的二进制流得到?br />q一行里面格式是固定的,取到name="后面的字W串Q然后把";L?br />然后取最后一?后面的所有字W组成一个新字符串就行了?br />
56. 问:(x)如何传值ƈ不刷新页面?
{:(x)
弹出一个页面进行值的选择或者输入,ok后用将gl原H口Q用javascript关闭
打开的窗口即可:(x)
window.close();opener.focus();


57. 问:(x)有一个字W串Q“EF0C114EA4”,如何变ؓ(f)a[0] = 0xEF a[1] = 0x0C a[2] = 0x
11 a[3] = 0x4E a[4] = 0xA4Q?br />{:(x)
String str="EF0C114EA4F";
out.print(str+"");
int l=str.length()/2+str.length()%2,j=0,k=0;
String[] a=new String[l];
for(int i=0;i");
j+=2;
}

58. 问:(x)怎样一个int转换成一个四字节的byte数组Q?br />{:(x)
int x = 1234567;
byte[] b = new byte[4];
for(int i=0;i>( i*8)) & 0xFF;
}

59. 问:(x)indexOf()的用需要注意什么?
{:(x)参数是指从第几位Q?Q?Q?Q?..Q开始搜索,而返回值是指搜索到的位|(0Q?br />1Q?Q?.......Q注意是从零v的?br />
60. 问:(x)在Java应用E序中如何动态的d一个按钮?
{:(x)
q里涉及(qing)一个组仉l的问题,lg要先于panel被显CZ处存?如果一panel已经昄
?那么加在上面你能看到?但如果在同一个panel?先有button A,假如按下它加了butt
on B,q时你如果整个panel重给,那么A本n要重l?它的事g监听没有了,当然也就加不
成B?所以如果要先有另一个panel,当按A时把B加在q个panel上ƈ重绘q个paenl,其实?br />好的Ҏ(gu)是先把B加在panel?同一个也?把它setVisiable(flase),按A时设为true?/td>

张{ 2005-11-21 18:00
(?
61. 问:(x)book mybook=new book(bookid);book是servlet,出错?br />{:(x)
book是servlet,能book mybook=new book(bookid);
说明自己实现了servlet容器?不然,servlet能让你自己去调用?
servlet如果调用其实和EJBq?%的区别都没有,它们都是自己l承或实C些接?在这
些父cL接口中实C如果和容?打交?的方?然后容器调用q些Ҏ(gu)来管理它,让它
生成实例,池化,钝化,销?再生{?所以这样写是错误的?br />
62. 问:(x)l定一个字W串5*(5+9)/7怎样计算出结果?
{:(x)
可有两种Ҏ(gu)
1。用堆栈完成
2。最单的Ҏ(gu)Q不用编E,如果有Q何一个数据库的化Q?br />用select (5*(5+9)/7) from oneTable

63. 问:(x)如何实现递交表单内容的加密解密?
{:(x)
如果你用IE目前只能用SSL协议,q一层不要你考虑,否则只你用你自己的工具加密传?br />,接收后再解密?至于如何加解,如果要和公认的系l结?q通用的MD5,RAS{公开法
,如果你只是自׃自己?你随便按你的x把数据加上一些东?取回来按规则减掉q些
东西,我敢保证除你自己没有M知道解密Ҏ(gu).

64. 问:(x)Z么Integer.parseInt("+1");?x)抛出NumberFormatException的异常?
{:(x)因ؓ(f)"+"q行在JAVA中被重蝲.pȝ无法定你用的是术加还是字W??br />
q一点可以在JAVASCRIPT中更好地理解:


var a = document.t.s.value+1;
q时a = 12345,因ؓ(f)document.t.s.value作ؓ(f)字符?
但var a = document.t.s.value-1;
a 是1233,因ؓ(f)pȝ知道-q算肯定是算术运?所以把document.t.s.value
转换成数?


65. 问:(x)hashCode() 有什么用Z么有时候需要覆盖Object里的hashcode()Ҏ(gu)Q?br />{:(x)q就是这个对象的w䆾证啊,要不如何区分哪个对象?br />
66. 问:(x)怎样在tomcat中实C个定时执行的东东Q?br />{:(x)
在应用程序启动时自动q行。servlet2.3中定义了ServletListener,监听Servlet Con
text的启动或则关闭(可在配置文g中配|)Q启动时触发一个守护程序的q行(可以实现
java.util.Timer或则javax.swing.Timer).

67. 问:(x)E序可以输出自己吗?
{:(x)孔d(zhn)论q个非常有名的法?是说Q何程序都不可能输?

68. 问:(x)能够把字W{化成ASCII码?比如?A 转化?65Q?br />{:(x)
int a=´A´;
out.println(a);

69. 问:(x)如何区分输入的文字中的全角与半角Q?br />{:(x)׃不能分L出全角和半角字符的值有什么规?只好把全角符L(fng)丑և来了.

70. 问:(x)用户注册后的自动发信E序该怎么做?
{:(x)
q种发信E序不考虑性能,因ؓ(f)不可?U就有一个h注册,我们说的考虑性能的发信程
序是指上百万信在队列里要不停发送的那种,象你q个随便怎么写一个程序都?没有必要
用JAVAMAIL.只要指定一个发信的服务器然后用cocketq它?5口就行了.
自己用SOCKETqSMTP?5口发一信好象两个邻居之间送一样东?直接递过d?br />,用JAVAMAIL,消息机制是你把q个东西从邮局寄给你的d?
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:38 发表评论
]]>
(转蝲)JSP基本语法介绍http://www.aygfsteel.com/lijiezjn/articles/94147.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:35:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94147.html

JSP~译器指引与指o(h)元g有五U型?在JSP 1.0之后Q大部分的JSP是包含在?lt;% 作ؓ(f)开?>作ؓ(f)l束的单一标签?新的 JSP 1.1规格已经发表了,它同时也与XML相容.

五种JSP的编译器指引如下所C:(x)
1 ~译器指?<%@ ~译器指?%>
2 预定?<%! 预定?%>
3 q算?<%= q算?%>
4 E序代码 <% E序代码 %>
5 注解 <%-- 注解 --%>

 下面我们分析一个简单的 JSP 面。?zhn)可以?JSWDK ?examples 目录下创建另外一个目录存放此文gQ文件名字可以Q意,但扩展名必须?.jsp 。从下面的代码清单中可以看到Q?JSP 面除了比普?HTML 面多一?Java 代码外,两者具有基本相同的l构?Java 代码是通过 < % ?%> W号加入?HTML 代码中间的,它的主要功能是生成ƈ昄一个从 0 ?9 的字W串。在q个字符串的前面和后面都是一些通过 HTML 代码输出的文本?
  < HTML>
  < HEAD>< TITLE>JSP 面 < /TITLE>< /HEAD>
  < BODY>
  < %@ page language="java" %>
  < %! String str="0"; %>
  < % for (int i=1; i < 10; i++) {
  str = str + i;
  } %>
  JSP 输出之前?
  < P>
  < %= str %>
  < P>
  JSP 输出之后?
  < /BODY>
  < /HTML>
   q个 JSP 面可以分成几个部分来分析?
首先?JSP 指o(h)。它描述的是面的基本信息,如所使用的语a、是否维持会(x)话状态、是否用缓冲等?JSP 指o(h)?< %@ 开始, %> l束。在本例中,指o(h)?< %@ page language="java" %> ”只单地定义了本例用的?Java 语言Q当前,?JSP 规范?Java 是唯一被支持的语言Q?
接下来的?JSP 声明?JSP 声明可以看成是定义类q一层次的变量和Ҏ(gu)的地斏V?JSP 声明?< %! 开始, %> l束。如本例中的?< %! String str="0"; %> ”定义了一个字W串变量。在每一声明的后面都必L一个分Pp在普?Java cM声明成员变量一栗?
位于 < % ?%> 之间的代码块是描q?JSP 面处理逻辑?Java 代码Q如本例中的 for 循环所C?
最后,位于 < %= ?%> 之间的代码称?JSP 表达式,如本例中的?< %= str %> ”所C?JSP 表达式提供了一U将 JSP 生成的数值嵌?HTML 面的简单方法? 

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:35 发表评论
]]>
(转蝲)JSP开发入?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94145.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94145.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt">  JSP与微软的Active Server Pages 兼容Q但它是使用cMHTML的卷标以?qing)JavaE序代码D而不是VBScript。当你所使用的网站服务器没有提供本地ASP支持Q也是Apache 或Netscape服务器时Q你可以考虑使用JSP。虽然你可以取得q些服务器的ASP附加配备模块Q但h相当昂贵Q而目前Sunq没有对你所需要的 JSPlg收取费用(虽然Sun未来有可能会(x)收费)。对于Solaris与Linux以及(qing)WindowsQ这些组件也都很Ҏ(gu)取得。  <br /><br />  请不要将JSP与服务器端的JavaScript混ؓ(f)一谈。网站服务器?x)自动将以JSP写成的JavaE序代码D{换成Java servlets。而许多先前必MPerl手写E序或服务器特定的APIQ如ASPQ控制的功能也都可透过JSP来自动化处理?<br /><br />  现在p我们开始动手帮助你建立一个可执行JSP范例|站?<br /><br />一、安装好你的机器来用JSP <br />二、JSP语法的基本原?<br />三、JSP与JavaBean <br />四、JJSP的内部对?<br />五、JSP其他相关资源 <br /><br />JSP开发入? <br />安装好你的机器来使用JSP <br /><br />  你将?x)需要Java 2软g开发工?JSDK)Q它原来的名U是Java发展工具(JDK)以及(qing)JavaServer|站发展工具(JSWDK)QTomcatQ或是其它支持JSP的网l服务器。Sun免费提供JSDK与JSWDK来供WindowsQSolarisQ以?qing)Linuxq_使用。  <br /><br />如果你想要在你目前的|络服务器上使用JSPQ但服务器本wƈ不支持JSP与Java servletsQ你可以试试看Allaire的JrunQ它的作用就像是针对Netscape企业版与FastTrack服务器、微软的|际|络信息服务?IIS)与个人网l服务器(PWS)、Apache、以?qing)其它服务器的网l服务器附加讑֤。你也可以用Apache|络服务器的Java版本Q最新的JSWDK里有提供?<br /><br />  下蝲与安装你需要的lg <br /><br /><br />  目前发布?.2.2-001QJSDK可下载的版本是以可安装的压羃形式。下载的文g大约?0MBQ可提供完整的Java发展环境Q让你能建立利用标准API为核心的Java解决之道。然而,你的|络服务器需要应用到JSP的唯一一件事是Java~译器。要让网l服务器知道~译器的位置Q将环境变量JAVA.HOME讑ֈJSDK的安装目录。如果你是在Windows上安装ƈ且接受预讄录,这行程序代码set JAVA.HOME=C:1.2.2加到你的autoexec.bat档案q且重新开机?<br /><br />在安装好JSDK之后Q下载ƈ且安?JSWDK或beta版的TomcatQ以JavaZ的Apache|络服务器。安装在哪里q不重要Q重要的是你可以扑ֈ它。一般而言Q它?x)放在上层目录,q种方式可以让你取代JSWDK?JSDK的网l服务器Q不需要移动其它的|络服务器。在你安装好q个档案之后Q你可以准备发展JSP了?<br />  在你正确的安装JSWDK之后Q执行startserver指o(h)文g来激zȝl服务器Q预N讯端口 ?8080。要看你在激zL务器之后是均C有正的安装工具Q你可以加蝲范例JSP档案中的M一?http://localhost: 8080/examples/jsp/)。如果你能够成功的执行一个范例档案,你可以知道你已经正确的设定好软g了。如果你在激zL务器的控制台H口看到错误讯息Q那么你需要解册个问题。最常发生的问题是没有设?或者不正确讑֮)环境变量JAVA.HOME。要(g)视目前的环境讑֮Q在DOS模式下键?set?<br /><br /><br />  开?<br /><br /><br />  解释JSP语法之前Q先建立一个显C目前日期与旉的快速网ƈ且将它储存成sample.jsp: <br /><br />  <html> <br /><br />  <head> <br /><br />  <title>First Page</title> <br /><br />  </head> <br /><br />  <body> <br /><br />   <h3>Today is: <br /><br />  <%= new java.util.Date() %> <br /><br />  </h3><br /><br />  </body> <br /><br />  </html>. <br /><br />这个档案与你所有的HTML与JSP|页攑֜你JSWDK安装目录下的|页目录? 你可以在http://localhost:8080/sample.jsp下蝲此页.当你W一ơ参观这个网|Q网站服务器?x)将JSP译成Java servletE序代码Q那你就?x)看到目前的日期与时? <br />  现在你已l下载,安装Qƈ且架构好发展环境Q你已经准备好要了解JSP语法与徏立你自己的JSPZ的解决之? <br /><br />JSP开发入? <br />JSP语法的基本原?<br /><br /><br />安装之后Q接下来我们要讨论JSP的语?如果要偷懒,你可以下载语法卡而如果你不熟(zhn)?Java的程序设计,你可能会(x)惌参考Sun的用手册;然而,|站建立者不应该做太多的Java发展。除了几个函式呼叫之外,出现在你JSP|页上的 JavaE序代码应该它减到最? <br />  Cq点之后Q现在让我们先来看看JSP的编译器指引与指令组Ӟ之后我们解释JavaBeans 与内部对? JSP~译器指引与指o(h)lg有五U型?JSP 1.0之后Q大部分的JSP是包含在?lt;% 作ؓ(f)开?>作ؓ(f)l束的单一h?新的 JSP 1.1规格已经发表了,它同时也与XML兼容. <br /><br /><br />JSP的编译器指引与指令组?<br /><br /><br />  ~译器指C       <%@ ~译器指C?%> <br /><br />  声明          <%! 声明 %> <br /><br />  表达?        <%= 表达?%> <br /><br />  E序代码D?型指o(h)   <% E序代码片段 %> <br /><br />  注释          <%-- 注释 --%> <br /><br /><br />  ~译器指C?<br /><br /><br />  JSP的编译器指示是针对JSP引擎。它们ƈ不会(x)直接产生M看得见的输出Q相反的Q它们是在告诉引擎如何处理其它的JSP|页。它们永q包含在 <%@ ?%>h里。两个主要的指引?page与include。我们不?x)讨论taglib~译器指引但它可以在JSP1.1里用来徏立自订卷标?<br /><br />  你几乎可以在你所有的JSP|页最上面扑ֈpage~译器指C。虽然这不是必须的,但它可以让你指定到哪里可以找到支持的Javacdq类的事Q?<br /><br />  <%@ page import="java.util.Date" %>Q  <br /><br />  当发生Java问题的事件时应该讯息传送到哪里Q?<br /><br />  <%@ page errorPage="errorPage.jsp" %>Q  <br /><br />  以及(qing)你是?需要ؓ(f)使用者管理通话期的信息Q可能存取多个网?E后在JavaBeans里会(x)有更多通话期的讨论): <br /><br />  <%@ page session="true" %>。  <br /><br /> include~译器指C你将你的内容分成几个可管理的lgQ就像那些有表头或脚注的|页。所包含的网可以是固定格式的HTML|页或者是JSP内容的网? <br /><br />  <%@ include file="filename.jsp" %>?<br /><br /><br />  宣告 <br /><br /><br />  JSP声明让你定义|页层的变量Q来储存信息或定义支持的函式Q让JSP|页的其余部分能够用。如果你发现自己有太多的E序代码Q你最好将它们攑֜不同的Javacd里。你可以?<%! ?%>h里找到声明。记住要在变量声明的后面加上分号Q就跟Q何有效的Java叙述的Ş式一? <%! int i=0; %>?<br /><br /><br />  表达?<br /><br /><br />  JSP里有表达式,评估表达式的l果可以转换成字W串q且直接使用在输出网上。JSPq算是属?<%= ?%> h里,q不包含分号Q加引号字符串的无用部分?<br /><br />  <%= i %> <br /><br />  <%= "Hello" %> ?<br /><br /><br />  E序代码D?型指o(h)文g <br /><br /><br />  JSPE序代码片段或小型指令文件是包含?lt;% ?%> h里。当|络服务器接受这D请求时Q这DJavaE序代码?x)执行。小型指令文件可以是原始的HTML或XMLQ其内部的程序代码片D可以让你徏立有条g的执行程序代码,或者只是一些用另一块程序代码的东西。D例来_(d)下列的程序代码结合了表达式与型指o(h)文gQ在H1QH2QH3Q以?qing)H4h里显C字W串"Hello"。小型指令文件不限于一行的原始E序代码 : <br /><br />  <% for (int i=1; i<=4; i++) { %> <br /><br />  <H<%=i%>>Hello</H<%=i%>> <br /><br />  <% } %>?<br /><br /><br />  注释 <br /><br /><br />  最后一个主要JSPlg是嵌入式注释。虽然你可以在你的档案里包含HTML注释Q如果用者检视网늚原始码,他们也会(x)看到q些注释。如果你不要让用者看C的批注,你可以将它放?lt;%-- ?--%>h? <br /><br />  <%-- 针对服务器端的注?--%>?<br /><br /><br />JSP开发入? <br />JSP与JavaBean <br />  虽然你可以在型指o(h)文g里放入一大块的程序代码,但是大多数的JavaE序代码是属于可以重复用的lgQ称为JavaBean。JavaBeanpActiveX控g一?它们提供已知的功能,q且是ؓ(f)了可随时重复使用的目的而设计的?<br /><br />  JavaBean的h(hun)值在于它可以l由一l特性来使用Q而这些特性则提供对JavaBean讑֮的存取。以人来作范例,此h是JavaBeanQ而他的姓名,C会(x)利安全L(fng)Q以?qing)住址可以是特性。对于JSP|站Q基本上你是?JavaBean"动态的q接C的网站?<br /><br />  假设 JavaBean是在建立|站之前建好的,你要做的W一件事是告诉JSP|页它所需要用JavaBean.q工作可以用<jsp: useBean>h来完成:(x)<jsp:useBean id="localName" class="com.jguru.Person" scope="application" />. <br /><br />  <jsp: useBean>h需要你以id 属性来辨识豆子.在这里,你提供一个名U让JSP|页来L识豆子,除了id 属性之外,你也必须告诉|页要到哪里Lq个豆子Q或者是它的Javacd名称。类别属性提供如何在各式Ҏ(gu)之中扑ֈ它,最后一个需要的lg是scope 属?有了范围属性的帮助Q你可以告诉豆子Q要它ؓ(f)单一|页(预设)[scope="page"]Qؓ(f)一个被h的网[scope= "request"]Qؓ(f)通话期[scope="session"]Q或为整个应用程序[scope="application"]来维护它自己的信? 对于通话期范_(d)你可以很Ҏ(gu)的维护JSP|页里的目Q例如购物R?<br /><br />  一但你宣告了JavaBean之后Q你可以存取它的特性来订定它。要取得一Ҏ(gu)的|使用<jsp:getProperty>h。有?lt;jsp:getProperty>hQ你可以指定要用的豆子名称(从useBean的id字段)Q以?qing)你要取得值的Ҏ(gu)。接着Q真正的值就?x)放在输出里Q?lt;jsp:getProperty id="localName" property="name" />. <br /><br />  要更改JavaBean的特性,你需要?<jsp:setProperty>h.对这个卷标,你也需要L认豆子以?qing)要修正的特性,除此之外Q你q需要提供新?如果命名正确Q这些可以直接经p定的格式取得Q?lt;jsp:setProperty id="localName" property="*" />;  <br /><br />  要从一参数取得Q你必须直接命名此特性以?qing)参? <jsp:setProperty id="localName" property="address" param="parameterName" />;  <br /><br />  或是直接以名UC值来讑֮: <jsp:setProperty id="localName" property="serialNumber" value="string" /> or <jsp:setProperty id="localName" property="serialNumber" value= <%= expression %> />. <br /><br />  有关JavaBean的最后一?要让|络服务器可以找到JavaBeanQ你需要将它们的类别档案放在特别位|。对JSWDK而言Q最单的地方是在安装目录里的cd目录Q例?jswdk-1.0.1classes. <br /><br /><br />JSP开发入? <br />JSP的内部对?<br />  最后一个与JSP语法有关的组件叫做内部对?在JSP型指o(h)文g内,你可以存取这些内部对象来与执行JSP|页的servlet环境怺作用。许多对内部对象的存取应该要化。然而,q些是范例,它们的存取都是可接受的,要完整的利用内部对象讑֮则需要对最新的Java Servlet API有所了解?<br /><br />  下表列出你可以用的内部对象?<br /><br /><br />  内部对象说明 <br /><br /><br />  request   客户端请求,此请求会(x)包含来自GET/POSTh的参?<br /><br />  response  |页传回客户端的响应 <br /><br />  pageContext |页的属性是在这里管?<br /><br />  session   与请求有关的?x)?<br /><br />  application servlet正在执行的内?<br /><br />  out     用来传送响应的输出?<br /><br />  config   servlet的架构对?<br /><br />  page    JSP|页本n <br /><br />  exception  针对错误|页Q未捕捉的例?<br /><br />  那么Q这些是做什么的Q而你应该如何使用它们?基本上,在你的小型指令文仉Q你可以使用它们来存取执行JSPE序代码的servlet。ؓ(f)了避免谈论到太多Servlet API 的细节,让我们来(g)视一些你可以利用它们来做的事:  <br /><br />  不必使用表达式,你可以直接存取内部out对象来打C些东西到response: <br /><br />  <% out.println("Hello"); %>.  <br /><br />  不必直接传送参数到JavaBeanQ你可以藉由h对象来取得参数的? <br /><br />  <% String name=request.getParameter("name"); out.println(name); %>?<br /><br />  当你以JSP写了许多的应用程序之后,如果你徏立了JavaBeans或者发C自己太多的Java原始码放入你的JSP档案Q你需要徏立支持的JavacdQ这样可以鼓励重复用ƈ且降低JSP|页转换时所需要的旉。当你需要徏立JavacdӞ你必? <br /><br />  JDSWK的安装目?#x8;in目录加到你的PATH。在你的autoexec.bat档案的PATH行的最后,加入C:1.2.2in; ?<br /><br />  以下面的指o(h)JAR档案复制到jrelibext目录: <br /><br />  copy c:jswdk-1.0.1libservlet.jar c:jdk1.2.2jrelibext. (转蝲文章请保留出处:(x)<a >Java?www.javajia.com)</a>) <p></p><p> </p></div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:34 <a href="http://www.aygfsteel.com/lijiezjn/articles/94145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)JSPE序员成长全计划http://www.aygfsteel.com/lijiezjn/articles/94142.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:32:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94142.html
  Q、徏立ƈ且理解你的Web Server?
  因ؓ(f)Apache 是免费的q且在大多数q_上工作,l目的推?Apache?
  安装旉Q? 天?

  Q?保证你理?HTML / XHTML ?
  你将需要了解html基础, 特别?HTML 布局中的table的用。XHTML 不久代?HTML Q学?XHTML 的基是一个好L。许多程序员通过 HTML IDE 学习(fn) HTML ( 集成开发环?) 。因为大多数 HTML IDE产生混ؕ的HTMl语法Q所以花旉学习(fn)手工写作html是很有必要的。因Z会(x)使用 JSP ?HTML 混合~程Q精通HTML语法是重要的。所以,你必能利地写 HTML ?
  训练旉Q? ?4 个星期?

  Q、开始学?Java ?
  开始学?Java 1.3 理解 Java 基础是很重要的。不用担心学?fn)Swing?Java 的图形方面,因ؓ(f)在JSP 中你不会(x)使用q些特征。集中精力在 Java 工作的细节,学习(fn) Java 的逻辑Q也?Java Bean上花旉。学?fn)Applet是好? 但是pSwingQ?JSP 的大多数应用不使用程序?
  训练旉Q? ?6 个星期?

  Q、学?fn)ƈ且理解你的Web Server的更好的l节?
  熟?zhn)Web Server的特征,q是很重要的?
  训练旉Q? 天?

  Q、徏立你?JSP Server
  我推荐以Tomcat开始。它可以很好地运行JSPE序。当你不能在生使用TomcatӞ学习(fn)可能多的知识以便于更好的运行程序。另? 许多 JSP E序员用Tomcat。因此当你遇C个问题时Q你容易发现帮助?
  安装旉Q一?2 天?

  Q、开始学?JSP ?
  基本?JSP 学习(fn)通过的步?1到步?可以完成, 然后使用 JSP 对象和脚本写 JSP E序来联pR学?JSP 的另外一个方面可以学?fn)怎么创徏一个分布式的应用程序?
  训练旉Q? ?6 个星期?

  Q、学?fn)更多?JSP server?
  没有关于更多?JSP Server当然也可以运行jspE序。然? 许多 JSP server都由自己Ҏ(gu)的特征,可以让你更好的理解你的JSP 工程?

  学习(fn)更多的Jsp server如何处理jspE序是有必要的。同样也可以优化你的 JSP 应用E序Qƈ且之运行得更快而不ZQ何问题?
训练旉Q? ?7 天?

  Q?学习(fn) JDBC ?
  JSP 大多数应用将使用数据库,JDBC 被用于数据库q接。经常忽略的一个事实就是,每个 JDBC Driver 所支持的东西是相当不同的。了解ƈ熟?zhn)在jsp工程上被使用?JDBC driver的细节是很重要的?
  Q有时这部分的学?fn)被包含在前?Java 或JSP的学?fn)中?。)
  训练旉Q??2 个星期?

  到现在,你已l成Z熟练?JSP E序员。仍然有很多需要学?fn),你可以考虑扩展你的知识比如 DHTML Q?XML Qjava证书Q?JSP Tag Libraries ?Servlets , 看你惌造什么类型的|站而决定了?

  q些训练是JSP 的核心。你不必都学?fn)上面所有的, 取决于你在工E中分配C么Q务和你已l有什么知识。但是这是我成功地训l程序员的时间表。关键的单元是时间。^均的? 5 个月旉实能够训练一个h ( 从开始到完成 ) 成ؓ(f)一个对jsp熟?zhn)E序员? 个月旉g很长Q但要成Z个资qWEBE序员所学的东西q远不止q一些?

  也许你认样学?fn)一U语ap的时间太长了Q因为学 ASP ?x)更快、时间会(x)更短?但是学习(fn) ASP 不需要学?fn)java的?

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:32 发表评论
]]>
(转蝲)Tomcat环境的徏?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94140.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:31:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94140.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt"> <div align="left">Tomcat是在SUN的JSWDK的基上发展v来的另一个优U的JSP服务器,它不但支持ServletQ而且q提供了Web服务器的功能。作Z个开放源码的软gQTomcat有着自己独特的优势,可以和目前大部分的主服务器一起工作,而且有着相当高的q行效率?br /><br />  通过本章Q读者将?x)看刎ͼ?x)<br /><br />  · Tomcat的基本概?br />  · 如何让Tomcat和IIS一起工?br />  · 如何让Tomcat和Apache一起工?br />  · 如何讑֮JSP的虚拟目?br />  · 如何Tomcat设ؓ(f)Windows服务q行<br /><br />  <b>Jakarta-Tomcat概貌</b><br /><br />  lDQTomcat是一个带有JSP环境的servlet容器。servlet容器是一个根据用L(fng)行ؓ(f)可以理和激zservlet的运行时的shell?br /><br />  我们可以_略地将servlet容器分ؓ(f)如下几类Q?br /><br />  <b>独立的servlet容器 </b><br /><br />  内置有web服务器的一部分。指使用ZJava的web服务器的情ŞQ例如servlet容器是JavaWebServer的一个部分。独立的servlet容器是Tomcat的默认模式?br /><br />  然而,大多数的web服务器ƈ非基于Java。因此,我们可以得出如下两种容器的模式:(x) <br /><br />  <b>q程内的servlet容器</b><br /><br />  servlet容器作ؓ(f)web服务器的插g和Java容器的实现。Web服务器插件在内部地址I间打开一个JVMQJava virtual machineQJava容器得以在内部运行。如有某个需要调用servlet的请求,插g取得对此请求的控制q将它传递(使用JNIQ给Java容器。进E内容器对于多线E、单q程的服务器非常合适ƈ且提供很好的q行速度Q但伸羃性有所不?br /><br />  <b>q程外的servlet容器 </b><br /><br />  servlet容器q行于web服务器之外的地址I间且作为web服务器的插g和Java容器的实现的l合。web服务器插件和Java容器 JVM使用IPC机制Q通常是TCP/IPQ进行通讯。当一个调用servlet的请求到达时Q插件将取得Ҏ(gu)h的控制ƈ其传递(使用IPC{)l?Java容器Q进E外容器的反应时间或q程外容器引擎不如进E内容器Q但q程外容器引擎在许多其他可比的范围内更好Q׾~性、稳定性等Q?br /><br />  Tomcat既可作ؓ(f)独立的容器(主要是用于开发与调试Q,又可作ؓ(f)对现有服务器的附加(当前支持Apache、IIS和Netscape服务器)。所以在配置TomcatӞ必须军_如何应用它,如果选择W二或第三种模式Q还需要安装一个web服务器接口?br /><br />  <b>Tomcat与Jserv有何区别QTomcat是Jserv吗?</b><br /><br />  q是个常见的误解。Jserv是Servlet API2.0兼容q与Apache一起用的容器。Tomcat是一个完全重写的q与Servlet API2.2和JSP1.1兼容的容器?br />  另外QTomcat使用了一些ؓ(f)Jserv而写的代码,特别是Jserv的Apache接口Q但q是唯一的相同之处?br /><br />  <b>怎样安装Tomcat的二q制版本Q?</b><br /><br />  非常单,只需Q下?zip/tar.gz M压羃文gQ从http://jakarta.apche.org/download/binindex.html处解压羃此文件到某目?如:(x) foo)Q将?x)生成一子目录,名ؓ(f)"tomcat"Q{换到"tomcat"目录讄一新的环境变量(TOMCAT_HOME)指向你安装的tomcat 的目录:(x)<br />  WIN32q_Q键入:(x) set TOMCAT_HOME=foo/tomcat <p><span id="wmqeeuq" class="f14"><span id="wmqeeuq" class="f14"><font size="3"><b>  Unixq_Q?/b><br /><br />  如是bash/sh环境Q键入:(x)TOMCAT_HOME=foo/tomcat;export TOMCAT_HOME"<br />  如是tcsh环境Q键入:(x)setenv TOMCAT_HOME foo/tomcat<br />  讄环境变量JAVA_HOME指向你JDK的目录,然后dJAVA解释器到你的PATH环境变量?br />  好了Q现在可以运行TOMCATq作Z个独立的Servlet容器(模式一) <br /><br />  启动与关闭Tomcat <br /><br />  使用"bin"目录中的脚本启动与关闭Tomcat?br /><br />  启动Q?br /><br /></font></span></span></p><p></p><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  uinx:bin/startup.sh <br />  win32:binstartup </td></tr></tbody></table><p><br />  关闭Q?<br /><br /></p><p></p><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  unix:bin/shutdown.sh <br />  win32:binshutdown <br />  Tomcat目录l构 </td></tr></tbody></table><p><br />  假设读者已Tomcat解压Q这时将得到下列目录l构Q?br /><br /></p><p></p><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td width="91" height="37"><div align="center"><b>目录?/b></div></td><td width="509" height="37"><div align="center"><b>描述</b></div></td></tr><tr><td width="91" height="30">bin</td><td width="509" height="30">包含启动/关闭脚本?/td></tr><tr><td width="91" height="30">conf</td><td width="509" height="30">包含不同的配|文Ӟ包括 server.xmlQTomcat的主要配|文Ӟ和ؓ(f)不同的Tomcat配置的web应用讄~省值的文gweb.xml?/td></tr><tr><td width="91" height="30">doc</td><td width="509" height="30">包含各种Tomcat文档?/td></tr><tr><td width="91" height="30">lib</td><td width="509" height="30">包含Tomcat使用的jar文g。unixq_此目录下的Q何文仉被加到Tomcat的classpath中?/td></tr><tr><td width="91" height="30">logs </td><td width="509" height="30">Tomcat摆放日志文g的地斏V?/td></tr><tr><td width="91" height="30">src</td><td width="509" height="30">ServletAPI源文件。先别高_(d)q里只有些必dServlet容器内实现的I接口和抽象cR?/td></tr><tr><td width="91" height="30">webapps</td><td width="509" height="30">包含web目CZ?/td></tr><tr><td width="91" height="30">work</td><td width="509" height="30">Tomcat自动生成Q放|Tomcatq行时的临时文gQ如~译后的JSP文gQ,如果在Tomcatq行时删除此目录.JSP面不能运行?/td></tr><tr><td width="91" height="30">classes</td><td width="509" height="30">你可以创建此目录来添加一些附加的cdc\径中QQ何你加到此目录中的类都可在Tomcat的类路径中找到自w?/td></tr></tbody></table><p><br />  <b>Tomcat的脚?/b><br /><br />  Tomcat是一个JavaE序Q因此在讄好几个环境变量后卛_用命令行的方式运行。然而设|Tomcat使用的每个环境变量和如下的命令行参数乏味且容易出错。因此,Tomcat开发组提供了一些脚本启动和关闭Tomcat变得非常L?br />  注意Q这些脚本仅仅是个便利的Ҏ(gu)d动和关闭Tomcat。你可修改他们来定制CLASSPATHQ环境变量如PATH、LD_LIBRARY_PATH{等Q只要是生成一个正的命o(h)行即可?br />  q些脚本是什么呢Q下面列出对一般用h重要的脚本?br />  TomcatQ主脚本。设|合适的环境变量Q包括CLASSPATH、TOMCAT_HOME以及(qing)JAVA_HOME和用适合的命令行参数启动Tomcat ?br />  startup Q在后台启动Tomcat。它?tomcat start"命o(h)的替换方式?br />  shutdown Q关闭Tomcat。它?tomcat stop"命o(h)的替换方式?br /><br />  对用h重要的脚本是tomcat(tomcat.bat/tomcat.sh)。其他Tomcat相关的脚本作Z个简单的面向单Q务的指向Tomcat脚本(讄不同的命令行参数{?的入口?br /><br />  仔细考察tomcat.bat/tomcat.shQ它按以下步骤运行:(x)<br /><br />  在Unix下的步骤Q?br /><br />  如未指定Q推?TOMCAT_HOME <br />  如未指定Q推?JAVA_HOME <br />  讄CLASS_PATH包含Q?br /><br />  1Q?{TOMCAT_HOME}/classes目录(如果存在)<br />  2Q?{TOMCAT_HOME}/lib的一切内?br />  3Q?{JAVA_HOME}/lib/tools.jarQ此jar文g包含工具JavacQ我们需要Javac处理jsp文gQ?br /><br />  q行带有讑֮Java环境变量的命令行参数的Java命o(h)Q调入tomcat.home?org.apache.tomcat.startup.Tomcat 作ؓ(f)启始cR同时也传递命令行参数到org.apache.tomcat.startup.Tomcat Q例如:(x)执行start/stop/run {的操作。另外,此Tomcatq程使用指向server.xml的\径,例如server.xml攄于etc/server_1.xmlq且用户意图在后台启动apacheQ键入如下命令行Q?br /><br />  bin/tomcat.sh start -f /etc/server_1.xml <br />win32版的tomcat.bat与Unix版的几乎一致。尤其在它不推测TOMCAT_HOME和JAVA_HOME的|q且不将所有的jar文g攑օc\径中?br /><br /><b>  Tomcat的配|文?/b><br /><br />  q一部分讲q如何用配|文件server.xml和web.xml。我们不?x)包含web.xml的内部机Ӟq些内部机制深入CServlet API的细节,因此Q我们将讨论늛q两个配|文件在Tomcat关系环境中的用法?br />Tomcat的配|基于两个配|文Ӟ(x)<br /><br />  1Qserver.xml - Tomcat的全局配置文gQ完成两个目标:(x)<br />  Q?Q提供Tomcatlg的初始配|?br />  Q?Q说明Tomcat的结构、含义,使得Tomcat通过实例化组件完成启动及(qing)构徏自n?br />l构、含义的说明是通过元素来实现的Q下面将描述q些元素?br /><br />  ServerQserver.xml文g中最重要的元素。Server定义了一个Tomcat服务器。一般读者不用对它担心太多。Server元素能包含Logger和ContextManager元素cd?br /><br />  LoggerQ此元素定义一个Logger对象Q每个Logger都有一个名字去标识Q也有一个纪录Logger的输出和冗余U别(描述此日志?和包含日志文件的路径Q通常有servlet的Logger(ServletContext.log()?QJSP和Tomcatq行时的Logger?br /><br />  ContextManagerQ它说明了一套ContextInterceptor、RequestInterceptor、Context和它们的Connectors的配|及(qing)l构。ContextManager有几个随同提供的Ҏ(gu):(x)<br /><br />  aQ用来纪录调试信息的调试U别<br />  bQwebapps/、conf/、logs/和所有已定义的环境的基本位置。用来Tomcat可以在TOMCAT_HOME外的其他目录启动?<br />  cQ工作目录的名字<br /><br />  ContextInterceptor&RequestInterceptorQ这些侦听器(interceptors)侦听具体发生?ContextManager中的事gQ例如,ContextInterceptor侦听Tomcat的启动及(qing)l止事gQ?RequestInterceptor监视在它服务q程中用戯求需要通过的不同阶Dc(din)Tomcat的管理员不必知道太多关于侦听器的知识Q另外,开发者应该知道这是如何在Tomcat中实C?全局"型的操作(例如安全性及(qing)每个h日志) ?br /><br />  ConnectorQ表CZ个到用户的联接,不管是通过web服务器或直接到用h览器Q在一个独立配|中Q。Connector负责理Tomcat的工作线E和?写连接到不同用户的端口的h/响应。Connector的配|包含如下信息:(x)<br /><br />  aQ句柄类<br />  bQ句柄监听的TCP/IP端口<br />  cQ句柄服务器端口的TCP/IP的backlog<br /><br />  ContextQ每个Context提供一个指向你攄你Web目的Tomcat的下属目录。每个Context包含如下配置Q?br /><br />  aQContext攄的\径,可以是与ContextManagerȝ录相关的路径<br />  bQ纪录调试信息的调试U别<br />  cQ可重蝲的标志。开发Servlet?重蝲更改后的Servlet,q是一个非怾利的Ҏ(gu)?br /><br />  2Qweb.xml--在Tomcat中配|不同的关系环境<br />  有一个和Tomcat有关的小"Ҏ(gu)?与web.xml有关。Tomcat可以让用户通过缺省的web.xml攑օconf目录中来定义所有关pȝ境的web.xml的缺省倹{徏立一个新的关pȝ境时QTomcat使用~省的web.xml文g作ؓ(f)基本讄和应用项目特定的web.xmlQ放在应用项目的WEB-INF/web.xml文gQ来覆盖q些~省倹{?/p><p><font size="3"><strong>  如何Tomcat装入IIS<br /><br /></strong>  IISQ即Internet Information ServerQ是微Y公司提供的一U功能强大的Web服务器,它对ASP有着很好的支持,q一点相信很多读者都已经知道。现在,JSP已经行hQ如何才能让IIS支持该技术呢Q读者将?x)从本节得到{案?br /><br />  一、安装环境Windows 2000、IIS 5.0<br /><br />  Tomcat 3.1下蝲地址 <br />  http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/ <br />  isapi_redirect.dll下蝲地址 <br />  http://jakarta.apache.org/builds/tomcat/release/v3.1/bin/win32/i386/ <br />  攑ֈ{TOMCATHOME}\bin\iis\i386\isapi_redirect.dll<br /><br />  二、先要保证Tomcat可以正确执行<br /><br />  三、将下面的begin和end之间的Jakarta.reg文g装入机器Q我的Tomcat装在c:\\jakarta-tomcatQ你可根据自q环境修改Jakarta.reg文g <br /><br /></font></p><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  Jakarta.regQ?br />  ---begin--- <br />  Windows Registry Editor Version 5.00 <br />  [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Jakarta Isapi Redirector\1.0] <br />  "extension_uri"="/jakarta/isapi_redirect.dll" <br />  "log_file"="c:\\jakarta-tomcat\\logs\\isapi.log" <br />  "log_level"="debug" <br />  "worker_file"="c:\\jakarta-tomcat\\conf\\workers.properties" <br />  "worker_mount_file"="c:\\jakarta-tomcat\\conf\\uriworkermap.properties" <br />  ---end--- </td></tr></tbody></table><br />  四、按照上文配|IISQ以作者的l验安装好isapi_redirect.dll后,需要重新启动机器(重启IIS不好使)Q实在不行的话再装一ơ?br /><br />  五、启动tomcatQ然后在IE中键入http://baryon/examples/Q看一下效果如何,没有?080端口也可以用jsp?servlet了。注意不启动tomcatQ光有IIS是不行的。再注意http://baryon/examples/最后的"/"一定要有,否则?x)找不到的?br /><br />  如何在windows 9x环境下配|Apache Q?Tomcat?<br /><br />  如果读者用的是windows 9x操作pȝQ那么读了下文后Q徏立自qJSPq行环境Q将变得十分单?br /><br />  pȝ配置如下Q?br /><br />  windows 98QNT主要是环境变量的设法不同Q和下面E序的设|无养I <br /><br /><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  jdk1_2_2.exe <br />  apache_1_3_9_win32.exe <br />  ApacheModuleJServ.dll <br />  tomcat.zip(3.1) </td></tr></tbody></table><br />  <b>一、安?/b><br /><br />  1Q安装JDK1.2.2Qƈjdk1.2.2的目录加入到环境变量PATH中(Autoexec.batQ;<br />  2Q安装apache_1_3_9_win32.exeQ?br />  3Q将ApacheModuleJServ.dll拷到Apache所在目录的modules子目录中Q?<br />  4Q安装Tomcat 3.1(解压q拷到某个目录中)Q?<br />  此时所需部g都已l安装完毕,以下是配|过E?<br /><br />  <b>二、配|?</b><br /><br />  1Q首先编辑Apache的conf子目录下的http.conf文g使其能正常运行ƈ配合自己的机器配|?br /><br />  2Q设|以下环境变量(可以攑֜autoexec.bat中)Q?br />  SET TOMCAT_HOME=C:\PROGRA~1\Tomcat <br /><br />  Q注Q此时如果有Windows风格目录Q一定要写成DOS下目录格式,不然Ҏ(gu)出问题) <br />  SET JAVA_HOME=C:\PROGRA~1\jdk1.2.2 <br /><br />  3Q打开TOMCAT的conf子目录下的tomcat.conf文gQ将以下行前的注释去掉:(x) <br />  LoadModule jserv_module modules/ApacheModuleJServ.dll <br />  再将对应LINUX的类g行用注释屏蔽掉?Q?br /><br />  4、打开apache的httpd文gQ在最后加入一行:(x)<br />  include c:/progra~1/tomcat/conf/tomcat.conf <br /><br />  <b>三、启动与试Q?/b><br /><br />  1Q首先启动apacheQ此时如果正,应当昄为:(x)<br /><br />  Apache/1.3.9 (Win32) tomcat/1.0 running... <br /><br />  2Q进入到tomcat的执行目?bin)?br /><br />  注一Q此目录如果为windows风格目录Q一定要用windows目录表示法进入,如:(x)progra~1 一定要写ؓ(f)program files <br /><br />  注二Q通常要求执行命o(h)的运行环境变量大ؓ(f)4096 <br /><br />  3Q用tomcat.bat start或tomcat.bat run启动tomcatQ此时应当可以看到正输出的classpathQ说明Tomcat启动成功Q?br />  4Q在览器中输入http://localhost/examples/Q此时应当可以看到serverq回的三个目录列表。点d中JSP的就可以看到CZ了?<br /><br />  只要用官方站下蝲的程序,照上q几步应当能正确启动JSP环境Q接下来的问题就是如何加入context以便映射到自q工作目录Q请读者参?.2.5节?br /><br />  <b>如何在Windows NT 4.0下安装Apache Q?Servlet Q?JSP</b><br /><br />  环境配置一向是比较?ch)的一件工作!本节的目的就是要L者搞定NT下安装和配置SERVLET和JSP的执行环境?br /><br />  首先Q到Java.apache.orgM载一个tomcat3.1或tomcat3.2。下载的是一个ZIP文g。将它解压到一个目录下面。比?c:\下面。在c盘下面就?x)出C个jakatar-tomcat的目录。读者可以将q个目录改个名字Q假设改为tomcat。现在打开c:\ tomcat\conf目录下的server.xml文g。找到ContextManager标签Q将可以看到Q?br /><br /><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  QConnector className="org.apache.tomcat.service.SimpleTcpConnector"Q?<br />  QParameter name="handler" value="org.apache.tomcat.service.http. HttpConnectionHandler"/Q?<br />  QParameter name="port" value="80"/Q?<br />  Q?ConnectorQ?</td></tr></tbody></table><br />  因ؓ(f)tomcat可以作ؓ(f)一个独立的服务器用,所以有它自q端口受在q里可以修改它缺省的端口P而该号在本机未被占用。假设改?000?<br /><br />  现在到c:\tomcat\bin目录下面Q读者可以看C个startup.bat的批处理文g。在执行q个文g前,如果你用的是JDK1.2.1?JDK1.2.2的话Q请JDK_HOME\LIB\tools.jarq个文g攑ֈclasspath中去。(注:(x)讄classpath的方法:(x)右键单击"我的?sh)?Q>选择属?Q环境,如果q没有classpathq个环境变量Q就d一个,如果有了在它的基础上修改,加上JDK_HOME\LIB\tools.jarQ?br /><br />  现在可以执行startup.batq个文g了。(如果在执行时出现out of environment space的提C,将DOSH口的缓冲区大小开得大些。具体作法:(x)在DOS H口的菜单中的属性-Q?内存 Q> d和初始环境改大点Q?br /><br />  在执行完后,startup.bat?x)在另一个窗口打开start tomcat。打开览器,在地址栏中输入Qhttp://localhost:9000/ <br /><br />  然后回R。这时应该看C一只jakatar-tomcat。现在在地址栏键入:(x) http://localhost:9000/examples/servlet/Q回车,应该看到一个servlet的index的页面,点击其中的例子servlet看看吧。现在在地址栏键入http://localhost:9000/examples/jsp/Q回车,读者也?x)看C个类似刚?servlet index面的一个页面,点击jsp的例子看看吧。如果在点击了一个JSP的例子后出现500的错误,如果没有别的错误信息Q在IE5的工兯单-Q?Internet选项Q>高Q把昄友好的HTTP错误的选项LQ然后IE׃(x)报出具体的出错信息。原因是你没有将tools.jar攑ֈ classpath中去?<br /><br />  现在要将tomcatq接到apache上去了。首先到www.apache.org上去下蝲一?Apache Web Server。再到Java.apache.org上去下蝲一个Jserv。先安装Apache Web ServerQ比如安装在c:\apache目录下面Q。安装完后需要修改c:\apache\conf\httpd.conf文gQ找?ServernameQ修改ؓ(f)自己喜欢的名字,扑ֈportQ修改ؓ(f)未被占用的端口。再安装JservQ比如安装在c:\Jserv目录下面Q。安?Jserv需要指定JVM所在的目录Q你可以指定JDK_HOME\BIN目录。需要指定JSDK所在目录。(实际上它要找的是servlet.jarq个文gQ你可以指定tomcat\lib\servlet.jar试一试) <br /><br />  q时候实际上Apache已经支持Servlet了,但还不支持JSP。所以还需修改c:\apache\conf\httpd.conf文g。用文本~辑器打开httpd.confQ在文g最后加上:(x) Include "Tomcat_Home\conf\tomcat-apache.conf"。(h意,tomcat-apache.confq个文g是在 tomcatq行后由tomcat自动产生的。所以要先开tomcatQ再打开ApacheQ?br /><br />  现在先启动tomcatQc:\ tomcat\bin\startup.batQ,当出C另一个窗口后Q启动ApacheQc:\apache\bin\apache.exe或者通过开始菜单-Q程序-QApache Web ServerQ>Start Apache启动Q。如果此旉过后者启动ApacheQ有一个DOSH口一闪后消׃Q说明对Apache+JServ+tomcat的配|还有问题,应该通过W一U方法启动ApacheQ此时能在屏q上看到具体的出错信息?br /><br />  如果出错信息是:(x)apj* : can't be specified more than once per host。(*号代表一些字W串Q比如ApJServLogLevel{等Q,p修改c:\Jserv\conf\jserv.conf文gQ将 apj*的相兌注释掉就可以Q可能需要注?-6行。如果Apache也正常启动的话,现在你可以在地址栏键入http://localhost: apache_port/examples/servlet/ 来通过Apache+tomcat调试ServletQ这里apache_port是Apache的端口号Q可以通过修改c:\apache\conf\ httpd.confq个文g修改端口P在地址栏键入http://localhost:apache_port/examples/jsp/ 来调试JSP?br /><br /><b>  怎样讄JSP的虚拟目录?</b><br /><br />  如果读者细心的话,?x)发现前面测试用的都是examples\jsp目录。现在就讲一下怎么创徏自己的工作目录?br /><br />  首先在d:\tomcat\webappsQ假定安装目录ؓ(f)d:\tomcatQ目录下面创建myweb目录Q接着在myweb目录下面创徏jsp目录和classes目录。然后用文本~辑器打开d:\tomcat\conf目录下面的server.xmlQ查扑ֈQContextManagerQ标{,q在该标{l束标签Q?ContextManagerQ前面加上:(x)<br /><br /><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  QContext path="/myweb" docBase="webapps/myweb" debug="0" reloadable="true" Q?<br />  Q?ContextQ?/td></tr></tbody></table><br />  其中path的值是虚拟目录Qdocbase的值是你的盘的的目录的绝对\径?br />然后d:\tomcat\webapps\myweb\classes目录攑ֈclasspathq个环境变量中去。用文本~辑器编辑下面这个文件?br /><br /><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  QhtmlQ?<br />  QbodyQ?<br />  Q? <br />  for(int i=1;iQ?;i++){ <br />  out.println("Qh" + i + "QHello WorldQ?h" + i + "Q?); <br />  } <br />  %Q?<br />  Q?bodyQ?<br />  Q?htmlQ?</td></tr></tbody></table><br />  存ؓ(f)c:\tomcat\webapps\myweb\jsp\helloworld.jsp?br /><br />  在地址栏键入:(x)http://localhost:apache_port/testdir/jsp/helloworld.jsp 看看l果吧?br /><br />  再测试一下Servlet。用文本~辑器编辑下面这个文件?<br /><br /><table cellspacing="0" cellpadding="0" width="600" bgcolor="#ffffff" border="0"><tbody><tr><td>  import Java.io.*; <br />  import Java.text.*; <br />  import Java.util.*; <br />  import Javax.servlet.*; <br />  import Javax.servlet.http.*; <p>  public class HelloWorld extends HttpServlet { <br />  public void service(HttpServletRequest request, HttpServletResponse response) <br />  throws IOException, ServletException <br />  { <br />  response.setContentType("text/html"); <br />  ServletOutputStream out = response.getOutputStream(); <br />  out.println("QhtmlQ?); <br />  out.println("QheadQ?); <br />  String title = "Hello World"; <br />  out.println("QtitleQ? + title + "Q?titleQ?); <br />  out.println("Q?headQ?); <br />  out.println("Qbody bgcolor=\"white\"Q?); <br />  out.println("QbodyQ?); <br />  out.println("Qh1Q? + title + "Q?h1Q?); <br />  out.println("Q?bodyQ?); <br />  out.println("Q?htmlQ?); <br />  } <br />  } </p></td></tr></tbody></table><p>  存ؓ(f)c:\tomcat\webapps\myweb\classes\HelloWorld.JavaQ用Javac~译后,在地址栏键?http://localhost:apache_port/testdir/servlet/HelloWorld 看看l果吧?br /><br />  <b>如何讑֮Tomcat作ؓ(f)Windows的服务而启动?</b><br /><br />  上面我们已经谈到Q要使用Tomcat作ؓ(f)Web服务Ӟ必须先手工启动TomcatQ这昄不是一个适合Tomcat作ؓ(f)Web服务的方法,?Linux下可以通过修改启动脚本自动启动TomcatQ在Windows下则可以讑֮Tomcat作ؓ(f)Windows的服务而启动?br /><br />  我们可以借助工具QTomcat作ؓ(f)Windows NT/2000的一个服务:(x)<br /><br />  一、下载工Pq里作ؓ(f)例子的是gservany--NT下的一般应用程序作为服务运行的工具。下载网址为http: //www.advok.com/gservany.html。将zip文g解压~,gservany.exe攑օwinnt\system32?br /><br />  二、在NT/2000的command下输入:(x)gservany -i tomcat "C:\Jakarta-tomcat\bin" "startup.bat" "C:\Jakarta-tomcat\bin" "shutdown.bat"。其中C:\Jakarta-tomcat为Tomcat的安装目录?br /><br />  三、启动service理器,?x)看到tomcat service被装上?/p></div> </div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94140.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:31 <a href="http://www.aygfsteel.com/lijiezjn/articles/94140.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)Hibernate快速入?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94136.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94136.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt">其实<a target="_blank">Hibernate</a>本n是个独立的框Ӟ它不需要Q何web server或application server的支持。然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西,比如: <a target="_blank">Tomcat</a>, <a target="_blank">Eclipse</a>, <a target="_blank">Log4J</a>,<a target="_blank">Struts</a>, XDoclet, 甚至<a target="_blank">JBoss</a>。这Ҏ(gu)让h产生Hibernate复杂难懂的误解,特别是打M初学者的U极性? <p>  在这文章将不涉?qing)Eclipse, log4j, Struts, Tomcat, XDocletQ和JBoss。本文的目的是演CZ下Hibernate的安装过E以?qing)最基本的功能,从而给初学者一个低得不能再低的入门门槛?/p><p>  <strong>下蝲文g</strong></p><p>  你需要Java SDK?Hibernate包、Ant包、和JDBC Driver?/p><p>  1、Hibernate包下载地址:<br />  <a target="_blank">http://prdownloads.sourceforge.net/hibernate/?sort_by=date&sort=desc</a></p><p>  2、Ant包下载地址:<br />  <a target="_blank">http://archive.apache.org/dist/ant/</a></p><p>  3、JDBC Driver要根据你用的database来定Q一般database官方|站上都?x)有。Hibernate支持常用的databaseQ比?MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver: </p><p>  Oracle JDBC Driver下蝲地址(下蝲前必d意Oracle协议?<br />  <a target="_blank">http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html</a></p><p>  MySQL JDBC Driver下蝲地址<br />  <a target="_blank">http://dev.mysql.com/downloads/connector/j/3.0.html</a></p><p>  PostgreSQL JDBC Driver下蝲地址<br />  <a target="_blank">http://jdbc.postgresql.org/download.html</a></p><p>  MS-SQL Server JDBC Driver下蝲地址<br />  <a target="_blank">http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&displaylang=en</a></p><p>  4、将Hibernate包和Ant包分别解压至c:\dev\?此目录不重要Q你可以换其它Q何目??/p><p>  <strong>配置环境</strong></p><p>  1、你需要添加一个新的环境变? ANT_HOMEQ让它指向c:\dev\<的ANT包所在目?gt;q在PATH环境变量里添?ANT_HOME%\bin?/p><p>  2、你需要添加一个新的环境变? JAVA_HOMEQ让它指向你的j2sdk根目录。ƈ在PATH环境变量里添?JAVA_HOME%\bin?/p><p>  3、创Z个项目?目录Q比如c:\workspace\My1stHibernate?/p><p>  在项目目录下Q另外创Z个目? src, classes, lib?/p><p>  在lib目录下,创徏两个目录: hibernate和db?/p><p>  q样你有了如下的文gl构:</p><p>  c:\workspace\My1stHibernate\<br />  c:\workspace\My1stHibernate\src<br />  c:\workspace\My1stHibernate\classes<br />  c:\workspace\My1stHibernate\lib<br />  c:\workspace\My1stHibernate\lib\hibernate<br />  c:\workspace\My1stHibernate\lib\db </p><p>  4、将c:\dev\<的Hibernate包所在目?gt;hibernate2.jar文gcopy到c:\workspace\My1stHibernate\lib\hibernate下?/p><p>  c:\dev\<的Hibernate包所在目?gt;lib\下的所有文件同样copy到c:\workspace\My1stHibernate\lib\hibernate下?/p><p>  你的JDBC Driver文g(一般是一个jar文g)copy到c:\workspace\My1stHibernate\lib\db下?/p><p>  <strong>创徏数据?/strong></p><p>  1、用你最喜爱的database软gQ创Z个hibernate_test的数据库?/p><p>  2、在此数据库下,新徏一个table名ؓ(f)CUSTOMER</p><p>CREATE TABLE CUSTOMER<br />(<br /> CID INTEGER NOT NULL PRIMARY KEY, USERNAME VARCHAR(12) NOT NULL, PASSWORD VARCHAR(12) <br />); </p><p>  <strong>~写Java文g</strong></p><p>public class Customer {<br /> private int id;<br /> private String username;<br /> private String password;<br /><br /> public int getId() {<br />  return id;<br /> }<br /><br /> public String getPassword() {<br />  return password;<br /> }<br /><br /> public String getUsername() {<br />  return username;<br /> }<br /><br /> public void setId(int id) {<br />  this.id = id;<br /> }<br /><br /> public void setPassword(String password) {<br />  this.password = password;<br /> }<br /><br /> public void setUsername(String username) {<br />  this.username = username;<br /> }<br /><br />} </p><p>  此cd为c:\workspace\My1stHibernate\src\Customer.java文g?/p><p>  <strong>~写Testc?/strong></p><p>import net.sf.hibernate.*;<br />import net.sf.hibernate.cfg.*;<br /><br />public class Test {<br /><br /> public static void main(String[] args) {<br />  try {<br />   SessionFactory sf = new Configuration().configure().buildSessionFactory();<br />   Session session = sf.openSession();<br />   Transaction tx = session.beginTransaction();<br /><br />   for (int i = 0; i <200; i++) {<br />    Customer customer = new Customer();<br />    custoā?mer.setUsername("customer" + i);<br />    customer.setPassword("customer");<br />    session.save(customer);<br />   }<br /><br />   tx.commit();<br />   session.close();<br />  } catch (HibernateException e) {<br />   e.printStackTrace();<br />  }<br /> }<br />} </p><p>  此cd为c:\workspace\My1stHibernate\src\Test.java文g?/p><p>  <strong>创徏Hibernate映射文g</strong></p><p>  因ؓ(f)q里只有一个Class --- Customer 和一个Table --- CUSTOMERQ你只需要徏立一个映文?-- Customer.hbm.xmlQ来对应CustomercdCUSTOMER表之间的关系?/p><p><xml version="1.0"?><br /><DOCTYPE hibernate-mapping PUBLIC<br />"-//Hibernate/Hibernate Mapping DTD//EN"<br />"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"><br /><br /><ibernate-mapping><br /><lass name="Customer" table="CUSTOMER"><br /><d name="id" column="CID"><br /><enerator class="increment" /><br /><id><br /><roperty name="username" column="USERNAME" /><br /><roperty name="password" column="PASSWORD" /><br /><class><br /><hibernate-mapping></p><p>  把此文g存ؓ(f)c:\workspace\My1stHibernate\src\Customer.hbm.xmlQ和Customer.java攑֜同一目录下?/p><p>  <strong>~写Ant build.xml文g</strong></p><p>  你不一定要知道q个build.xml的细节,其实Ant也不是Hibernate所必须的。这里用Ant是ؓ(f)了简化一些Q务,比如: ~译、copy、运行,{?/p><p><xml version="1.0" ?><br /><br /><roject name="My1stHibernate" default="build" basedir="."><br /><br /><roperty name="base.dir" value="." /><br /><roperty name="src.dir" value="src" /><br /><roperty name="lib.dir" value="lib" /><br /><roperty name="build.dir" value="classes" /><br /><br /><ath id="myclasspath"><br /><ileset dir="${lib.dir}"><br /><nclude name="**/*.jar" /><br /><fileset><br /><athelement location="${build.dir}" /><br /><path><br /><br /><arget name="init"><br /><kdir dir="${build.dir}" /><br /><target><br /><br /><arget name="build" depends="init" description="compile the source files"><br /><avac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" /><br /><opy todir="${build.dir}" ><br /><ileset dir="${src.dir}" ><br />ā?<xclude name="**/*.java"/><br /><fileset><br /><copy><br /><target><br /><br /><arget name="run" depends="build"><br /><ava classpathref="myclasspath" classname="Test" fork="true" /><br /><target><br /><br /><arget name="clean"><br /><elete includeEmptyDirs="true"><br /><ileset dir="${build.dir}" /><br /><delete><br /><target><br /><br /><project></p><p>  <strong>配置Hibernate描述文g</strong></p><p>  Hibernate描述文g可以是一个properties或xml 文gQ其中最重要的是定义数据库的q接。我q里列出的是一个XML格式的hibernate.cfg.xml描述文g?/p><p><xml version="1.0" encoding="utf-8" ?><br /><DOCTYPE hibernate-configuration<br />PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"<br />"http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"><br /><br /><ibernate-configuration><br /><br /><ession-factory name="java:/hibernate/HibernateFactory"><br /><br /><roperty name="show_sql">rue<property><br /><roperty name="connection.driver_class"><br />oracle.jdbc.driver.OracleDriver <-- q里是Oracle 9i的JDBC driver class?--><br /><property><br /><roperty name="connection.url"><br />jdbc:oracle:oci8:@hibernate_test <-- q里是Oracle的hibernate_test数据库URL --><br /><property><br /><roperty name="connection.username"><br />你的数据库用户名<br /><property><br /><roperty name="connection.password"><br />你的数据库密?br /><property><br /><roperty name="dialect"><br />net.sf.hibernate.dialect.Oracle9Dialect <-- q里是Oracle 9i的Dialect --><br /><property><br /><br /><apping resource="Customer.hbm.xml" /><-- 指定Customer的映文?--><br /><br /><session-factory><br /><br /><hibernate-configuration></p><p>  如果你用的不是Oracle 9iQ可到C:\dev\<的Hibernate包所在目?gt;src\hibernate.properties文g里找C的数据库Q然后替换以上相对应的倹{?/p><p>  <strong>开始运?/strong></p><p>  到c:\workspace\My1stHibernate下,q行ant run。如果你严格依照以上步骤Q应该看?/p><p>run:<br />[java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).<br />[java] log4j:WARN Please initialize the log4j system properly.<br />[java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)<br />BUILD SUCCESSFUL </p><p>  C的hibernate_test数据库看一下,在CUSTMOR表里新添?00条记录,但你没有写Q何JDBC code?/p><p>  以后如果你要更换数据库,只需要改变hibernate.cfg.xml描述文g里相应的值即可?/p></div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94136.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:24 <a href="http://www.aygfsteel.com/lijiezjn/articles/94136.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)Tomcat全攻?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94135.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:23:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94135.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt"> <div style="FONT-SIZE: 10.5pt">随着java的流行,其在web上的应用也越来越q,tomcat作ؓ(f)一个开源的servlet容器Q应用前景越来越q,本文向你讲qtomcat的一些知识?<br />一Q简?<br />tomcat 是jakarta目中的一个重要的子项目,其被JavaWorld杂志的编辑选ؓ(f)2001q度最具创新的java产品 (Most  Innovative  Java  Product)Q同时它又是sun公司官方推荐的servlet和jsp容器(具体可以?a target="_blank"><font color="#000000" size="2">http://java.sun.com/products/jsp/tomcat/</font></a>)Q因此其来多的受到Y件公司和开发h员的喜爱。servlet和jsp的最新规范都可以在tomcat的新版本中得到实现?<br /><br />二:(x)安装?qing)配|?<br />tomcat最新版本ؓ(f)4.0.1Q这个版本用了一个新的servlet容器CatalinaQ完整的实现了servlet2.3和jsp1.2规范。注意安装之前你的系l必d装了jdk1.2以上版本?<br /><br />(一)Q安?<br />1Qwindowsq_ <br />从tomcat|站下蝲jakarta-tomcat-4.0.1.exeQ按照一般的windowsE序安装步骤卛_安装好tomcat,安装时它?x)自动寻找你的jdk和jre的位|?<br /><br />2Qlinuxq_ <br />下蝲jakarta-tomcat-4.0.1.tar.gzQ将其解压到一个目录?<br /><br />(?Q配|?<br />q行tomcat需要设|JAVA_HOME变量 <br /><br />set  JAVA_HOME=c:/jdk  (win98Q在msdos方式下用,或者放入autoexec.bat? <br />export  JAVA_HOME=/usr/local/jdk  (linux下用,攑ֈ/etc/bashrc或?etc/profile? <br /><br /><br />   <br /><br /><br /><br />(?Q运?<br />讄完毕后就可以q行tomcat服务器了Q进入tomcat的bin目录Qwin98下用startup启动tomcatQlinux下用startup.shQ相应的关闭tomcat的命令ؓ(f)shutdown和shutdown.sh?<br /><br />启动后可以在览器中输入<a href="http://localhost:8080/%E6%B5%8B%E8%AF%95%EF%BC%8C%E7%94%B1%E4%BA%8Etomcat%E6%9C%AC%E8%BA%AB%E5%85%B7%E6%9C%89web%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%8A%9F%E8%83%BD%EF%BC%8C%E5%9B%A0%E6%AD%A4%E6%88%91%E4%BB%AC%E4%B8%8D%E5%BF%85%E5%AE%89%E8%A3%85apache%EF%BC%8C%E5%BD%93%E7%84%B6%E5%85%B6%E4%B9%9F%E5%8F%AF%E4%BB%A5%E4%B8%8Eapache%E9%9B%86%E6%88%90%E5%88%B0%E4%B8%80%E8%B5%B7%EF%BC%8C%E4%B8%8B%E9%9D%A2%E4%BC%9A%E4%BB%8B%E7%BB%8D%E3%80%82" target="_blank"><font color="#000000" size="2">http://localhost:8080/试Q由于tomcat本nhweb服务器的功能Q因此我们不必安装apacheQ当然其也可以与apache集成CP下面?x)介l?/font></a><br /><br />下面你可以测试其自带的jsp和servletCZ?<br /><br />三:(x)应用 <br /><br />(一):目录l构 <br />tomcat的目录结构如下:(x) <br /><br />目录名  简介 ?<br />bin  存放启动和关闭tomcat脚本   <br />conf  包含不同的配|文?server.xml(Tomcat的主要配|文?和web.xml   <br />work  存放jsp~译后生的class文g   <br />webapp  存放应用E序CZQ以后你要部|的应用E序也要攑ֈ此目录 ?<br />logs  存放日志文g   <br />lib/japser/common  q三个目录主要存放tomcat所需的jar文g   <br /><br /><br /><br />(?Qserver.xml配置?<br />下面我们讲q这个文件中的基本配|信息,更具体的配置信息见tomcat的文?<br /><br />元素名  属性  解释 ?<br />server  port  指定一个端口,q个端口负责监听关闭tomcat的请求 ?<br />shutdown  指定向端口发送的命o(h)字符串 ?<br />service  name  指定service的名字 ?<br />Connector <br />(表示客户端和service之间的连?  port  指定服务器端要创建的端口Pq在q个断口监听来自客户端的h   <br />minProcessors  服务器启动时创徏的处理请求的U程敊W?<br />maxProcessors  最大可以创建的处理h的线E数   <br />enableLookups  如果为trueQ则可以通过调用request.getRemoteHost()q行DNS查询来得到远E客L(fng)的实际主机名Q若为false则不q行DNS查询Q而是q回其ip地址   <br />redirectPort  指定服务器正在处理httph时收C一个SSL传输h后重定向的端口号   <br />acceptCount  指定当所有可以用的处理h的线E数都被使用Ӟ可以攑ֈ处理队列中的h敎ͼ过q个数的h不予处理 ?<br />connectionTimeout  指定时的时间数(以毫Uؓ(f)单位)   <br />Engine <br />(表示指定service中的h处理机,接收和处理来自Connector的请?  defaultHost  指定~省的处理请求的L名,它至与其中的一个host元素的name属性值是一L(fng)   <br />Context <br />(表示一个web应用E序Q通常为WAR文gQ关于WAR的具体信息见servlet规范)  docBase  应用E序的\径或者是WAR文g存放的\径 ?<br />path  表示此web应用E序的url的前~Q这栯求的url?a href="http://localhost:8080/path/****%C2%A0%C2%A0" target="_blank"><font color="#000000" size="2">http://localhost:8080/path/****  </font></a><br />reloadable  q个属性非帔R要,如果为trueQ则tomcat?x)自动检应用程序的/WEB-INF/lib  ?WEB-INF/classes目录的变化,自动装蝲新的应用E序Q我们可以在不重起tomcat的情况下改变应用E序   <br />host <br />(表示一个虚拟主? <br />  name  指定L名 ?<br />appBase  应用E序基本目录Q即存放应用E序的目录 ?<br />unpackWARs  如果为trueQ则tomcat?x)自动将WAR文g解压Q否则不解压Q直接从WAR文g中运行应用程序 ?<br />Logger <br />(表示日志Q调试和错误信息) <br />  className  指定logger使用的类名,此类必须实现org.apache.catalina.Logger  接口   <br />prefix  指定log文g的前~   <br />suffix  指定log文g的后~   <br />timestamp  如果为trueQ则log文g名中要加入时_(d)如下?localhost_log.2001-10-04.txt   <br />Realm <br />(表示存放用户名,密码?qing)role的数据库) <br />  className  指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口   <br />Valve <br />(功能与Logger差不多,其prefix和suffix属性解释和Logger  中的一? <br />  className  指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValvecd以记录应用程序的讉K信息 <br />   <br />directory  指定log文g存放的位| ?<br />pattern  有两个|common方式记录q程L名或ip地址Q用户名Q日期,W一行请求的字符ԌHTTP响应代码Q发送的字节数。combined方式比common方式记录的值更多 ?<br /><br />注意Q?Q经q我试Q我讄Context  的path="",reloadable=trueQ然后放一个WAR文g到webapps目录Q结?tomcat不能(g)出此文?重vtomcat可以)Q而把此文件解压,则tomcat?x)自动检出q个新的应用E序。如果不能自动检WAR文gQ我们可以利用下面管理中讲的Ҏ(gu)来部|应用程序?<br /><br />2Q默认的server.xml中,Realm元素只设|了一个className属性,但此文g中也包含几个通过JDBCq接到数据库q行验证的示?被注释掉?Q通过Realm元素我们可以实现容器安全理 (Container  Managed  Security)?<br /><br />3Q还有一些元素我们没有介l,如ParameterQloaderQ你可以通过tomcat的文档获取这些元素的信息?<br /><br />(?Q管?<br /><br />1Q配|?<br />在进行具体的理之前Q我们先ltomcatd一个用P使这个用h权限来进行管理?<br /><br />打开conf目录下的tomcat-users.xml文gQ在相应的位|添加下面一行:(x) <br /><br /><user  name   password="ZF"   roles="STANDARD,MANAGER">   <br /><br /><br />   <br /><br /><br /><br />注意Q这一行的最后部分一定是/>,tomcat的文档掉?W号Q如果没?W号的话Qtomcat重v时将无法讉K应用E序。通过logs/catalina.out文g你可以看到这个错误的详细信息?<br /><br />然后重vtomcatQ在览器中输入<a href="http://localhost:8080/manager/%EF%BC%8C%E4%BC%9A%E5%BC%B9%E5%87%BA%E5%AF%B9%E8%AF%9D%E6%A1%86%EF%BC%8C%E8%BE%93%E5%85%A5%E4%B8%8A%E9%9D%A2%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81%E5%8D%B3%E5%8F%AF%E3%80%82" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/Q会(x)弹出对话框,输入上面的用户名和密码即可?/font></a><br /><br />2Q应用程序列?<br />在浏览器中输?a href="http://localhost:8080/manager/list%EF%BC%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E5%B0%86%E4%BC%9A%E6%98%BE%E7%A4%BA%E5%A6%82%E4%B8%8B%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%9A" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/listQ浏览器会(x)昄如下的信息:(x)</font></a><br /><br />OK  -  Listed  applications  for  virtual  host  localhost <br />/ex:running:1 <br />/examples:running:1 <br />/webdav:running:0 <br />/tomcat-docs:running:0 <br />/manager:running:0 <br />/:running:0 <br /><br />   <br /><br /><br /><br />面的信息分别为应用程序的路径Q当前状?running  或者stopped)Q与q个E序相连的session数?<br /><br />3Q重新装载应用程?<br />在浏览器中输入 ?a href="http://localhost:8080/manager/reload?path=/examples%EF%BC%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E6%98%BE%E7%A4%BA%E5%A6%82%E4%B8%8B%EF%BC%9A" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/reload?path=/examplesQ浏览器昄如下Q?/font></a><br /><br />OK  -  Reloaded  application  at  context  path  /examples     <br /><br /><br />   <br /><br /><br /><br />表示example应用E序装蝲成功Q如果我们将server.xml的Context元素的reloadable属性设为true(见上面表?Q则没必要利用这U方式重新装载应用程序,因ؓ(f)tomcat?x)自动装载?<br /><br />4Q显Csession信息 <br />在浏览器中输?a href="http://localhost:8080/manager/sessions?path=/examples%EF%BC%8C%E6%B5%8F%E8%A7%88%E5%99%A8%E6%98%BE%E7%A4%BA%E5%A6%82%E4%B8%8B%EF%BC%9A" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/sessions?path=/examplesQ浏览器昄如下Q?/font></a><br /><br />OK  -  Session  information  for  application  at  context  path  /examples  Default  maximum  session  inactive  interval  30  minutes     <br /><br /><br />   <br /><br /><br /><br />5Q启动和关闭应用E序 <br />在浏览器中输?a href="http://localhost:8080/manager/start?path=/examples%E5%92%8Chttp://localhost:8080/manager/stop?path=/examples%E5%88%86%E5%88%AB%E5%90%AF%E5%8A%A8%E5%92%8C%E5%85%B3%E9%97%ADexamples%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E3%80%82" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/start?path=/examples和http://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用E序?/font></a><br /><br />6Q部|及(qing)撤销部v <br />WAR有两U组l方式,一U是按一定的目录l构l织文gQ一U是一个后~为WAR的压~包Q因此它的部|方式也有两U:(x) <br />(1)Q在览器中输入Q?a href="http://localhost:8080/manager/install?path=/examples&war=file:/c:examples" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/install?path=/examples&war=file:/c:examples</font></a><br />׃(x)按目录l构l织的WAR部v <br /><br />(2)Q如果输?<a href="http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:examples.war" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:examples.war</font></a>!/ <br />׃(x)按压羃包组l的WAR部vQ注意此url后半部分一定要?/受?<br /><br />部v后就可以用 ?a href="http://localhost:8080/examples%E8%AE%BF%E9%97%AE%E4%BA%86%E3%80%82" target="_blank"><font color="#000000" size="2">http://localhost:8080/examples讉K了?/font></a><br /><br />在浏览器中输入:(x)<a href="http://localhost:8080/manager/remove?path=/examples" target="_blank"><font color="#000000" size="2">http://localhost:8080/manager/remove?path=/examples</font></a><br />׃(x)撤销刚才部v的应用程序?<br /><br />(?Q与apache集成 <br />虽然tomcat也可以作web服务?但其处理静态html的速度比不上apache,且其作ؓ(f)web服务器的功能q不如apache,因此我们xapache和tomcat集成h?<br /><br />我们以linuxpȝZ介绍. <br /><br />从apache|站下蝲apache1.3.22源代码版本,然后使用如下命o(h)配置安装apacheQ?<br /><br />mkdir  /usr/local/apache <br />tar  zxvf  apache.1.32.tar.gz <br />cd  apache.1.32 <br />./configure  --prefix=/usr/local/apache  --enable-module=so   <br />make <br />make  install <br /><br /><br />   <br /><br /><br /><br />注意configure命o(h)指定目标安装目录Qƈ且加入DSO(Dynamic  Shared  Object)支持Q注意一定不要忘了这一个选项?<br /><br />然后下蝲webapp模块Q将解压后mod_webapp.so文g攑օapache的libexec目录Q编辑apache的conf目录下的httpd.confQ在q个文g的最后加入下面三行:(x) <br /><br />LoadModule  webapp_module  libexec/mod_webapp.so <br />WebAppConnection  warpConnection  warp  localhost:8008 <br />WebAppDeploy  examples  warpConnection  /examples/   <br /><br /><br />   <br /><br /><br /><br />W一行是加入webapp模块Q如果编译apache时不增加DSO支持Q则无法使用LoadModule指o(h)Q第二行指定tomcat与apache的连接,W三行指定部|那个应用,q两个指令用格式如下:(x) <br /><br />WebAppConnection  [connection  name]  [provider]  [host:port] <br />WebAppDeploy  [application  name]  [connection  name]  [url  path]     <br /><br /><br />   <br /><br /><br /><br />其中connection  name指定q接名,provider只能是warpQport端口与你的tomcat的配|文件server.xml最后几行指定的要保持一致。文件如下:(x) <br /><br /><service  name>   <br /><connector  classname><br />port="8008"  minProcessors="5"  maxProcessors="75" <br />enableLookups="true" <br />acceptCount="10"  debug="0"/> <br />****** <br /></connector  classname>nbsp;  <br /><br /><br />   <br /><br /><br /><br />application  name与你在tomcat中部|的应用名一_(d)url  path指定讉Kq个应用的url。例如上面的例子可以通过<a href="http://localhost/examples/%E6%9D%A5%E8%AE%BF%E9%97%AEtomcat%E4%B8%AD%E7%9A%84examples%E5%BA%94%E7%94%A8%E3%80%82" target="_blank"><font color="#000000" size="2">http://localhost/examples/来访问tomcat中的examples应用?/font></a><br /><br />(?Q中文问?<br />一般jsp的ؕ码问题可以通过在jsp中加?lt;%@  page  contentType="text/html;charset= GB2312"  %>来解冻I至于servlet的ؕ码在可以使用servlet2.3中提供的 HttpServeletRequest.setCharacterEncoding函数。更详细的中文问题请见JSP/Servlet  中的汉字~码问题?<br /><br />四:(x)lD <br />tomcat作ؓ(f)一个servlet(jsp也被~译为servlet执行)容器Q其应用前景是非常好的,如果与jbossl合hQ则可以实现sun的j2ee规范(用jboss作ejb服务?。jboss的官方网站也提供集成了tomcat3.2*?jboss以供下蝲。另外一个开源的应用服务?enhydra)  也是Ztomcat的,其提供了更友好的理界面Q部|应用程序也更简单,功能也更强大?</service  name>/USER&NBSP;&NBSP;NAME="ZF"&NBSP;&NBSP;PASSWORD="ZF"&NBSP;&NBSP;ROLES="STANDARD,MANAGER"></user  name></div> </div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94135.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:23 <a href="http://www.aygfsteel.com/lijiezjn/articles/94135.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)初学jsp心得http://www.aygfsteel.com/lijiezjn/articles/94129.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:16:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94129.html

试环境?jdk1.2.2 jswdk-1.0 winnt4.0中文版?

1。java是大写敏感的,用过其他~程语言的h最Ҏ(gu)犯这个错误,其是刚上手的时候。我刚开始调试jsp的时50%以上的编译错误是都是因ؓ(f)q个?

2。java的调用过E都是要加括L(fng)Q一开始比较容易忽视,如title=request.getParameter("title").trim();

3。jsp中对应asp中的request.form()和request.querystring()的解x法?
jsp 中取得参数没有form和queryString之分Q都是通过request.getParameter("XXXX")来取得。虽然jsp也有 request.getQueryString()Ҏ(gu)Q但试l果?test.jsp?id=1&page=20 得到 id=1&page=20?
如果url和form有相同的参数名称呢?下面是一D|试代码:(x)
<form method="POST" action="query.jsp?id=2">
<input type="text" name="id" value="1" size="60">
</form>
name都是idQ结果是url的参C先得刎ͼjsp的这U处理方式和asp相比我觉的各有所ѝ?

4。头疼的汉字处理问题?
在其他的文章里曾说到在中文NT环境下如下语句输Z(x)得到qQ?
<%="你好"%> ?out.print("你好");{。解x法是只要对字W串变量q行~码可以得到正结?如下代码可以得到正确的输出:(x)
<% String title="你好";
byte[] tmpbyte=title.getBytes("ISO8859_1");
title=new String(tmpbyte);
out.print(title); %>
或?lt;%=title%>

关于sql语句汉字问题Q例句ؓ(f) select * from test where title='谁是?c)?
在jdbc-odbc驱动下连db2Q不是原句q是对sql语句q行~码后都L通不q?
换了ibm的jdbc直接驱动后,对sql语句~码后程序可以通过?

q个问题的生大概是中文NT的原因,在其他环境下可能没汉字处理问题了,据说ibm的web sphere对中文支持的很好Q这也给jsp的开发带来一定的通用性问题。据说对字符串编码是一U通用的解x法,不过没有q么多环境来试?

5。在asp中经怋用到字符串判断语句如 if state="真是?c)? then.....
在java中String变量不是一个简单的变量而是一个类实例Q不同的Ҏ(gu)?x)得C同的l果
a.
String str1="我是?c)?;
String str2="我是?c)?; (or String str2="我是"+"?c)?; )
if (str1==str2)
out.print("yes");
else
out.print("no");
l果?yes"?
大概是编译优化,str1,str2指向同一个类实例Q?

b.
String str1,str2,str3;
str1="我是?c)?;
str2="我是";
str3=str2+"?c)?;
if (str1==str3)
out.print("yes");
else
out.print("no");
l果?no"?

String str1=new String("我是?c)?);
String str2=new String("我是?c)?);
if (str1==str2)
out.print("yes");
else
out.print("no");
l果?no"?

String str1=new String("我是?c)?);
String str2=new String("我是?c)?);
if (str1.compareTo(str2)==0)
out.print("yes");
else
out.print("no");
l果?yes"?

所以在jsp中判断字W串要用compareToҎ(gu)Q用惯传l语aq真一下子适应不过来,熟?zhn)java的朋友应该没q个问题?

6。如何判断数据库为空Q?
result = stmt.executeQuery(sql);
if (result.next())
......
result执行后游标出于一个未明的状态,不能q行状态判断,也不能取|一定要next()一下才可以用?


7。在jsp中实现分c(din)?
page是关键字Q不能当变量?
conn.jsp
<%
String sDBDriver = "COM.ibm.db2.jdbc.app.DB2Driver";
String sConnStr = "jdbc:db2:faq";
Connection conn = null;
Statement stmt = null;
ResultSet rs=null;
try {
Class.forName(sDBDriver);
}
catch(java.lang.ClassNotFoundException e) {
out.print("faq(): " + e.getMessage());
}

try{
conn = DriverManager.getConnection(sConnStr,"wsdemo","wsdemo1");
stmt = conn.createStatement();
}catch(SQLException e){
out.print(e.toString());
}
%>

query.jsp

<%@ page language="java" import="java.sql.*" %>
<%@ page contentType="text/html; charset=gb2312" %>
<%@ include file="conn.jsp" %>
<%
.......
int pages=0;
int pagesize=10;
ResultSet result = null;
ResultSet rcount = null;

pages = new Integer(request.getParameter("pages")).intValue();

if (pages>0)
{

String sql=" state='我不?";
int count=0;
try {
rcount = stmt.executeQuery("SELECT count(id) as id from user where "+sql);

catch(SQLException ex) {
out.print("aq.executeQuery: " + ex.getMessage());
}
if(rcount.next())
count = rcount.getInt("id");
rcount.close();

if (count>0)
{
sql="select * from user where "+sql;
try {
result = stmt.executeQuery(sql);
}
catch(SQLException ex) {
out.print("aq.executeQuery: " + ex.getMessage());
}

int i;
String name;
// result.first();
// result.absolute((pages-1)*pagesize);
// 此方法jdbc2.0支持。编译通过Q但执行不过Q不知是不是跟驱动有养I只好用下面的W办法?
for(i=1;i<=(pages-1)*pagesize;i++)
result.next();
for(i=1;i<=pagesize;i++) {
if (result.next()) {
name=result.getString("name");
out.print(name);
}
result.close();
int n= (int)(count/pagesize);
if (n*pagesize<count) n++;
if (n>1)
{
for(i=1;i<=n;i++)
out.print("<a href=query.jsp?pages="+i+">"+i+"&nbsp;</a>");
}
}
}
%>

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:16 发表评论
]]>
(转蝲)初学Java注意什么?http://www.aygfsteel.com/lijiezjn/articles/94128.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:11:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94128.html
JavaL它的千般好处使你选择它,但这些随便翻M或在|上逛一圈就能找到答案。在本文中,W者把自己学习(fn)Java的一些切w体?x)和q程写出来,供初学者做个参考?

我在学习(fn)Java的过E中主要围绕以下几个斚w来学?fn)?x)

1Q时L醒自己Java是一UOOP语言工具Q而不仅仅是编码,只有q样才能M把握和运用Java?

2Q在学习(fn)的过E中Q最好能够了解Java的底层机Ӟ而不是仅仅停留在表层Q不是抄书上的例子运行出l果可以。要注意Q即便对一个简单的例子也要有耐心ȝ、调试、改动?

3Q在学习(fn)的过E中一定要动手做、写代码Q而不是抱一本书看看p。很多东西和体会(x)必须自己动手才能真正属于自己Q最好能参与一些实际的目?

4Q在学到一定阶D后Q你开始希望用学过的东西做些什么。这时的你应该开始学?fn)一些更多、更复杂的知识,比如J2EEq_的构建、EJB的开发等。对于这一部分Q我最好找一本较薄的书先了解一个大概,心里有个M的认识,Ҏ(gu)多的技术术语做个初步掌握。我认ؓ(f)q个阶段看看《J2EE技术实c(din)很不错Q它可以让你了解J2EE包含的各U技术和框架Q同时提供很多实际的例子来加深对J2EE的整体了解?

学习(fn)Java的兴和军_起了很关键的作用。在有了上述基础后,我便开始一步一步地学习(fn)Java?


Java环境的搭?br />

要运行JavaE序Q必d装JDK。JDK是整个Java的核心,其中包括了Java~译器、JVM、大量的Java工具以及(qing)Java基础API?

可以从http://Java.sun.com下蝲JDKQ有1.4版本?.31版本。我的学?fn)环境中首先Q采用的?.31版本?

解压安装。然后,q行环境讄?

1.对于Windowsq_要进行以下设|:(x)

set PATH=YOUR_INSTALL_ DIR\bin; C:\Windows;C:\Windows\Command
set classpath=. ;YOUR_INSTALL_DIR\lib\tools.jar



2.对于Linuxq_要编?etc/profile文gQ?

JAVA_HOME=your_install_dir/JDK/j2sdk
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/td.jar:$JAVA_HOME/jr  
-e/lib/rt.jar:.
PATH=$PATH:$JAVA_HOME/bin
export PATH PS1 USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE  
INPUTRC JAVA_HOME CLASSPATH RESIN_HOME



最后,在终端上输入Java看能不能扑ֈq个命o(h)Q如果能扑ֈ安装成功了?

下面介绍一下JDK的几个重要的命o(h)Q?

◆Java执行工具Q是启动JVMQ虚拟机Qƈ执行classQBYTE CODEQ文件的命o(h)Q?

◆javac ~译器,?java文g生成.class文gQ?

◆jar Java压羃打包工具Q?

◆Javadoc 文档生成器?

最后就是JDK DocumentationQ这是JDK的联机帮助文档,是最有用和最重要的学?fn)参考文档,应该多看?


开始写自己的代?br />

现在环境有了Q应该写个简单的代码q行试了。还是从l典的“hello word”开始?

1Q?先用~辑器写一代码Q我用的是Linux的viQ:(x)

[stone@coremsg work]$ vi Hello.Java
  public class Hello{
        public static void main(String []argc){
                System.out.println("Hello Word!");
        }
  }



2Q?~译Q?

[stone@coremsg work]$ Javac Hello.Java



3Q?执行Q?

[stone@coremsg work]$ Java Hello
     Hello Word!



成功了!q就是我的第一个JavaE序。从那时h知道已开始走qJava的世界,接下来就靠自q努力了。在q个q程中,W者认为有几点需要注意?

学习(fn)一门新的语aQ参考书是离不开的。我的徏议是开始最好找一本篇q较短的入门书来学习(fn)那些最单、最基本的东西,包括学习(fn)Java语法{。同Ӟ对一个最单的E序也应该多去调试,多想惛_果改动一下会(x)出现什么结果?Z么必那样写Q多L惌些问题然后去操作Q会(x)让你有更多的收获。这样反复地思考是很有用的。此外,在这一阶段q应该多看JDK的联机帮助,量多地掌握JDK提供的Java基本cdAPI?

在有一定基、能够写一些简单的E序后,可以开始看《Thinking in Java》这本书。它比较完整Cl了Java的语法、面向对象的Ҏ(gu)、核心类库等。通过q一层次的学?fn)能够加深对Java的理解和底层原理的运用,同时又可以完整地了解Java的整个体pR在q一阶段Q应该重点学?fn)Java的面向对象编E语a的特性,比如l承、构造器、抽象类、接口、方法的多态、重载、覆盖、Java的异常处理机制等Q要对上q概忉|非常清楚的了解。这样做的目的,是要让自己把q些技术应用到实践中进行合理的E序设计Q比如,你会(x)考虑一个类是用抽象q是接口来设计等Q。这p求必d大量的实践中d用和学习(fn)。这也是当初很多朋友l我的徏议?


学习(fn)更多


如果要用Java来完成各U功能更强大的Q务,那么p学习(fn)语言以外的更多的东西?

1.Java Web~程

对于Java Web ~程来说Q应该而且必须熟?zhn)和掌握HTTP协议Q可以参?Stevens的《TCP/IP 详解》第三卷。Java Servlet技术提供了生成动态Web面内容的能力,q在你的Java目中是最基本的功能之一Q所以必d?fn)。通过q一阶段的学?fn)应该掌?Servlet/JSP的Web~程?

2. J2EE的学?

J2EE包含的技术太多了。如果你惛_在桌子旁Ҏ(gu)着一大堆书来学习(fn)的话Q效果不大的。我在开始这一阶段的学?fn)的时候,可以按以下步骤来做,ȝ思想是“M把握Q各个击破”?

?了解J2EE中的技术术语的含义?

我的感觉是J2EE标准中涉?qing)到的各U技术很多,如果一开始就一个一个去学习(fn)的话是不现实的,也是没效果的。我的徏议是Q先对其中的技术有个大概的了解Q比如EJB、JavaIDL、JTA{。可能你不知道怎么d一个EJBQ但是要知道什么是EJB、它能做什么,当有了这L(fng)概念后,再去有目的地学习(fn)它就?x)快很多。我q要再重复一句——必要在实践中动手d才行?

?了解J2EE中的设计模式Q这栯帮助你对J2EE做个整体把握?

MVC开发模式被证明是有效的处理Ҏ(gu)之一。它可以分离数据讉K和数据表现。你可以开发一个有伸羃性的、便于扩展的控制器,来维护整个流E。通过q一层次的学?fn),当你面对一个项目的时候,应该首先把握它的M架构的设计,以及(qing)军_采用J2EE标准中的哪些技术?

?了解一些J2EEq_的典型案列,加深对这一技术的概念和理解?

qx可以多留意这斚wQ熟(zhn)一些典型案例,分析它ؓ(f)什么要采用那个旉Q那样做能达C么样的目的?然后联系到自pn边的目是否可以作ؓ(f)参考?

?学习(fn)J2EE下的各种技术?

在有了前几阶D늚学习(fn)后,可以自己搭徏一个J2EEq_开始具体学?fn)每一U技术。你可以参与公司相关目q行学习(fn)Q也可以自己搭徏一个^台进行学?fn)。这时候应该找点相关的书来一步一步学?fn),没有捷径可走。如果你不满于q些Q那么还应该更深入地学习(fn)UML、设计模式等斚w的东?
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:11 发表评论
]]>
(转蝲)全面认识JAVAhttp://www.aygfsteel.com/lijiezjn/articles/94127.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:10:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94127.html
以下是Java标准技术的一些要点:(x)

一、Java的跨q_性,即一ơ编译到处运?

单地说Java的跨q_性就是指Q编译后的JavaE序可直接在不同的^Cq行而不用重新编译,q一Ҏ(gu)得Java随着Web应用的普?qing)而迅速普?qing)v来。而Java的跨q_性是如何实现的呢Q这p理解Java虚拟机和字节码的概念?

  实际上,~译后的Java代码q不是传l的二进制代码(如Windows下的.exe文gQ,而是Java字节码,q种字节码文件是不能直接在操作系l上执行的。要惛_一个操作系l上q行一个JavaE序必须有一个中间环节来负责Java字节码解释成二进制码Q这个中间环节就是Java虚拟机(U?JVM)。由于目前大多数操作pȝ已经实现了JVMQ所以JavaL实现跨^台性?

  二、面象对象技?

   Java全面支持面象对象技术,q体现在ClassQ类Q是JavaE序构成的基本单元,一个JavaE序通常p多Classl成Q而且q些Class q会(x)有一定的l承关系QJava支持Class的单l承Q从而ɾcM间的l承关系更明。承的l果产生cȝ多态性,cȝ多态本质上讲就是可以用父类的引用访问承类的实玎ͼ子类对象Q,cȝq种多态性最lŞ成了lg对象模型的基Q即通过接口Q父c)讉K实现Q子c)?

  三、Java中的I/O操作

  Java中以字节(InputStream和OutputStream)、节W流QReader和W(xu)riter)来分别读写二q制数据和字W数据,使用非常单有效。Javacd中的FilecM仅提供文件操作而且q包含文件夹操作Q如下面q几行代码可以列出C盘根目录下的所有文Ӟ(x)

File f=new File("c://";
String [] m_dir= f.list();
for(int i=0;i
System.out.println(m_dir);

四、Java中的囑Ş?qing)事件处?

可以用awt包或swing包的JavacLq行大部分的Java囑Ş界面设计Q下面的几行代码生一?00*200像素的窗体:(x)

Frame f=new Frame("Welcome";
f.setSize(200,200);
f.setVisible(true);

默认情况下,FrameH体的关闭按钮不起作用,q也是Java初学者迷惑的地方。ؓ(f)了用户按下关闭按钮时能关闭FrameH体Q需要让q个H体响应一?WindowEvent事gQ具体的做法是l这个窗体添加一个事件监听器对象Q这个事件监听器是WindowListener接口的实现。在上面的代码中插入如下代码可以关闭窗体:(x)

f.addWindowListener(new WindowAdapter(){
??public void windowClosing(WindowEvent e){
System.exit(0);
??}
}

q里用到一个无名内部类Q无名内部类是Java中内部类的一U灵z运用方式?

五、Java中线E及(qing)同步控制

U程概念的引入是Z实现q行处理Q从而提高程序的效率。Java中的U程实现非常单,可以用两U方式来创徏U程Q一U是实现Runnable接口Q另一U是l承Threadc重写run()Ҏ(gu)。两U方式唯一的不同就是前者保留了l承一个类的可能(因ؓ(f)Java只支持类的单l承Q但接口没有此限Ӟ?

  永远都用start()Ҏ(gu)来启动一个线E,U程cM的run()可以被直接调用,但决不是启动一个线E,二者有着本质的区别?

  用同步控制关键字synchronized来保护线E敏感数据,synchronized块中的内容可以保证同一时刻只能被一个线E访问,所以其中的数据是线E安全的?

  用ObjectcM的wait()和notify()Ҏ(gu)可以实现U程间交互,但要Cwait()和notify()Ҏ(gu)只有发生在同一个对象上才能真正实现U程间交互。被某一对象wait()Ҏ(gu)d的线E需要另外一个调用了同一对象notify()的线E干预才能恢复运行。notify()Ҏ(gu)一ơ唤醒一个被wait()Ҏ(gu)d的线E,notifyAll()Ҏ(gu)可以一ơ唤醒所有被wait()Ҏ(gu)d的线E?

  六、Java本地Ҏ(gu)QnativeҎ(gu)Q的实现

  Java不是完美的,Java的不除了体现在q行速度上要比传l的C++慢许多之外,Java无法直接讉K到操作系l底层(如系l硬件等)Qؓ(f)此Java使用nativeҎ(gu)来扩展JavaE序的功能?

  可以nativeҎ(gu)比作JavaE序同EE序的接口,其实现步骤:(x)

  Q、在Java中声明native()Ҏ(gu)Q然后编译;
  Q、用javah产生一?h文gQ?
  Q、写一?cpp文g实现native导出Ҏ(gu)Q其中需要包含第二步产生?h文gQ注意其中又包含了JDK带的jni.h文gQ;
  Q、将W三步的.cpp文g~译成动态链接库文gQ?
  Q、在Java中用System.loadLibrary()Ҏ(gu)加蝲W四步生的动态链接库文gQ这个native()Ҏ(gu)可以在Java中被讉K了?

  上述所提及(qing)的一些Java技术具有一定的普遍性,它们基本上是在Java各个斚w的运用中都需要掌握的术。实际上Java的运用非常广泛,而且每个斚w都需要遵循不同的规范。以下是对Java应用的简要介l?

Q一Q理解Java SDK的三个版本:(x)

Java SDK Micro Edition (J2ME)

用于开发掌上电(sh)脑、手机等Ud通信讑֤上用的应用E序。ƈ不是所有的Ud讑֤都支持JavaQ只有具备J2MEq行环境QJVM+J2ME API)的设备才能运行JavaE序。J2ME的集成开发工P通常都有带有一些访真器Q有 Sun 的J2ME Wireless Toolkit 、IBM的Visul Age Micro Edition {?

Java SDK Standard EditionQJ2SE)

主要用于开发一般台式机应用E序。我们^时所说的JDK指J2SEQ而我们学Java是从学?fn)J2SE开始的?

Java SDK Enterprise Edition (J2EE)

用于开发分布式的企业大型应用E序。其中的核心是Entetprise Java BeansQEJBQ分布式JavalgQ的开发?

Q二QJava程?QApplet)

Java 程序是一个承了Appletcdƈ重写了init()、paint()、stop(){方法的的Javac,它被布v在Web服务器(如IISQ上Q当客户端请求Web|Q浏览器从Web服务器上其下蝲到本地客L(fng)Q然后,览器创Appletcȝ实例q调用其init()Ҏ(gu)Q从安全角度考虑QApplet没有讉K本地文g的权限。由于Applet是被览器执行的Q所以Applet不需要一个main()Ҏ(gu)。实际上Q除了Java Application之外Q所有其它Java应用都不需要一个main()Ҏ(gu)?

Q三Q服务器端Java程?QServletQ?

Servlet 也是一个Javac,和Applet形成Ҏ(gu)QServlet是运行于服务器端的Java程序,而且Servlet需要一个单独的Web服务器(?TomcatQ做容器。除此之外,Servlet中用到的一些类Q如HttpServlet)q不包含在J2SE API中,所以需要将Servlet.jarQ在Tomcat的common\lib文g夹下Q加到环境变量中厅R下面是一个简单的Servlet例子Q?

public class Myservlet extends HttpServlet{

??public void doGet(HttpServletRequest request,HttpServletResponse response)
{
??try{
response.setContentType("text/html";
PrintWriter out=response.getWriter();
out.println("");
out.println("");
out.println("Hello world");
out.println("");
out.println("");
??}catch(IOException e){}
}
}

这个Class文g~译后放至Tomcat\webapps\examples\WEB-INF\classes下,然后在浏览器地址栏里输入http: //127.0.0.1:8080/examples/servlet/Myservlet卛_看到 Hello world出现在浏览器中?

Q四QJava Server Page QJSPQ?

同Servlet 怼的是QJSPq行于Web服务器端Qƈ且也需要Tomcat之类的容器。不同的是,׃JSP是将Java代码嵌在html标记里(同ASP一L(fng) <% ...%>)QJSP的界面设计同后台开发h员的工作可以有效分离。可以想像让开发h员用Servlet写一个花捎的Web面有多困难Q所?JSP+Servlet混合Web应用是比较理想的选择?

看v来JSP同ASP的实现机制大同小异,其实也存在着本质的区别。所有的 ASP面都是解释q行的,而JSP在W一ơ被h时会(x)被编译,再以后的客户h都是直接q行服务器上?class文gQ在Tomcat的Work文g夹下Q,所以JSP要比ASP速度上快许多?

Q五QJava Beans

Java Bean 是可复用的组Ӟ对Java Beanq没有严格的规范Q理ZԌM一个Javac都可以是一个Bean。但通常情况下,׃Java Bean是被容器所创徏Q如Tomcat)的,所以Java Bean应具有一个无参的构造器Q另外,通常Java Beanq要实现Serializable接口用于实现Bean的持久性?

Q六QEnterprise Java Beans QEJBQ?

Java Bean实际上相当于微YCOM模型中的本地q程内COMlgQ它是不能被跨进E访问的。Enterprise Java Bean 相当于DCOMQ即分布式组件。它是基于Java的远E方法调用(RMIQ技术的Q所以EJB可以被远E访问(跨进E、跨计算机)。但EJB必须被布|在诸如Webspere、WebLogicq样的容器中QEJB客户从不直接讉K真正的EJBlgQ而是通过其容器访问。EJB容器是EJBlg的代理, EJBlg由容器所创徏和管理。客户通过容器来访问真正的EJBlg?

q种模型很像COM+理器,其实EJB容器正是起到COM+理器的作用Q只是EJBlg相对COMlg来说更易用、更安全?

ȝ说来QJava作ؓ(f)面象对象技术的一个代表,在当今商业应用中更容易开发出高效的、多层的分布式应用程序,而且Q由于Java技术有很强的健壮性和易用性,加上同UML应用的结合,开发一个商业应用Y件的周期?x)大大羃短,所以Java?x)有不错的前景?
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

张江宁的个h博客 2007-01-16 10:10 发表评论
]]>
(转蝲)Tomcat+JSPl典配置实例http://www.aygfsteel.com/lijiezjn/articles/94126.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:07:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94126.html
  l常看到jsp的初学者问tomcat下如何配|jsp、servlet和bean的问题,于是ȝ了一下如何tomcat下配|jsp、servlet和benQ希望对那些初学者有所帮助?br />  
  一、开发环境配|?/b>
  
  W一步:(x)下蝲j2sdk和tomcatQ到sun官方站(http://java.sun.com/j2se/1.5.0/download.jspQ下载j(lu)2sdkQ注意下载版本ؓ(f)Windows Offline Installation的SDKQ同时最好下载J2SE 1.5.0 DocumentationQ然后到tomcat官方站点Qhttp: //jakarta.apache.org/site/downloads/downloads_tomcat-5.cgiQ下载tomcatQ下载最?5.5.9版本的tomcatQ;
  
  W二步:(x)安装和配|你的j2sdk和tomcatQ执行j2sdk和tomcat的安装程序,然后按默认设|进行安装即可?br />  
  1.安装j2sdk以后Q需要配|一下环境变量,在我的电(sh)?>属?>高->环境变量->pȝ变量中添加以下环境变?假定你的j2sdk安装在c:\j2sdk1.5.0Q:(x)
  
  JAVA_HOME=c:\j2sdk1.5.0
  classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;Q?;一定不能少Q因为它代表当前路径)
  path=%JAVA_HOME%\bin
  
  接着可以写一个简单的javaE序来测试J2SDK是否已安装成功:(x)
  
  public class Test{
  public static void main(String args[]){
  System.out.println("This is a test program.");
  }
  }
  
  上面的q段E序保存为文件名为Test.java的文件?br />  
  然后打开命o(h)提示W窗口,cdC的Test.java所在目录,然后键入下面的命?br />  
  javac Test.java
  java Test
  
  此时如果看到打印出来This is a test program.的话说明安装成功了,如果没有打印句话Q你需要仔l检查一下你的配|情c(din)?br />  
  2.安装Tomcat后,在我的电(sh)?>属?>高->环境变量->pȝ变量中添加以下环境变?假定你的tomcat安装在c:\tomcat)Q?br />  
  CATALINA_HOME=c:\tomcat
  CATALINA_BASE=c:\tomcat
  
  然后修改环境变量中的classpathQ把tomat安装目录下的common\lib下的(可以Ҏ(gu)实际q加)servlet.jarq加到classpath中去Q修改后的classpath如下Q?br />  
  classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
  
  接着可以启动tomcatQ在IE中访问http://localhost:8080Q如果看到tomcat的欢q页面的话说明安装成功了?br />  
  W三步:(x)建立自己的jsp app目录
  
  1.到Tomcat的安装目录的webapps目录Q可以看到ROOTQexamples, tomcat-docs之类Tomcat自带的的目录Q?br />  2.在webapps目录下新Z个目录,起名叫myappQ?br />  3.myapp下新Z个目录WEB-INFQ注意,目录名称是区分大写的;
  4.WEB-INF下新Z个文件web.xmlQ内容如下:(x)
  
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
  <web-app>
  <display-name>My Web Application</display-name>
  <description>
  A application for test.
  </description>
  </web-app>
  
  5.在myapp下新Z个测试的jsp面Q文件名为index.jspQ文件内容如下:(x)
  <html><body><center>
  Now time is: <%=new java.util.Date()%>
  </center></body></html>
  
  6.重启Tomcat
  
  7.打开览器,输入http://localhost:8080/myapp/index.jsp 看到当前旉的话说明成功了?br />  
  W四步:(x)建立自己的ServletQ?br />  
  1.用你最熟?zhn)的编辑器Q徏议用有语法(g)查的java ideQ新Z个servletE序Q文件名为Test.javaQ文件内容如下:(x)
  
  package test;
  import java.io.IOException;
  import java.io.PrintWriter;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServlet;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;
  public class Test extends HttpServlet {
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
  PrintWriter out=response.getWriter();
  out.println("<html><body><h1>This is a servlet test.</h1></body></html>");
  out.flush();
  }
  }
  
  2 .~译
  Test.java攑֜c:\test下,使用如下命o(h)~译Q?br />  
  C:\Test>javac Test.java
  
  然后在c:\Test下会(x)产生一个编译后的servlet文gQTest.class
  
  3 .结构test\Test.class剪切?CATALINA_HOME%\webapps\myapp\WEB-INF\classes下,也就是剪切那个test目录到classes目录下,如果classes目录不存在,新Z个。现在webapps\myapp\WEB-INF\classes下有test\Test.class的文件目录结?br />  
  4 .修改webapps\myapp\WEB-INF\web.xmlQ添加servlet和servlet-mapping
  
  ~辑后的web.xml如下所C,U色为添加的内容:
  
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
  <web-app>
  <display-name>My Web Application</display-name>
  <description>
  A application for test.
  </description>
  <servlet>
  <servlet-name>Test</servlet-name>
  <display-name>Test</display-name>
  <description>A test Servlet</description>
  <servlet-class>test.Test</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>Test</servlet-name>
  <url-pattern>/Test</url-pattern>
  </servlet-mapping>
  </web-app>
  
  q段话中的servletq一D声明了你要调用的ServletQ而servlet-mapping则是声明的servlet"映射"到地址/Test?br />  
  5 .好了Q重启动TomcatQ启动浏览器Q输入http://localhost:8080/myapp/Test 如果看到输出This is a servlet test.p明编写的servlet成功了?br />  
  注意Q修改了web.xml以及(qing)新加了classQ都要重启Tomcat
  
  W四步:(x)建立自己的BeanQ?br />  
  1.用你最熟?zhn)的编辑器Q徏议用有语法(g)查的java ideQ新Z个javaE序Q文件名为TestBean.javaQ文件内容如下:(x)
  
  package test;
  public class TestBean{
  private String name = null;
  public TestBean(String strName_p){
  this.name=strName_p;
  }
  public void setName(String strName_p){
  this.name=strName_p;
  }
  public String getName(){
  return this.name;
  }
  }
  
  2 .~译
  
  TestBean.java攑֜c:\test下,使用如下命o(h)~译Q?br />  
  C:\Test>javac TestBean.java
  
  然后在c:\Test下会(x)产生一个编译后的bean文gQTestBean.class
  
  3 .TestBean.class文g剪切?%CATALINA_HOME%\webapps\myapp\WEB-INF\classes\test下,
  
  4 .新徏一个TestBean.jsp文gQ文件内容ؓ(f)Q?br />  
  <%@ page import="test.TestBean" %>
  <html><body><center>
  <%
  TestBean testBean=new TestBean("This is a test java bean.");
  %>
  Java bean name is: <%=testBean.getName()%>
  </center></body></html>
  
  5 .好了Q重启TomcatQ启动浏览器Q输入http://localhost:8080/myapp/TestBean.jsp 如果看到输出Java bean name is: This is a test java bean.p明编写的Bean成功了?br />  
  q样完成了整个Tomcat下的jsp、servlet和javabean的配|。接下来需要做的事情就是多看书、多d人的好代码,自己多动手写代码以增己在q方面开发的能力了?br />  
  jvm应填写到
  c:\j2sdk\bin
  
  l你一个简单的配置Q:(x)Q:(x)
  
  JSP环境配置心得
  
  首先要说的是Q用jdk+tomcat完全可以配置我们的jsp服务器,不再需要其实Q何东东,有很多文章介l了ApacheQ其实根本用不着Q一般的学习(fn)调试tomcat完全可以胜Q了?br />  
  安装jdk后,tomcat在安装之前会(x)自动扑ֈjdk的安装\径,一路点?下一?Q经q一D|间的文g复制Q最?close"Q完成comcat的安装?br />  
  (zhn)最好去下蝲一个版本较高的tomcatQ比?.1以上的,因ؓ(f)它不需要设|太多的pȝ变量Q右?我的?sh)?Q选择"属?->"高"- >"环境变量"->"pȝ变量"Q新Z个TOMCAT_HOMEQD|成你的tomcat所在的路径Q比如:(x)D:\Program Files\Apache Group\Tomcat 5.5Q配|完成?br />  
  从开始菜单中扑ֈtomcat选项Q一般打开序是:(x)开?>E序->Apache Tomcat 5.5Q选择"Start Tomcat"Q让jsp服务器开始运行,此时?x)打开一个类似Dos的窗口,?x)显CZ些相关的信息?
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

]]>
(转蝲)Java学习(fn)之\Q不走弯路,是捷径http://www.aygfsteel.com/lijiezjn/articles/94125.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 02:06:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94125.html

0Q引a

在ChinaITLAB导师制辅gQ笔者发现问得最多的问题莫过?如何学习(fn)~程QJava该如何学?fn)?。类似的问题回答多了Q难免会(x)感觉厌烦(ch)Q就萌生了写下本文的x。到时候再有h问vcM的问题,我可以告诉他Q她Q,请你ȝ看《Java学习(fn)之\》。拜读过台湾蔡学镛先生的《Java夜未眠》,有些文章如《Java学习(fn)之道》等让我们确实有共鸣Q本文题目也由此而来?

软g开发之路是充满荆棘与挑战之?也是充满希望之\?Java学习(fn)也是如此Q没有捷径可走。梦惛_《天龙八部》中虚竹一栯无崖子醍醐灌而轻松获得一甲子功力Q是很不现实的。每天Ԓ天大?天神啊,误l我一本葵花宝典吧"Q殊不知即你获得了葵花宝典Q除了受自宫其n之苦外,你也不一定成得了"东方不|"Q倒是?西方p|"的几率高一炏V?

"不走弯\Q就是捷?Q佛(jng)l说的不无道理?

1Q如何学?fn)程序设计?

Java是一U^収ͼ也是一U程序设计语aQ如何学好程序设计不仅仅适用于JavaQ对C++{其他程序设计语a也一L(fng)用。有~程高手认ؓ(f)QJava也好C也好没什么分别,拿来q。ؓ(f)什么他们能辑ֈ如此境界Q我x因ؓ(f)~程语言之间有共通之处,领会(x)了编E的_NQ自然能够做C通百通。如何学?fn)程序设计理所当然也有许多共通的地方?

1.1 培养兴趣

兴趣是能够让你坚持下ȝ动力。如果只是把写程序作生的手段的话Q你?x)活的很累,也太对不赯׃。多兛_一些行业趣事,多想想盖茨。不是提倡天天做白日梦,但h要是没有了梦惻I你觉得有味道吗?可能像许多深x地农民一P打打dQ喝喝功夫茶Q拜拜胦(ch)爷Q每个月有几万十几万甚x多的q帐Q凭I多Z"食利阶层"。你认ؓ(f)Q这h味道吗?有空多到一些程序员论坛转{Q你?x)发玎ͼ他们其实很乐观幽默,时不时?x)冒出智慧的火花?

1.2 慎选程序设计语a

h入错行Q女怕嫁错郎。初学者选择E序设计语言需要}慎对待。Y件开发不仅仅是掌握一门编E语a了事Q它q需要其他很多方面的背景知识。Y件开发也不仅仅局限于某几个领域,而是已经渗透到了各行各业几乎每一个角落?

如果你对g比较感兴,你可以学?fn)C语言/汇编语言Q进入硬件开发领域。如果你对电(sh)信的行业知识?qing)网l比较熟(zhn),你可以在C/C++{之上多花时_(d)以期q入?sh)信软g开发领域。如果你Ҏ(gu)作系l比较熟(zhn),你可以学?fn)C/Linux{等,为Linux内核开?驱动E序开?嵌入式开发打基础?

如果你想介入到应用范围最q泛的应用Y件开发(包括?sh)子商务电(sh)子政务pȝQ的话,你可以选择J2EE?NETQ甚至LAMPl合。每个领域要求的背景知识不一栗做应用软g需要对数据库等很熟(zhn)。MQ你需要根据自q特点来选择合适你的编E语a?

1.3 要脚t实?快餐式的学习(fn)不可?

先分享一个故事?

有一个小朋友Q他很喜Ƣ研I生物学Q很想知道那些蝴蝶如何从蛹壳里出来,变成蝴蝶便会(x)飞。有一ơ,他走到草原上面看见一个蛹Q便取了回家Q然后看着Q过了几天以后,q个蛹出了一条裂痕,看见里面的蝴蝶开始挣扎,x破蛹壳飞出来。这个过E达数小时之久,蝴蝶在蛹里面很辛苦地拼命挣扎Q怎么也没法子走出来。这个小孩看着看着不忍心,想不如让我帮帮它吧Q便随手拿v剪刀在蛹上剪开Q蝴蝶破蛹而出。但蝴蝶出来以后Q因为翅膀不够力,变得很臃肿,飞不h?

q个故事l我们的启示是:(x)Ʋ速则不达?

躁是现代h最普遍的心态,能怪谁Q也许是贫穷落后了这么多q的~故Q就像当q的大跃q一P都想大步跨入׃MC会(x)。现在的软g公司、客戗政府、学校、培训机构等{到处I漫着躁之气。就拿笔者比较熟(zhn)的深圳IT培训行业来说吧,居然有的打广告宣U?参加培训Q?00%׃"Q居然报名的学生不少Q简直是藐视天下E序员。社?x)环境如是,我们不能改变Q只能改变自?闹市中的安宁QI珍c(din)许多初学者C++/Java没开始学Q立马?VC/JBuilder,?x)用VC/JBuilder开发一个Hello WorldE序Q就忙不q的向世界宣告,"我会(x)软g开发了"Q简历上也大a不惭地写?_NVC/Java"。结果到软g公司面试时要么被三两下打发走了,要么被驳的体无完肤,无地自容。到处碰壁之后才知道捧v《C++~程思想》《Java~程思想》仔l钻研,早知如此何必当初呀?

"你现在讲I简单方便,你以后的路就长了"Q好象也是佛(jng)l中的劝戒?

1.4 多实?快实?

彭端淑的《ؓ(f)学一首示子侄》中有穷和尚与富和尚的故事?

从前Q四川边境有两个和尚Q一个IP一个有钱。一天,I和对富和说Q?我打去南v朝圣Q你看怎么P"富和说Q?q里dh几千里远Q你靠什么去呢?"I和说Q?我只要一个水钵,一个饭就够了?富和ؓ(f)隑֜_(d)(x)"几年前我打买条船dP可至今没LQ你q是别去吧! " 一q以后,富和还在ؓ(f)U赁船只{wQ穷和尚却已l从南v朝圣回来了?

q个故事可解Mؓ(f)QQ何事情,一旦考虑好了Q就要马上上路,不要{到准备周全之后Q再d事情。假如事情准备考虑周全了再上\的话Q别人恐怕捷_M。Y件开发是一门工E学U,注重的就是实践,"君子动口不动?对Y件开发h员来讲根本就是错误的Q他们提?动手至上"Q但别害怕,他们大多温文?dng)雅Q没有暴力們֐Q虽然有时候蓬头垢面的一?比尔盖茨"栗有前辈高h认ؓ(f)Q学?fn)编E的U诀是:(x)~程、编E、再~程Q笔者深表赞同。不仅要多实践,而且要快实践。我们在看书的时候,不要{到你完全理解了才动手敲代码Q而是应该在看书的同时敲代码,E序q行的各U情况可以让你更快更牢固的掌握知识点?

1.5 多参考程序代?

E序代码是Y件开发最重要的成果之一Q其中渗透了E序员的思想与灵。许多h被《仙剑奇侠传》中凄美的爱情故事感?(zhn)剧的结局更有一U缺憄。ؓ(f)什么要以?zhn)剧结?据说是因为写《仙剑奇侠传》的E序员失恋而安排了q样的结局Q他把自q感觉融入到游戏中Q却让众多的仙剑qh腕叹息?

多多参考代码例子,对Java而言有参考文献[4.3],有APIcȝ源代?JDK安装目录下的src.zip文g)Q也可以研究一些开源的软g或框架?

1.6 加强英文阅读能力

对学?fn)编E来_(d)不要求英? 但不能一点不?。最L(fng)像Java API文档(参考文献[4.4])q些东西q是要能看懂?q猜带懵都可以;旁边再开启一?金山词霸"。看多了׃(x)来熟l。在学Java的同时学?fn)英文,一双雕多好。另外好多Y仉要到英文|站下蝲Q你要能够找到它们,q些是最基本的要求。英语好对你学习(fn)有很大的帮助。口语好的话更有Z(x)q入理层,q而可以成为剥削程序员?周扒??

1.7 万不得已才请教别?

W者在ChinaITLab|校的在U辅导系l中解决学生问题时发玎ͼ大部分的问题学生E做思考就可以解决。请教别Z前,你应该先回答如下几个问题?

你是否在google中搜索了问题的解军_法?

你是否查看了Java API文档Q?

你是否查找过相关书籍Q?

你是否写代码试q?

如果回答都是"?的话Q而且q没有找到解军_法,再问别h不迟。要知道独立思考的能力对你很重要。要知道E序员的旉是很宝贵的?

1.8 多读好书

书中自有颜如玉。比?盖茨是一个饱ȝ书的人。虽然没有读完大学,但九(ji)岁的时候比?盖茨已l读完了所有的癄全书Q所以他_N天文、历双Ӏ地理等{各cdU,可以说比?盖茨不仅是当今世界上金钱的首富,而且也可以称得上是知识的巨富?

W者在l学生上评时候经怼(x)l他们推荐书c,到后来学生实在忍无可忍开始抱怨,"天呐Q这么多书到什么时候才能看完了"Q?学Y件开发,感觉上了D "。这时候,我的回答一般是Q?别着急,什么时候带你们ȝ看我的书房,到现在每月花在技术书c上的钱400元,q在软g开发h员之中还只能够算是中{的 "Q学生当场晕倒。(注:(x)q一部分学生是刚学Y件开发的Q?

对于在Java开发领域的好书在笔者另外一文章中?x)专门点评。该文章可作为本文的姊妹?

1.9 使用合适的工具

工欲善其事必先利其器。Y件开发包含各U各L(fng)zdQ需求收集分析、徏立用例模型、徏立分析设计模型、编E实现、调试程序、自动化试、持l集成等{,没有工具帮忙可以说是寸步难行。工具可以提高开发效率,使Y件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤h的境界就很高了,无招胜有招,手中无剑心中有剑q样的境界几乎不可企?qing)。在W者另外一文章中?x)专门阐q如何选择合适的工具Q该文章也可作ؓ(f)本文的姊妹篇Q?

2QY件开发学?fn)\U?

两千多年的儒家思想孔孟之道Q中庸的思想透入骨髓Q既不冒q也不保守ƈ非中怹道,而是扑֯学习(fn)软g开发的正确路线与规律?

从Y件开发h员的生(dng)规划来讲Q我们可以大致分Z个阶D,软g工程师→软g设计师→架构设计师或目理师。不惛_元帅的士兵不是好士兵Q不惛_架构设计师或目理师的E序员也不是好的E序员。我们应该努力往上走。让我们先整理一下开发应用Y仉要学?fn)的主要技术?

AQ基理论知识Q如操作pȝ、编译原理、数据结构与法、计机原理{,它们q不重要。如不想成ؓ(f)计算机科学家的话Q可以采?用到的时候再来学"的原则?

BQ一门编E语aQ现在基本上都是面向对象的语aQJava/C++/C#{等。如果做WEB开发的话还要学?fn)HTML/JavaScript{等?

CQ一U方法学或者说思想Q现在基本都是面向对象思想QOOA/OOD/设计模式Q。由此而衍生的Zlg开发CBD/面向斚w~程AOP{等?

DQ一U关pd数据库,ORACLE/SqlServer/DB2/MySQL{等

EQ一U提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET{?

FQ一UUML建模工具Q用ROSE/VISIO/钢笔q行建模?

GQ一UY件过E,RUP/XP/CMM{等Q通过软gq程来组lY件开发的众多zdQ开发流E专业化规范化。当然还有其他的一些Y件工E知识?

HQ项目管理、体pȝ构、框架知识?

正确的\U应该是QB→C→E→F→G→H?

q需要补充几点:(x)

1Q.对于A与C要补充的是,我们应该在实践中逐步领?zhn)~程理论与编E思想。新技术虽然不断涌玎ͼ更新速度令hD燎ؕN看花Q但万变不离其宗Q编E理Z~程思想的变化却很慢。掌握了~程理论与编E思想你就?x)有拨云见日之感。面向对象的思想在目前来讲是相当关键的,是强势技术之一Q在上面需要多投入旉Q给你的回报也会(x)让你惊喜?

2Q.对于数据库来说是独立学习(fn)的,q个时机q你来军_吧?

3Q.~程语言作ؓ(f)学习(fn)软g开发的ȝQ而其余的作ؓ(f)辅线?

4Q.软g工程师着重于B、C、E、DQY件设计师着重于B、C、E、D、FQ架构设计师着重于C、F、H?

3Q如何学?fn)Java?

3.1 Java学习(fn)路线

3.1.1 基础语法?qing)Java原理

基础语法和Java原理是地基,地基不牢靠,犹如沙地上徏摩天大厦Q是相当危险的。学?fn)Java也是如此Q必要有扎实的基础Q你才能?J2EE?J2ME领域游刃有余。参加SCJPQSUN公司认证的JavaE序员)考试不失Z个好Ҏ(gu)Q原因之一是ؓ(f)了对得v你交?200大洋考试费,你会(x)更努力学?fn),原因之二是SCJP考试能够让你把基打得很牢靠,它要求你跟JDK一L(fng)(zhn)Java基础知识Q但是你千万不要认ؓ(f)考过了SCJP有多了不vQ就能够获得软g公司的青睐,p够获取高薪,q样的想法也是很危险的。获?真正"的SCJP只能证明你的基础q过得去Q但d际开发还有很长的一D\要走?

3.1.2 OO思想的领(zhn)?

掌握了基语法和JavaE序q行原理后,我们可以用Java语言实现面向对象的思想了。面向对象,是一U方法学;是独立于语言之外的编E思想;是CBDZlg开发的基础;属于强势技术之一。当以后因工作需要{到别的面向对象语a的时候,你会(x)感到特别的熟(zhn)亲切,学v来像喝凉水这么简单?

使用面向对象的思想q行开发的基本q程是:(x)

●调查收集需求?

●徏立用例模型?

●从用例模型中识别分析类?qing)类与类之间的静态动态关p,从而徏立分析模型?

●细化分析模型到设计模型?

●用具体的技术去实现?

●测试、部|Ӏȝ?

3.1.3 基本API的学?

q行软g开发的时候,q不是什么功能都需要我们去实现Q也是l典名言所说的"不需要重新发明轮?。我们可以利用现成的cR组件、框架来搭徏我们的应用,如SUN公司~写好了众多cdC些底层功能,以及(qing)我们下蝲q来的JAR文g中包含的c?我们可以调用cM的方法来完成某些功能或承它。那么这些类中究竟提供了哪些Ҏ(gu)l我们用?Ҏ(gu)的参C数及(qing)cd是?cȝ构造器需不需要参敎ͼM可能SUN公司的工E师打国际长途甚至飘?gu)z过h告诉你他~写的类该如何用吧。他们只能提供文档给我们查看QJava DOC文档Q参考文?.4Q就是这L(fng)文档Q它可以说是E序员与E序员交的文档?

基本API指的是实C一些底层功能的c,通用性较强的APIQ如字符串处?输入输出{等。我们又把它成ؓ(f)cd。熟(zhn)API的方法一是多查Java DOC文档Q参考文?.4Q,二是使用JBuilder/Eclipse{IDE的代码提C功能?

3.1.4 特定API的学?

Java介入的领域很q泛Q不同的领域有不同的APIQ没有h熟?zhn)所有的APIQ对一般h而言只是熟?zhn)工作中要用到的API。如果你做界面开发,那么你需要学?fn)Swing/AWT/SWT{APIQ如果你q行|络游戏开发,你需要深入了解网lAPI/多媒体API/2D3D{;如果你做 WEB开发,需要熟(zhn)Servlet{API啦。MQ需要根据工作的需要或你的兴趣发展方向去选择学习(fn)特定的API?

3.1.5 开发工L(fng)用法

在学?fn)基语法与基本的面向对象概念Ӟ从锻Da熟练E度的角度考虑Q我们推荐用的工具?Editplus/JCreator+JDK,q时候不要急于上手JBuilder/Eclipse{集成开发环境,以免q于xIDE的强大功能而分散对Java技术本w的注意力。过了这一阶段你就可以开始熟(zhn)IDE了?

E序员日常工作包括很多活动,~辑、编译及(qing)构徏、调试、单元测试、版本控制、维持模型与代码同步、文档的更新{等Q几乎每一Ҏ(gu)动都有专门的工具Q如果独立用这些工L(fng)话,你将?x)很痛苦Q你需要在堆满工具的Q务栏上不断的切换Q效率很低下Q也很容易出错。在JBuilder?Eclipse{IDE中已l自动集成编辑器、编译器、调试器、单元测试工?JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等{,甚至可以把UML建模工具也集成进去,又提供了丰富的向导帮助生成框架代码,让我们的开发变得更L。应该说IDE发展的趋势就是集成Y件开发中要用到的几乎所有工兗?

从开发效率的角度考虑Q用IDE是必l之路,也是从一个学生到一个职业程序员转变的里E碑?

Java开发用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans{几U;而Eclipse?JBuilder占有的市Z额是最大的。JBuilder在近几年来一直是Java集成开发环境中的霸主,它是由备受程序员敬的Borland公司开发,在硝烟I漫的Java IDE大战?以其快速的版本更新击|IBM的Visual Age for Java{而成׃番伟业。IBM在Visual Age for Java上已l无利可图之下,q脆之贡献l开源社区,成ؓ(f)Eclipse的前w,真所?x花明又一?。ʎ火重生的Eclipse以其开攑ּ的插件扩展机制、免费开源获得广大程序员Q包括几乎所有的骨灰U程序员Q的青睐Q极具发展潜力?

3.1.6 学习(fn)软g工程

对小型项目而言Q你可能认ؓ(f)软g工程没太大的必要。随着目的复杂性越来越高,软g工程的必要性才?x)体现出来。参?软g开发学?fn)\U?节?

3.2学习(fn)要点

立的学?fn)\U之后,我们q需要ȝ一下Java的学?fn)要点,q些要点在前文多多少提到过Q只是笔者觉得这些地方特别要注意才对它们q行汇总,不要嫌我婆婆妈妈啊?

3.2.1勤查API文档

当程序员~写好某些类Q觉得很有成感,x它A(ch)献给各位苦难的同行。这时候你要?Javadoc"工具Q包含在JDK中)生成标准?Java DOC文档,供同行用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工P几乎人手一份,除了菜鸟之外。J2SE DOC文档官方下蝲地址Qhttp://Java.sun.com/j2se/1.5.0/download.jspQ你可以到google搜烦(ch)CHM版本下蝲。也可以在线查看Qhttp://Java.sun.com/j2se/1.5.0/docs/api/index.html?

对待DOC文档要像毛主席语录,早上起床念一遍,吃饭睡觉前念一遍?

当需要某功能的时候,你应该先查相应的DOC文档看看有没有现成的实现Q有的话׃必劳费心了直接用就可以了,找不到的时候才考虑自己实现。用步骤一般如下:(x)

●找特定的包Q包一般根据功能组l?

●找需要用类Q类命名规范的话我们q的名字可猜出一二?

●选择构造器Q大多数使用cȝ方式是创建对象?

●选择你需要的Ҏ(gu)?

3.2.2 查书/google->写代码测?>查看源代?>h别h

当我们遇到问题的时候该如何解决Q?

q时候不要急着问别人,太简单的问题Q没l过思考的问题Q别Z(x)因此而瞧不v你。可以先找找书,到google中搜一下看看,l大部分问题基本p决了。而像"某些c?Ҏ(gu)如何使用的问?QDOC文档是{案。对某些知识Ҏ(gu)疑惑是,写代码测试一下,?x)给你留下深ȝ印象。而有的问题,你可能需要直接看API的源代码验证你的x。万不得已才去请教别人?

3.2.3学习(fn)开源Y件的设计思想

Java领域有许多源代码开攄工具、组件、框ӞJUnit、ANT、Tomcat?Struts、Spring、Jive论坛、PetStore宠物店等{多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归Q你心甘吗?对这些工兗框架进行分析,领会(x)其中的设计思想Q有朝一日说不定你也能写一个XXX框架什么的Q风光一把。分析开源Y件其实是你提高技术、提高实战能力的便捷Ҏ(gu)?

3.2.4 规范的重要?

没有规矩Q不成方圆。这里的规范有两层含义。第一层含义是技术规范,多到 http://www.jcp.org下蝲JSRXXX规范Q多读规范,q是最权威准确最新的教材。第二层含义是编E规范,如果你用了大量的独特算法,富有个性的变量?qing)方法的命名方式Q同Ӟ没给E序作注释,以显CZ的编E功底是多么的深厚。这L(fng)代码别h看v来像天书Q要理解谈何Ҏ(gu)Q更不用说维护了Q必然会(x)被无情地扫入垃圾堆。Java~码规范到此查看或下载http://Java.sun.com/docs/codeconv/Q中文的也有Q啊Q还要问我在哪,请参?.2.2节?

3.2.5 不局限于Java

很不q,很幸q,要学?fn)的东西q有很多。不q的是因学的东西太多且多变,没时间陪老婆家h或女朋友Q导致n心疲惫,严重者甚臛_致抑郁症。幸q的是别抢你饭碗l非易事Q他们或她们需要付出很多才能达成心ѝ?

Java不要孤立地去学习(fn)Q需要综合学?fn)数据结构、OOP、Y件工E、UML、网l编E、数据库技术等知识Q用横向U向的比较联想的方式d?fn)?x)更有效。如学习(fn)Java集合的时候找数据l构的书看看Q学JDBC的时候复?fn)数据库技术;采取的依然是"需要的时候再?的原则?

4Q结束语

需要强调的是,学习(fn)软g开发确实有一定的隑ֺQ也很辛苦,需要付出很多努力,但千万不要半途而废。本文如果能对一直徘徊在Java殿之外的朋友有所帮助的话Q笔者也ƣ慰了。哈哈,怎么听v来老气横秋呀Q没办法Q在?sh)脑的长期辐之下,都快变成老头了。最后奉劝各位程序员其是MME序员,完成工作后赶快远ȝ(sh)脑,据《胡播ؕ报》报道,?sh)脑辐射会(x)在白皙的皮肤上面点~一些小黑点Q看h鲜艳无比…?

(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

]]>
(转蝲)成ؓ(f)~程高手的八大奥U?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94120.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:04:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94120.html</guid><description><![CDATA[<div style="FONT-SIZE: 10.5pt"> <p>    教我的老师Q是一个编E专?W一看到他真的不能把他同专家联系在一P呵呵Q^常多跟他交流只后才发现老师q_的后面藏着许多我摸不透的东西Q!以下的文章虽然不是我自己ȝ出来的!但是我想q也每一个想成ؓ(f)~程好手的h所要具备的Q! </p> <p>1、扎实的基础 </p> <p>数据l构、离散数学、编译原理,q些是所有计机学科的基Q如果不掌握它们Q很隑ֆ出高水^的程序。程序h人都?x)写Q但当你发现写到一定程度很隑ֆ提高的时候,应该想x不是要回q头来学学这些最基本的理论。不要一开始就dOOPQ即使你再精通OOPQ遇C些基本算法的时候可能也?x)束手无{。因此多M些计机基础理论斚w的书c是非常有必要的?</p> <p>2、丰富的惛_?</p> <p>不要拘惔于固定的思维方式Q遇到问题的时候要多想几种解决问题的方案,试试别h从没惌的方法。丰富的惛_力是建立在丰富的知识的基上,除计机以外Q多涉猎其他的学U,比如天文、物理、数学等{。开阔的思维对程序员来说很重要?</p> <p>3、最单的是最好的 </p> <p>q也许是所有科学都遵@的一条准则,复杂的质能{换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式QE=mc2。简单的Ҏ(gu)更容易被人理解,更容易实玎ͼ也更Ҏ(gu)l护。遇到问题时要优先考虑最单的Ҏ(gu)Q只有简单方案不能满求时再考虑复杂的方案?</p> <p>4、不ȝ角尖 </p> <p>当你遇到障碍的时候,不妨暂时q离?sh)脑Q看看窗外的风景Q听听轻音乐Q和朋友聊聊天。当我遇到难题的时候会(x)ȝ游戏Q当负责游戏的那部分大脑l胞(yu)极度亢奋的时候,负责~程的那部分大脑l胞(yu)得C充分的休息。当重新开始工作的时候,我会(x)发现那些N现在竟然可以q刃而解?</p> <p>5、对{案的(f)?</p> <p>人类自然U学的发展史是一个(f)求得到答案的q程Q即使只能知道答案的一部分也值得我们M出。只要你坚定信念Q一定要扑ֈ问题的答案,你才?x)付出精力去探?ch)Q即使最后没有得到答案,在过E中你也?x)学到很多东ѝ?</p> <p>6、多与别Z?</p> <p>三h行必有我师,也许在一ơ和别h不经意的谈话中,可以迸出灵感的火花。多上上|,看看别h对同一问题的看法,?x)给你很大的启发?</p> <p>7、良好的~程风格 </p> <p>注意L良好的习(fn)惯,代码的羃q编排,变量的命名规则要始终保持一致。大安知道如何排除代码中错误,却往往忽视了对注释的排错。注释是E序的一个重要组成部分,它可以你的代码更容易理解,而如果代码已l清楚地表达了你的思想Q就不必再加注释了,如果注释和代码不一_(d)那就更加p糕?</p> <p>8、韧性和毅力 </p> <p>q也许是“高手”和一般程序员最大的区别。高手们q不是天才,他们是在无数个日日夜夜中炼出来的。成功能l我们带来无比的喜?zhn)Q但q程却是无比的枯燥乏呟뀂你不妨做个试Q找?0000以内的素数表Q把它们全都抄下来,然后再检查三遍,如果能够不间断地完成q一工作Q你可以满一条?/p> </div><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94120.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:04 <a href="http://www.aygfsteel.com/lijiezjn/articles/94120.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(?菜鸟初学Java的备忘录之第一ơ接?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94118.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 02:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94118.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt">  虽然以前间或的也看了些书c,但多是隔靴搔痒,上不了正席,l不敢说自己懂Java。接触一门新的技术和初恋一P都是W一ơ,但不同的是后者一般开始无比甜蜜,l局却很痛苦Q而前者则往往开始很痛苦Q越到后来却是有味Q简直是ƲŞ不能.现在我就正处于这个很痛苦的阶D,q一个最单的 Helloworld都运行不出来QL提示Excepion in thread "main" java.lan.NoClassDefFoundError. 只好上网LQ去?记性又不好Q所以搜出来赶紧保存下来Q常备无(zhn)?br /><br />  一般来说安装完<a class="bluekey" target="_blank">JDK</a>之后Q一定要按一下步骤配|,才可正确~译q行(假定jdk版本?.4.0)?br /><br />  1.jdk1.4.0-安装在自己机器的某个盘符的根目录下,如:(x)可安装在C:\jdk下?br /><br />  ***(以下出现的c:\jdk改ؓ(f)你自己安装JDK的目?***<br /><br />  2.如果你的q行环境是win98Q则在C盘根目录下,autoexec.bat文g中,加入下面两条语句Q?br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>set Path=%PATH%;c:\jdk\bin<br />set CLASSPATH=.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar保存后,重新启动机器Q就完成了jdk1.4的安装?/td></tr></tbody></table><br />  3.如果你的q行环境是win2000的话Q则需在“控刉李쀝的“系l”下Q“高U”选项的“环境变量”中Q添加两个用户变量?br /><br />  其中一个用户变量的名称为“path”,gؓ(f)?;d:\j2sdk1.4.0_01\bin”,另一个用户变量的名称?CLASSPATH"Qgؓ(f) ?;d"\j2sdk1.4.0_01\lib\dt.jar;d:\j2sdk1.4.0_01\lib\tools.jar”,单击“确定”即可。即完成了jdk1.4.0的安装?br /><br />  至于q样做的意义何在Q我惛_该是让Javapȝ在编译字节代?.java)的时候需要一个什么东东的支持Q如果你不告诉它q个东东攑֜哪个地方的话Q它?yu)qM?!<br /><br />  看到屏幕上终于显C出Hello worldҎ(gu)来说意义重大.q是我近一q来写的W一个程?再次t上E序之\Q简直有恍如隔世的感觉,已经快找不准我的位置了。还好原来学的一些关于C ++和面向对象的皮毛没忘光光Q所以费点周折熟(zhn)了JDK的环境之后,接下来的事情好办多了,心里也踏实多了?br /><br />  用Stringcȝ接定义字W串变量比vC中讨厌的<a class="bluekey" target="_blank">指针</a>Q感觉确实好的多Q用惯了Object Pascal的我Q如果再回去? *Q真要疯掉不可?br /><br />  <a class="bluekey" target="_blank">数组</a>的定义和CQC++好像略有不同Q记不清了,先记下来再说<br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>int[] number=new int[5]<br />String[] message=new String[5]</td></tr></tbody></table><br />  变量q一部分惌v来要交待的也p么多吧。虽然是菜鸟Q但我也知道QL如K强般在<a class="bluekey" target="_blank">语法</a>上面L的h直是白痴:大多数情况下Q漂亮的E序Ҏ(gu)不需要无谓的点缀Q工工整_(d)思\清晰可以了?br /><br />  倒是对于JavaE序的框架我倒想备忘一下,一个简单的javaE序好像是应该是q样的框Ӟ(x)<br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>class ProgramName<br />{<br /> <a class="bluekey" target="_blank">public</a> static void main(String【?args)<br /> {<br />  file&://E序的主?br /> }<br /><br /> public static int othermethod()<br /> {<br />  file&://其它Ҏ(gu)<br /> }<br />}</td></tr></tbody></table><br />  整个E序在一个大的类中,q个cȝ概念应该ppascal里面的单元差不多的。同pascal一P文g名也要与单元?在这里是cd-一?Java对大写要求的非怸|我语法错了好几次都是因ؓ(f)q个.<br /><br />  JavaE序是׃个或者多个或者很多个Ҏ(gu)在这样一个大cd中组成的.<br /><br />  在如上的代码中,定义Ҏ(gu)的参数表C的意思分别ؓ(f):<br /><br />  public表示此成员函数是公有的,可以被其他类直接调用 static表示main成员函数在ProgramNamecȝ所有对象中是唯一的,Javaؓ(f)其分配永久存储空?br /><br />  关于StaticQ我惛_延一下。有时候我们创Z个类Q希望这个类的所有实例都公用一个变量,也就是说Q所有这个类的对象都只有实例变量的一?Copy.那么q样一个静态实例变量的内存׃能在创徏cȝ实例的时候分配了Q因为大家用的都是这么一个,不需要再重新分配.因此Java为其分配怹存储I间?br /><br />  比如Q?br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>class Block{<br /> static int number=50<br />} </td></tr></tbody></table><br />  q样定义之后Q所有Blockcȝ实例Q不是Block1Q还是Block2Q它们都讉K同一个number.q个number叫做cȝ变量Q而不是实例变?实际上静态变量又叫做cd量?br /><br />  l箋深入Q用Static定义的静态成员函数或者静态变量,可以通过其所属类名来直接调用.Z么可以这?因ؓ(f)既然q个cȝ所有对象都是用的q一个变量,那么理所当然我不需要去从其中的M一个对象去引用它,而只是通过cd引用可以了?q样不是可以方便的实C些全局函数和全局变量?把所有全局的函数或者全局的变量都定义在一个静态类中,调用的时候直接通过q一个类名就可以方便的访问所有的全局变量和全局函数了?br /><br />  定义所有程序都要访问的全局变量需要?<br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>public final static</td></tr></tbody></table><br />  另外到一个初学者经怼(x)遇到的问?br /><br /><table bordercolor="#ffcc66" width="90%" align="center" bgcolor="#dadacf" border="1"><tbody><tr><td>non-static variable mainframe cannot be referenced from a static context </td></tr></tbody></table><br />  卛_静态方法中不能引用非静态变?br /><br />  Z么?<br /><br />  因ؓ(f)我们知道静态的Ҏ(gu)可以在没有创建实例时使用Q而申明ؓ(f)非静态的成员变量是一个对象属性,它只有在对象存在时引用,因此如果在对象未创徏实例时我们在静态方法中调用了非静态成员方法自然是非法的,所以编译器?x)在q种时候给各错?<br /><br />  单说来,静态方法可以不用创建对象就调用Q非静态方法必L了对象的实例才能调用.因此惛_静态方法中引用非静态方法是不可能的Q因为它I竟引用的是哪个对象的非静态方法呢?~译器不可能l出{案Q因为没有对象啊Q所以要报错.<br /><br />  最后我们看看Think in Java里面的精辟阐qͼq个问题我想非帔R常的清楚?br /><br />  static关键?br /><br />  通常Q我们创建类时会(x)指出那个cȝ对象的外观与行ؓ(f)。除非用new创徏那个cȝ一个对象,否则实际上ƈ未得CQ何东ѝ只有执行了new后,才会(x)正式生成数据存储I间Qƈ可用相应的Ҏ(gu)?br /><br />  但在两种Ҏ(gu)的情形下Q上q方法ƈ不堪用。一U情形是只想用一个存储区域来保存一个特定的数据——无创徏多少个对象,甚至Ҏ(gu)不创建对象。另一U情形是我们需要一个特D的Ҏ(gu)Q它没有与这个类的Q何对象关联。也是_(d)即没有创徏对象Q也需要一个能调用的方法。ؓ(f)满q两斚w的要求,可?staticQ静态)关键字。一旦将什么东西设为staticQ数据或Ҏ(gu)׃?x)同那个cȝM对象实例联系C赗所以尽从未创建那个类的一个对象,仍能调用一个staticҎ(gu)Q或讉K一些static数据。而在q之前,对于非static数据和方法,我们必须创徏一个对象,q用那个对象讉K数据或方法。这是由于非static数据和方法必ȝ道它们操作的具体对象。当?dng)在正式用前Q由于staticҎ(gu)不需要创ZQ何对象,所以它们不可简单地调用其他那些成员Q同时不引用一个已命名的对象,从而直接访问非static成员或方法(因ؓ(f)非static成员和方法必d一个特定的对象兌CP?br /><br />  WhoopsQ现在应该回Cq上来了<br /><br />  void 表示Ҏ(gu)q回的值的cd为空。如果返回特定的cd的话Q则该方法实际上是函数Q否则就是一个过E而已.<br /></div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 10:02 <a href="http://www.aygfsteel.com/lijiezjn/articles/94118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)真正的Java学习(fn)从入门到_N?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94113.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 01:54:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94113.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt">  <b>一?工具JDK (Java Development Kit)</b><br />  JDK是整个Java的核心,包括了Javaq行环境QJava Runtime EnvirnmentQ,一堆Java工具和Java基础的类?rt.jar)。不Z么Java应用服务器实质都是内|了某个版本的JDK。因此掌?JDK是学好Java的第一步。最L的JDK是Sun公司发布的JDKQ除了Sun之外Q还有很多公司和l织都开发了自己的JDKQ例如IBM公司开发的JDKQBEA公司的JrocketQ还有GNUl织开发的JDK{等。其中IBM的JDK包含的JVMQJava Virtual MachineQ运行效率要比Sun JDK包含的JVM高出许多。而专门运行在x86q_的Jrocket在服务端q行效率也要比Sun JDK好很多。但不管怎么_(d)我们q是需要先把Sun JDK掌握好?br />  <br />  1?JDK的下载和安装<br />  <br />  JDK 又叫做J2SEQJava2 SDK Standard EditionQ,可以从Sun的Java|站上下载到Qhttp://java.sun.com/j2se/downloads.html QJDK当前最新的版本是J2SDK1.4.2Q徏议下载该版本的JDKQ下载页面在q里Qhttp: //java.sun.com/j2se/1.4.2/download.html。下载好的JDK是一个可执行安装E序Q默认安装完毕后?x)在C:\ Program Files\Java\目录下安装一套JREQ供览器来使用Q,在C:\j2sdk1.4.2下安装一套JDKQ也包括一套JREQ。然后我们需要在环境变量PATH的最前面增加java的\径C:\j2sdk1.4.2\bin。这样JDK安装好了?br />  <br />  2?JDK的命令工?br />  <br />  JDK的最重要命o(h)行工P(x)<br />  <br />  javaQ?启动JVM执行class<br />  javacQ?Java~译?br />  jarQ?Java打包工具<br />  javadocQ?Java文档生成?br />  <br />  q些命o(h)行必要非常非常熟?zhn)Q对于每个参数都要很_N才行。对于这些命令的学习(fn)QJDK Documentation上有详细的文档?br />  <br />  <b>二?JDK Documentation</b><br />  Documentation在JDK的下载页面也有下载连接,同时下蝲Documentation。Documentation是最最重要的编E手册,늛了整个Java所有方面的内容的描q。可以这栯Q学?fn)Java~程Q大部分旉都是花在看这个Documentation上面的。我是随w携带的Q写Java代码的时候,随时查看Q须臾不L?br />  <br />  <b>三?应用服务?App Server)</b><br />  App Server是运行Java企业lg的^収ͼ构成了应用Y件的主要q行环境。当前主的App Server是BEA公司的Weblogic Server和IBM公司的Websphere以及(qing)免费的JbossQ选择其中一个进行学?fn)就可以了,个h推荐WeblogicQ因为它的体pȝ构更加干净Q开发和部v更加方便Q是Java企业软g开发h员首选的开发^台。下面简要介l几U常用的App ServerQ?br />  <br />  1?Tomcat<br />  <br />  Tomcat严格意义上ƈ不是一个真正的App ServerQ它只是一个可以支持运行Serlvet/JSP的Web容器Q不qTomcat也扩展了一些App Server的功能,如JNDIQ数据库q接池,用户事务处理{等。Tomcat被非常广泛的应用在中规模的Java Web应用中,因此本文做一点下载、安装和配置Tomcat的介l:(x)<br />  <br />  Tomcat是Apachel织下Jakarta目下的一个子目Q它的主|站是:(x)http://jakarta.apache.org/tomcat/ QTomcat最新版本是Tomcat4.1.27QY件下载的q接是:(x)http: //www.apache.org/dist/jakarta/tomcat-4/binaries/ ?br />  <br />  下蝲Tomcat既可以直接下载zip包,也可以下载exe安装包(个hzip更干净些)Q不哪U情况,下蝲完毕安装好以后(zip直接解压~就可以了)。需要设|两个环境变量:(x)<br />  <br />  JAVA_HOME=C:\j2sdk1.4.2<br />  CATALINA_HOME=D:\tomcat4 (你的Tomcat安装目录)<br />  <br />  q样安装好了,启动Tomcatq行CATALINA_HOME\bin\startup.batQ关闭Tomcatq行shutdown.bat脚本。Tomcat启动以后Q默认?080端口Q因此可以用览器访问http://localhost:8080来测试Tomcat是否正常启动?br />  <br />  Tomcat提供了两个Web界面的管理工PURL分别是:(x)<br />  <br />  http://localhost:8080/admin/index.jsp<br />  <br />  http://localhost:8080/manager/html<br />  <br />  在启用这两个理工具之前Q先需要手工配|一下管理员用户和口令。用一个文本工h开CATALINA_HOME\conf\tomcat-users.xmlq个文gQ加入如下几行:(x)<br />  <br />  <role rolename="manager"/><br />  <role rolename="admin"/><br />  <user username="robbin" password="12345678" roles="admin,manager,tomcat"/><br />  <br />  q样用户“robbin”就具备了超U管理员权限。重新启动Tomcat以后Q你可以用该用户来登陆如上的两个理工具Q通过Web方式q行Tomcat的配|和理了?br />  <br />  2?BEA Weblogic<br />  <br />  Weblogic可以到BEA的网站上免费注册之后下蝲到最新的Weblogic8.1企业版,License可以免费使用1q时_(d)其实q已l完全够了。Weblogic的下载连接:(x)http://commerce.bea.com/index.jspQ?../edocs.bea.com/ ?br />  <br />  3?IBM Webshpere<br />  <br />  Websphere同样可以下蝲到免费的试用版本Q到IBM的developerWorks|站可以看到Websphere试用产品的下载和相关?Websphere的资料,developerWorks中文|站的连接是Qhttp://www- 900.ibm.com/developerWorks/cn/wsdd/ QW(xu)ebsphere的下载连接:(x)http://www7b.software.ibm.com/wsdd/...WASsupport.html ?br />  <br />  4?Jboss<br />  <br />  Jboss是免费开源的App ServerQ可以免费的从Jboss|站下蝲Qhttp://www.jboss.org/index.htmlQ然...n.com/idea.html<br />  <br />  <b>四?Java应用的运行环?/b><br />  Java的应用可以简单分Z下几个方面:(x)<br />  <br />  1?Java的桌面应?br />  <br />  桌面应用一般仅仅需要JRE的支持就_了?br />  <br />  2?Java Web应用<br />  <br />  Java的Web应用臛_需要安装JDK和一个web容器Q例如TomcatQ,以及(qing)一个多用户数据库,W(xu)eb应用臛_分ؓ(f)三层Q?br />  <br />  Browser层:(x)览器显C用户页?br />  <br />  Web层:(x)q行Servlet/JSP<br />  <br />  DB层:(x)后端数据库,向JavaE序提供数据讉K服务<br />  <br />  3?Java企业U应?br />  <br />  企业U应用比较复杂,可以扩展到n层,最单情况会(x)分ؓ(f)4层:(x)<br />  <br />  Browser层:(x)览器显C用户页?br />  <br />  Client层:(x)Java客户端图形程序(或者嵌入式讑֤的程序)直接和W(xu)eb层或者EJB层交?br />  <br />  Web层:(x)q行Servlet/JSP<br />  <br />  EJB层:(x)q行EJBQ完成业务逻辑q算<br />  <br />  DB层:(x)后端数据库,向JavaE序提供数据讉K服务<br />  <br />  4?Java嵌入式应?br />  <br />  Java嵌入式应用是一个方兴未艄领域Q从事嵌入式开发,需要从Sun下蝲J2ME开发包QJ2ME包含了嵌入式讑֤专用虚拟机KVMQ和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下蝲模拟器?br />  <br />  <b>书籍?/b><br />  学习(fn)一门新的知识,不可能指望只看一本,或者两本书p够完全掌握。需要有一个@序渐q的阅读q程。我推荐Oreilly出版的Javapd书籍?br />  <br />  在这里我只想补充一点看法,很多人学?fn)Java是从《Thinking in Java》这本书入手的,但是我认本书是不适合初学者的。我认ؓ(f)正确的用这本书的方法应该是作ؓ(f)辅助的读物。《Thinking in Java》ƈ不是在完整的介绍Java的整个体p,而是一U蟩跃式的写作方法,是一U类似tips的方法来对Java很多知识点进行了深入的分析和解释?br />  <br />  对于初学者来_(d)最好是找一本Java入门的书c,但是比较完整的@序的介绍Java的语法,面向对象的特性,核心cd{等Q在看这本书的同Ӟ可以同步来看《Thinking in Java》,来加深对Java的理解和原理的运用,同时又可以完整的了解Java的整个体pR?br />  <br />  对于Java的入门书c,蔡学镛推荐的是Oreilly的《Exploring Java, 2nd Edition?或者《Java in a Nutshell,2nd EditionQ针对C++背景Q》,我ƈ没有看过q两本书。其实我觉得?sh)子工业出版C《Java 2~程详解》或者《Java 2从入门到_N》就很不错?br />  <br />  在所有的Java书籍当中Q其实最最有用的,q不是O'reilly?Java SerialsQ真正最最有用处是JDK的DocumentationQ几乎你惌得的所有的知识在Documentation里面全部都有Q其中最主要的部分当然是Java基础cd的API文档Q是按照package来组l的Q对于每一个class都有详细的解释,它的l承关系Q是否实C某个接口Q通常用在哪些场合Q还可以查到它所有的public的属性和Ҏ(gu)Q每个属性的解释Q意义,每个Ҏ(gu)的用途,调用的参敎ͼ参数的意义,q回值的cdQ以?qing)方法可能抛出的异常{等?br />  <br />  可以q样来说Q所有关于Java~程斚w的书c其实都不过是在用比较通俗易懂的语aQ和良好的组l方式来介绍Documentation里面的某个package里面包含的一些类的用法而已。所以万变不d宗,如果你有_的能力来直接通过 Documentation来学?fn)Java的类库,那么基本上就不需要看其他的书c了。除此之外,Documentation也是~程必备的手册,我的桌面上有三个Documentation的快h式,分别是J2SDK1.4.1的DocumentationQServlet2.3?Documentation和J2SDKEE1.3.1的Documentation。有了这个三个DocumentationQ什么其他的书籍都不需要了?br />  <br />  对于Java Web ~程来说Q最核心的是要熟(zhn)和掌握HTTP协议Q这个就和Java无关了,在熟(zhn)HTTP协议之后Q就需要熟(zhn)Java的实现HTTP协议的类库,也就?Servlet APIQ所以最重要的东西就是Servlet API。当然对于初学者而言Q直接通过Servlet API来学?fn)Web~程有很大的隑ֺQ我推荐O'reilly的《Java Server Pages 》这本书来学?fn)Web ~程?br />  <br />  EJB的书c当中,《Enterprise JavaBeans, 2nd Edition》是一本很不错的书Q?EJB的学?fn)门槛是比较高,入门很难Q但是这本书完全降低 </div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94113.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 09:54 <a href="http://www.aygfsteel.com/lijiezjn/articles/94113.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)新手入门QJ2EE学习(fn)l验和流E?/title><link>http://www.aygfsteel.com/lijiezjn/articles/94109.html</link><dc:creator>张江宁的个h博客</dc:creator><author>张江宁的个h博客</author><pubDate>Tue, 16 Jan 2007 01:39:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiezjn/articles/94109.html</guid><description><![CDATA[<tr> <td colspan="2"> <div style="FONT-SIZE: 10.5pt">  在这里我谈谈我在学习(fn)j2ee程Qƈ谈到在此q程中领?x)的l验和教训。以便后来者少走弯路?br />  <br />  Java发展到现在,按应用来分主要分Z大块QJ2SE,J2ME和J2EE。这三块怺补充Q应用范围不同?br />  <br />  J2SE是Java2的标准版Q主要用于桌面应用Y件的~程Q?br />  J2ME主要应用于嵌入是pȝ开发,如手机和PDA的编E;<br />  J2EE是Java2的企业版Q主要用于分布式的网l程序的开发,如电(sh)子商务网站和ERPpȝ?br />  <br />  <b>先学?fn)j2SE</b><br />  要学?fn)j2EEp先学?fn)j2SEQ刚开始学?fn)j2se先徏议不要用IDEQ然后渐渐的q渡C用IDE开发,毕竟用它方便嘛。学?fn)j2se推荐两本书,《java2核心技术一二卷》,《java~程思想》,《java与模式》。其中《java~程思想》要研读Q精诅R这一D|间是基本功学?fn),旉会(x)很长,也可能很短,q要看学?fn)者自w水q定?br />  <br />  <b>不要被I(xin)DEU缠</b><br />  在学?fn)java和j2eeq程中,你会(x)遇到五花八门的IDEQ不要被他们qhQ学JAVA的时候,要学语言本n的东西,不要太在意IDE的附加功能,JAVA~程在不同IDE之间的{换是很容易的Q过于的在意IDE的功能反而容易耽误对语a本n的理解。目前流行的IDE有jbuilderQeclipse和eclipse的加强版WSAD。用好其中一个就可以了,推荐从eclipse入手j2ee。因为Jbuilder更适合于写j2seE序?br />  <br />  选择和学?fn)服务器使用配?br />  <br />  当你有了j2se和IDE的经验时Q可以开始j2ee的学?fn)了Qweb服务器:(x)tomcatQ勿庸置疑,tomcat为学?fn)web服务首选。而应用服务器目前主要有三个:(x)jboss、weblogic、websphere。有很多目开始采用jbossQƈ且有大量的公司开始做websphere?weblogic向jboss应用服务器的ULQ节省成本)Q这里要说的是,学习(fn)tomcat和jboss我认为是首选,也是最Ҏ(gu)上手的。学?fn)服务器使用配置最好去询问有经验的人(有条件的话)Q因Z们或怸句话p解决问题Q你自己上网摸烦(ch)可能要一两天Q我干q这U傻事)Q我们应该把主要旉攑֜学习(fn)原理和理ZQ一特定技术的使用永远代替不了一个h的知识和学问?br />  <br />  <b>学习(fn)web知识</b><br />  如果你是在做?sh)子商务|站{时Q你可能要充当几个角Ԍq是你还要学?fn)?x)<br />  htmlQ可能要用到dreamwave{IDE?br />  JavascriptQ学?x)简单的数据校验Q数据联动显C等{?br />  <br />  <b>J2eeAPI学习(fn)</b><br />  学习(fn)j2eeAPI和学?fn)服务器应该是一个P代的q程?br />  先学?fn)jsp和servlet~程Q这斚w的书很多Q我建立看oreilly公司的两本《jsp设计》和《java servlet~程》,oreilly出的书L那么优秀Q不得不佩服?br />  学习(fn)jdbc数据库编E,j2ee目大多都是MISpȝQ访问数据库是核心。这本应属于j2se学习(fn)中,q里拿出来强调一下?br />  学习(fn)jndi apiQ它和学?fn)ejb可以l合h?br />  学习(fn)ejb apiQ推荐书《精通ejb?br />  l过上面的这些的学习(fn)Q大概可以对付一般的应用了?br />  有h说跟着sun公司的《j2ee tutorial》一路学下来Q当然也可以?br />  <br />  <b>学习(fn)ejb设计模式和看代码Q最重要Q?/b><br />  设计模式是练内功Q其重要性可以这么说吧,如果你不?x)用设计模式的话Q你写Z堆用了ejb的垃圾,有慢又是一堆bugQ其l果不如不用ejb实现Qejb不等于j2eeQ?br />  无论学习(fn)什么语aQ都应该看大量代码,你看的代码量不到一定数量,是学不好j(lu)2ee的?br />  <br />  目前有很多开源的工程可以作ؓ(f)教材Q?br />  jive论坛<br />  petstore sun公司<br />  dune sun公司<br />  {等Q研M个,q把它用到自q工程中来?br />  <br />  <b>J2ee其他学习(fn)</b><br />  当你渐渐对j2ee了解C定深度时Q你要开始关注当前领域中的一些技术变化,J2ee是一块百家争鸣的领域Q大安在这里提q解决Ҏ(gu)Q例?structsQhiberateQofbiz{等Q学?fn)这些东西要你的目和目标而定Q预先补充一下未不可,但不用涉?qing)太深,毕竟学?fn)原理和理论是最最重要的事?br />  <br />  <b>目前常见j2eeAPI</b><br />  JavaServer Pages(JSP)技?.2<br />  Java Servlet技?.3<br />  JDBC API 2.0<br />  Java XML处理API(JAXP)1.1<br />  Enterprise JavaBeans技?.0<br />  Java消息服务(JMS)1.0<br />  Java命名目录接口(JNDI)1.2<br />  Java事务API(JTA) 1.0<br />  JavaMail API 1.2<br />  JavaBeansȀzL?JAF)1.0<br />  J2EEq接器体pȝ?JCA)1.0<br />  Java认证和授权服?JAAS)1.0 </div> </td> </tr> <tr> <td colspan="2"> <b>(转蝲文章请保留出处:(x)<a >北天JAVA技术网(www.java114.com))</a></b> </td> </tr><img src ="http://www.aygfsteel.com/lijiezjn/aggbug/94109.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiezjn/" target="_blank">张江宁的个h博客</a> 2007-01-16 09:39 <a href="http://www.aygfsteel.com/lijiezjn/articles/94109.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转蝲)Java基础入门?JDBC介绍http://www.aygfsteel.com/lijiezjn/articles/94107.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 01:25:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94107.html
  JDBC是Java的开发??Sun的Javasoft公司制定的Java数据库连?Java Data Base Connectivity) 技术的Uͼ是ؓ(f)各种常用数据库提供无~联接的技术。JDBC在Web和Internet应用E序中的作用和ODBC在Windowspdq_应用E序中的作用cM。ODBC(OpenData Base Connectivity)Q称为开攑ּ数据库互联技术,是由Microsoft公司倡导q得C界普遍响应的一门数据库q接技术,如果读者有使用ODBC~程的经验,׃(x)发现JDBC与ODBC很类伹{JDBC现在可以q接的数据库包括Qxbase?Oracle、Sybase、Aceess以及(qing)Paradox{。?

JDBC的工作机?/strong>

  如果用户是从事Y仉域工作的Q不可能没有听说qSQL(Structure Query LanguageQ结构化查询语言)Q它是一U标准化的关pd数据库访问语a。在SQL看来Q数据库是表的集合Q其中包含了行和列。SQL标准虽然也还处在不断变革之中(M一门标准如果已一成不变了Q那只能说明q门学科已经停止发展?Q但其基本内容相对稳定。JDBC定义了Java语言同SQL数据之间的程序设计接口?
  JDBC有一个非常独特的动态连接结构,它得系l模块化。用JDBC来完成对数据库的讉K包括以下四个主要lgQJava的应用程序、JDBC驱动器管理器、驱动器和数据源?
  JavaSoft公司开发了JDBC APIQJDBC API是一个标准统一的SQL数据存取接口。  JDBC在Internet中的作用?ODBC在Windowspd中的作用cM。它为JavaE序提供了一个统一~地操作各种数据库的接口Q程序员~程Ӟ可以不关心它所要操作的数据库是哪个厂家的品,从而提高了软g的通用性,而且在Internet上确实无法预料你的用h讉K什么类型的数据库。只要系l上安装了正的驱动器组Q?JDBC应用E序可以访问其相关的数据库?
用JDBC来实现访问数据库记录可以采用下面的几个步骤:(x)
1、 通过驱动器管理器获取q接接口?
2、 获得Statement或它的子cR?
3、 限制Statement中的参数?
4、 执行Statement?
5、 查看返回的行数是否出范围?
6、 关闭Statement?
7、 处理其它的Statement
8、 关闭连接接口?

Java作ؓ(f)数据库前?/strong> 

  在信息时代,数据库是用于攉和处理数据的工具Q数据库形成了许多公司基l构的基。尽数据库pȝ非常适合数据的存储和取得Q但人类需要某U前台应有程序以查阅和用存攄数据?
  Java对徏立数据库服务器前台应用程序的开发h员提供了几个好处。Java是“一旦写成,到处q行”的语言Q即JavaE序不经改变卛_部vCQ何运行Java虚拟机的计算机结构和操作pȝ。对于大公司Q有一个公用开发^台好处很大,~程人员可以不再为大公司中的各个q_分别~程。Java也很吸引W三方开发者,单个JavaE序卛_满大公司客L(fng)需求?
  建立公司pȝ中基于Java的应用程序和程序的动力是巨大的。公司对于将l构和操作系l相x型变成针对网l的模型相当有兴。Java代表着节约资源成本的长期战略?
  对于开发h员,Java代表巨大的市场机?x)。大中型企业很少不用数据库进行业务工作的Q大部分公司数据库应用C务的各个斚wQ从Z资源到前U客户销售?

JDBC API

  JDBC API使开发者不必不断重写程序而可以徏立数据库前台。尽ANSI委员?x)有个标准组Q但每个数据库系l厂家的pȝq接和通讯Ҏ(gu)仍然五花八门?
  Z建立健全独立于^台的应用E序和基于Web的小E序Q开发h员应考虑用Java开发前台连接办法。从外部看,W三方Y件开发者通过专用办法Q通过本地Ҏ(gu)集成客户机方库或通过建立W三层和新协议来满q种需求?
  JavaSoft是Sun公司负责开发Java产品的业务单位,和数据库与数据库工具厂家一起徏立独立于DBMS的机Ӟ使开发h员不必考虑所用的特定数据库而编写客h方应用程序。生的JDBC APIW一版是核心JDK 2的一部分?
  JDBC向应用程序开发者提供了独立于数据库的统一的API。这个API提供了编写的标准和考虑所有不同应用程序设计的标准。其奥秘是一l由驱动E序实现的Java接口。驱动程序负责标准JDBC调用向支持的数据库所要的具体调用转变?
  应用E序~写一ơƈUL到各U驱动程序上。应用程序不变,驱动E序则各不相同。驱动程序可以用于开发多层数据库设计的中间层Q也UC间g(middleware)?
  除了向开发者提供统一的独立于DBMS的框架外QJDBCq提供了让开发者保持数据库厂家提供的特定功能的办法。JDBC驱动E序必须支持 ANSI AQL-2目层,但JDBC允许开发者直接将查询字符串传递到q接的驱动程序。这些字D可能是ANSI SQL也可能不是,或者根本不?AQL。这些字W串的用是基础驱动E序的事?
  JDBC不是Mincrosoft的ODBC(开攑ּ数据库连?规范z的,JDBC完全是用Java~写的,而ODBC是个C接口。但是,JDBC和ODBC都是ZX/开放SQL命o(h)层接?CLI)Q相同的概念性基使API工作q展更快QAPI的接受更加容易。JavaSoft提供了将JDBC变成ODBC的JDBC-ODBC桥。这个用本地Ҏ(gu)完成的版本很很有效?
  一般来_(d)JDBC API中有两层接口Q应用程序层Q开发h员用API通过SQL调用数据库和取得l果Q驱动程序层Q处理与具体驱动E序版本的所有通讯?
  每个JDBC应用E序(或小E序)臛_要有一个JDBC驱动E序Q每个驱动程序是针对一UDBMS的。但驱动E序不必直接联到数据库?

利用JDBC代替CGI

  q今为止Q通过Java讉K数据库的唯一Ҏ(gu)是利用Java中的调和访问Common Gateway InterfaceQCGIQ公用网x口)E序。通过Java调用CGI脚本其实是执行一个访问数据库q返回结果的独立E序?
  使用q种Ҏ(gu)速度很慢Q而且?x)在应用E序中引入更多的错误。这是由于利用两U不同的开发语a开发程序,需要掌握两U不同的技术。用JDBCQ用户只要了解Java语言卛_Q而用CGIQ用户必d时用Java和另一U编E语a?
  使用JDBC的另一个原因是它的速度比CGIҎ(gu)更快。用CGIҎ(gu)通常要求计算机执行另一个独立的E序。这个独立的E序讉K数据库,处理数据Qƈ结果返回给调用E序。这需要多U处理,因而增加了{待旉和出错概率?
  调用CGI脚本通常是通过Web服务器执行一个新的脚本,而执行JDBC的数据库命o(h)只需要某U将SQL命o(h)发送给数据库的服务器。这大大羃短了执行 SQL语句的时_(d)CGI脚本必须独立地连接数据库Q处理执行结构,而JDBC的解x案应用E序直接与数据库相连Q执行各U操作?

JDBC的优点和~点

  JDBC API用于q接Java应用E序与各U关pL据库。这使得Z在徏立客?服务器应用程序时Q通常把Java作ؓ(f)~程语言Q把M一U浏览器作ؓ(f)应用E序的友好界面,把Internet或Intranet作ؓ(f)|络dQ把有关的数据库作ؓ(f)数据库后端。以下是使用JDBC的优~点?
  优点如下Q?
  1.JDBC API与ODBC十分怼Q有利于用户理解?
  2.JDBC使得~程人员从复杂的驱动器调用命令和函数中解脱出来,可以致力于应用程序中的关键地斏V?
  3.JDBC支持不同的关pL据库Q得程序的可移植性大大加强?
  4.用户可以使用JDBC-ODBC桥驱动器JDBC函数调用转换为ODBC?
  5.JDBC API是面向对象的Q可以让用户把常用的Ҏ(gu)装Z个类Q备后用?
  ~点如下Q?
  1.使用JDBCQ访问数据记录的速度?x)受C定程度的影响?
  2.JDBCl构中包含了不同厂家的品,q就l更Ҏ(gu)据源带来了很大的ȝ(ch)?
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

]]>
(转蝲)Java入门知识http://www.aygfsteel.com/lijiezjn/articles/94103.html张江宁的个h博客张江宁的个h博客Tue, 16 Jan 2007 01:20:00 GMThttp://www.aygfsteel.com/lijiezjn/articles/94103.html What is Java? Why Java?                                                                                                 
  大家学习(fn)Java有各自的理由Q基本上Java是一个比较好的面向对象语aQapi丰富
  是当前比较主的~程语言QJ2SE/J2ME/J2EE在各个开发领域都发展良好
  Java不会(x)取代其他开发语a或开发^収ͼ如c/c++/c#或Delphi/.NET
  没有最好的语言Q只有某U应用场合下相对合适的语言                                                                     

JRE                                                                                                                     
  Java 2 Runtime Environment, Java q行时环?
  包括Java虚拟?JVM),和必ȝcd
  它是q行JavaE序和网A(ch)pplet的必备环?
  它被包含在j2sdk中,也可以单独下?U?0M)
  下蝲地址Q?http://java.sun.com/getjava/download.html

JDK/SDK/J2SE                                                                                                            
  Java 2 Software Development Kit, Standard Edtion
  是开发Java的必备环境,包括~译器等工具和大量类库,一般IDE中也?x)自?
 下蝲地址Q?a target="_blank">http://java.sun.com/j2se/downloads.html

J2EE                                                                                                                    
  Java 2 Platform, Enterprise Edition
  是Java在企业应用的主要技术,也是目前Java最主要的应用场?
  包括JAXP、JAXR、JAX-RPC、SAAJ、JAAS、JavaMail、JMS、JSF、JSP/Servlet{?
  开发J2EE,可以下蝲j2eesdk开发包Q一般IDE中也?x)自?
  相关链接Q?a target="_blank">http://java.sun.com/j2ee

J2ME                                                                                                                    
  Java 2 Platform, Macro Edition
  是Java应用于嵌入式pȝ(如手?的主要技?
  相关链接Q?a target="_blank">http://java.sun.com/j2me

开发方?/font>                                                                                                                
  市面上的IDE(集成开发环?可以极大的提高开发效?
  但如果你初学Java,我们推荐用JDK+Editplus或UltraEdit
  虽然陋些,但却可以学的比较扎实
  q早的依赖IDE只会(x)让你对Java API蜻蜓Ҏ(gu),一知半?
  甚至都未能掌握Java的基本语?
  掌握了扎实的基础后,再选择一ƾIDEq行开发是很容易的

  学习(fn)或用Java,多查javadoc是很重要?推荐使用JavaDOCHelper,cMMSDN的界?
  版上的不问?其实E微查查便不是问?

讄环境变量                                                                                                            
 安装了JDK以后Q要配置环境变量
  Windows 2000                                                                                                         
    我的?sh)?>属?>高->环境变量
    d以下环境变量(假定你的java安装在d:\Java\j2sdk1.4.2Q?
        变量?    ?                 说明
        JAVA_HOME  d:\Java\j2sdk1.4.2
        CLASSPATH  .                   .表示当前目录Q即搜烦(ch)当前目录
        PATH       ...;%JAVA_HOME%\bin  ...表示原来的PATH?
     新开一个dosH口Q键入java和javac试一?
  Linux                                                                                                                
     以下为RedHat,bashZ 不同发行版略有不?环境变量的设|详见Unix/Linux?
     修改用户目录下的.bash_profile,如vi ~/.bash_profile
     JAVA_HOME=/usr/local/java/j2sdk1.4.2
     CLASSPATH=.
     PATH=$PATH:$JAVA_HOME/bin
     export JAVA_HOME CLASSPATH
     重新登陆Qɘq个讄生效Q在l端输入java  javac试一?

单测试程?                                                                                                           
 代码:--------------------------------
  public class Test{
   public static void main(String[] args){
    System.out.println("Hello world!");
   }
  }
 -------------------------------------
  用记事本{工L(fng)写,保存成Test.java
  注意Q?
    如果你的windows讄'不显C已知扩展名'的话Q?
    很有可能被保存成Test.java.txt
  然后在命令行工具Qcd到Test.java所在目录,执行
   javac Test.java
   java Test

关于Java的学?/font>                                                                                                          
  入门JavaQ请看一本系l讲解Java的书c?
  q方面的书,市面上很多,大同异Q无所谓挑那本
  但尽量挑本面向高版本的讲解语法的书,千万不要选《VJ++入门到精通》之c?
  推荐的书c如 Java in a Nutshell, Java大学教程QJava核心技术,Java~程思想{?
  pȝ学习(fn)Java的基本知识之余,一定要勤实践,自己l自׃些动手机?
  适度的记住一些常用api,不要q分依赖IDE的代码提C?

开发工?/font>                                                                                                                

 JBuilder
    业界最L的IDE之一Q是Java开发工L(fng)大哥?
    目前最新版?JBuilder 2005
    无论开发j2se、j2me、j2eeq是xml/webserviceQ都是一把利?
    Foundation Edition可免费下载,但功能较?yu)?
    |上有流传企业版Qؓ(f)避免不必要的ȝ(ch)Q请谨慎使用(其在公?
    相关链接Q?a target="_blank">http://www.borland.com/products/jbuilder

 Eclipse
    新兴的Java IDEQ免贏V开放源代码、跨q_、功能强大、运行速度?
    同时可以通过开发新的插件扩展现有插件的功能Q比如在现有的Java开发环境中?
    入Tomcat服务器插件?
    相关链接Q?a target="_blank">http://www.eclipse.org

 Ant
    它是行的Java build工具Q?Everyone should use ant"
    Ant不是一个IDE,但却可以做很多IDE的事,如编?打包/部v/单元试/CVS{?
    对于中等规模以上的项目,必定依赖很多cd和拥有复杂的包结?
    使用Ant处理q些是极佳的选择
    相关链接Q?a target="_blank">http://ant.apache.org

JSP                                                                                                                     
 Java Server Page,一UJava Web开发的一Ҏ(gu)?和javascript没有什么关p?

Servlet                                                                                                                 
 先于jsp出现的动态网|?cMcgi,但用多U程处理h.

jsp/servlet与Java的关p?/font>                                                                                                 
 Servlet只是l承了HttpServlet的Javac?而jsp最l会(x)被编译成Servletq执?
 很多在开发web旉到的问题,其实和jsp/servlet本n没什么关p,而是普通的Java?
题?一个合格的jsp/servletE序员首先应该是合格的JavaE序员?
 在学?fn)和使用jsp/servlet?先打下坚实的Java基础

 以下问题不属于jsp/servlet范畴
  .常用API的?诸如"如何把int变ؓ(f)String" "如何得到当前旉" "如何创徏U程"
  .JDBC的用和相关注意事项,诸如"如何讉KMySQL" "Z么我插入数据是ؕ?
  .其他J2EE技术的使用,诸如"如何使用JavaMail" "如何讉KEJB"

推荐书籍                                                                                                                
 如果可能,请阅M本系l的书籍来指g学习(fn)q项技?
 W者只看过"JSP高~程"(机械工业2001q?廖若?
 其他大型出版Cև版的书都应该不错,如Wrox,O'Reilly,或者国内出版社
 挑书的时候最好选用jsp 1.2,servlet 2.3规范以上的书c?

Tomcat                                                                                                                  
 q个是个开放源代码的JSP/Servlet服务?是jsp/servlet的参考实?适合初学
 主页http://jakarta.apache.org/tomcat/
 Tomcat 4.1和Tomcat 5都是目前E_版本,后者支持最新的jsp/servlet标准
 下蝲zip版的,解压~?q行bin/starup.bat卛_出现服务器启动的界面
 如果启动p|,L(fng)定本机的Java环境已正?参见JAVA_HOME和PATH的配|?

 conf目录里是服务器的配置,webapps是部|网站的目录

自己写的java class应该攑֓?                                                                                           
 假设你的index.jsp的位|是X:/test/index.jsp,  X:/test是你的项目目?
 Test.class的位|应该是X:/test/WEB-INF/classes/Test.class

目中的lib应该攑֓?                                                                                                  
 X:/test/WEB-INF/lib/myLib.jar

如何写个servlet                                                                                                         
package testservlet;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.http.*;

public class FooServlet extends HttpServlet {
 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
   throws ServletException, IOException {
      resp.getWriter().println("hi, I'm a servlet");
 }
}
~译q个c? javac -classpath servlet-api.jar FooServlet.java
其中q个jar可以从tomcat-5.0.19\common\lib\servlet-api.jar获得
~译后的class攑֜ X:/test/WEB-INF/classes/testservlet/FooServlet.class
其中testservlet你包的名?应尽量写package,避免莫名其妙的麻?

~译X:/test/WEB-INF/web.xml,修改?
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application
2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
  <servlet>
    <servlet-name>test</servlet-name>
    <servlet-class>testservlet.FooServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>test<ervlet-name>
    <url-pattern>/foobar</url-pattern>
  </servlet-mapping>
</web-app>
把这个程序部|到服务器上,比如把X:/test/*复制到tomcat/webapps/test/*
打开览器访?http://localhost:8080/test/foobar,利的话?x)看C行文?

jsp昄的是q怎么?/font>                                                                                                   
 jsp的中文问题以下几U? //不包括jdbcd数据库的中文问题
 1. jsp中写了中文如<p>中文</p>, 却不能显C?
       解决Ҏ(gu) 在jspW一行加?                                                                                       
          <%@ page contentType="text/html; charset=gb2312" %>

 2. 表单中写了一个中??lt;input type="text" name="a" value="中文">
    却不能接受到 <%System.out.println(request.getParameter("a"));%>
       解决Ҏ(gu) 在jsp或servlet中处理参数前加一?                                                                      
          request.setCharacterEncoding("GB2312");

 3. http://host/a.jsp?name=中文  q样的url中的name取不?
       解决Ҏ(gu) 应该使用java.net.URLEncodercLq个字符串{成ascii                                                     

怎样实现文g上传                                                                                                        
 常见的Java文g上传api?
    Jakarta Commons FileUpload http://jakarta.apache.org/commons/fileupload/
    COS
    SmartUpload
 下蝲相关的文?里面一般有demo?

JSTL和EL                                                                                                                
 分别是Java Standard Tag Lib和Expression Language
 可以大大化常规的jsp开?q让面更简z?而不是充斥着scriptlet
(转蝲文章请保留出处:(x)北天JAVA技术网(www.java114.com))

]]>
վ֩ģ壺 | ϲ| ˹| | | | ¸| | ͨ| ½| | | | | | | α| ±| | | ˺| | ʲ| | | | | | | ֦| ˮ| | ɽ| | | Ϫ| ˾| | | Ͽ| |