JAVA网页设计嘿嘿,在ibm上的用ant来办理enhydra项目...
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开项目内容:
-.Ant简介
二.Ant的安装及设置
三:用ant办理enhydra项目
四:小技能
参考文献
团体简介
宗锋(zong_feng@263.net)
东南年夜学盘算机系硕士研讨生
2001年7月
本文形貌了ant的基础语法及其怎样使用于enhydra项目标办理
-.Ant简介
大概有很多读者其实不懂得甚么是ant,和怎样利用它。但只需你是用过linux,你应当晓得make为什么物,当我们编译linux内核及一些软件的源程序时,我们常常必要在把持台下输出make。Make实在就是一个项目办理工具,而ant所完成的功效与make差未几。Ant是apache软件基金会jakarta项目中的一个子项目,因为是基于java编写的,因而具有很好的跨平台性。Ant由一些内置义务(task)和可选择的义务构成(固然你还能够编写本人的义务),利用Make时,你必要写一个Makefile文件,而用ant时则必要写一个build.xml文件。因为接纳xml的语法,以是build.xml文件很简单誊写和保护,且布局很明晰,而不像Makefile文件有那末多的限定(比方在tab标记前有一个空格的话,命令就不会实行)。Ant的长处远不止这些,它还很简单的集成到一些开辟情况中(比方visualage,jbuilder,netbeans)。
二.Ant的安装及设置
安装
Ant今朝的版本是1.3,起首到http://jakarta.apache.org/ant/index.html下载ant最新版本1.3,解压到C:/ant(window操纵体系)大概/usr/local/ant(linux操纵体系),因为我们要用到xmlc,而ant1.3中并没有包括它,以是我们必要David.Li为ant写的xmlc义务。详细url为http://www.digitalsesame.com/enhydra/EnhydraAnt20001213.tar.gz。将下载后的文件中的ant.jar交换失落ant1.3中ant.jar.如许ant的版本变成1.2.
2.设置路径
(1):windows98操纵体系
编纂C:enhydra.bashrc,到场上面三行
exportANT_HOME=/ant
exportJAVA_HOME=/jdk-1.2.2
exportPATH=${PATH}:${ANT_HOME}/bin
(2):Linux操纵体系
编纂/etc/profile大概用户目次下的.bashrc文件,到场上面三行
exportANT_HOME=/usr/local/ant
exportJAVA_HOME=/usr/local/jdk-1.2.2
exportPATH=${PATH}:${ANT_HOME}/bin
三:用ant办理enhydra项目
1:基础的文件目次布局
enhydra这里不用多先容了,要想懂得它能够到http://www.linuxaid.com.cn/和http://www.cn.ibm.com/developerWorks/linux/sdk/ant/www.linuxforum.net上读一些与此相干的文章。
我们以David.Li写的AntDemo项目作为示例来说述如何用ant办理enhydra项目,起首下载此示例,url为http://www.digitalsesame.com/enhydra/AntDemo.tar.gz,解压就任意目次,我们能够看到目次树布局以下
在这个目次树布局中,与传统的enhydra项目分歧的是,我们用build.xml代替了Makefile,在报告这个build.xml文件前,我们先懂得一个基础的build.xml文件的布局。
2:build.xml的基础誊写标准
上面我们就来说述这个文件的誊写办法,上面是这个文件的全体内容
1.<?xmlversion="1.0"?>
2.<projectname="MyProject"default="dist"basedir=".">
3.<propertyname="dist"value="dist"/>
4.<targetname="init">
5.<mkdirdir="${dist}"/>
6.</target>
7.</project>
为了便利申明,我们为每行加了行号,第一行是xml文件的基础要素,第二行申明这是一个项目,第七行申明项目标停止,在第二行中,name="MyProject"申明此项目标称号,这个属性无关紧要。basedir="."申明基础目次,此属性无关紧要。default="dist"申明项目标缺省方针(target)是甚么,这个属性必需有。所谓方针(target)就是一系列义务(task)构成的一个汇合。每一个义务(task)的誊写办法以下:
<义务名属性1="属性1的值"属性2="属性2的值"......./>
第三行界说了一些属性(property),以便前面利用,这十分相似于编程中界说的全局变量。从第四行入手下手界说方针(target),name="init"指了然此方针的称号,name属性在界说方针时必需有,固然界说方针时另有其他一些属性可选,比方depends,unless,详细请参考ant的文档。第五行入手下手界说此方针内的义务,个中mkdir时ant的外部义务名,dir是此义务的属性,其值为${dist}。此义务就是创立一个目次。个中${dist}是猎取dist属性的值(就是我们在第三行界说的)。如上就是一个基础的build.xml文件的写法。你能够在命令行上输出ant-buildfilebuild.xml
看一下你确当前目次下是不是多了一个dist目次。假如堕落,则多是你没有把ant设置好,拜见后面讲的安装及设置,看一下哪儿出了错。
3:build.xml文件
build.xml文件以下,个中有的正文和有关的代码删失落了,且做了一下小小的修改
1:<?xmlversion="1.0"?>
2:<projectdefault="app"basedir=".">
3:<!--到场xmlc义务-->
4:<taskdefname="xmlc"classname="org.apache.tools.ant.taskdefs.optional.enhydra.Xmlc"/>
5:<!--===================================================================-->
6:<!--设置编译的类路径-->
7:<!--===================================================================-->
8:<pathid="build.classpath">
9:<pathelementpath="${build.classes}"/>
10:</path>
11:<!--===================================================================-->
12:<!--初始化基础属性-->
13:<!--===================================================================-->
14:<targetname="init">
15:<!--Setupapplicationinfo-->
16:<propertyname="app.Name"value="AntDemo"/>
17:<propertyname="app.name"value="antDemo"/>
18:<propertyname="app.version"value="0.0.1"/>
19:<propertyname="app.year"value="2000"/>
20:<!--sourcecodeanddocumentinfo-->
21:<propertyname="src.dir"value="."/>
22:<propertyname="doc.dir"value="./doc"/>
23:<propertyname="lib.dir"value="./lib"/>
24:<!--packagetobejavadocs-->
25:<propertyname="packages"value="antDemo.*"/>
26:<!--buildinfo-->
27:<propertyname="build.dir"value="ant.build"/>
28:<propertyname="build.classes"value="${build.dir}/classes"/>
29:<propertyname="build.lib"value="${build.dir}/lib"/>
30:<propertyname="build.javadocs"value="${build.dir}/javadocs"/>
31:<propertyname="build.xmlc.dir"value="${build.dir}/xmlcout/"/>
32:<propertyname="build.debug"value="on"/>
33:<propertyname="dist.dir"value="./${app.name}-${app.version}"/>
34:</target>
35:<!--===================================================================-->
36:<!--创立要寄存编译厚的文件的目次-->
37:<!--===================================================================-->
38:<targetname="prepare"depends="init">
39:<mkdirdir="${build.dir}"/>
40:</target>
41:<!--===================================================================-->
42:<!--用XMLC工具编译html文件-->
43:<!--===================================================================-->
44:<targetname="xmlc"depends="prepare">
45:<mkdirdir="${build.xmlc.dir}"/>
46:<xmlcsrcdir="${src.dir}"
47:sourceout="${build.xmlc.dir}"
48:includes="**/*.html">
49:<!--elementnameissameascommandlineparameter-->
50:<warningsparam1="false"/>
51:<generateparam1="both"/>
52:<html_encodingparam1="gb2312"/>
53:<!--theoldargelementisstillsupported-->
54:<argname="ssi"/>
55:<argname="keep"/>
56:<!--prefixmapdopackagenamemapping-->
57:<prefixmapold="antDemo.presentation.html"new="antDemo.presentation"/>
58:</xmlc>
59:</target>
60:<!--===================================================================-->
61:<!--编译-->
62:<!--===================================================================-->
63:<targetname="compile"depends="xmlc,prepare">
64:<mkdirdir="${build.classes}"/>
65:<!--compileXMLCgeneratedjava-->
66:<javacsrcdir="${build.xmlc.dir}"
67:destdir="${build.classes}"
68:classpathref="build.classpath"
69:debug="${build.debug}"/>
70:<!--compilejavacodes-->
71:<javacsrcdir="${src.dir}"
72:destdir="${build.classes}"
73:classpathref="build.classpath"
74:debug="${build.debug}"
75:includes="${app.name}/**"
76:/>
77:</target>
78:<!--===================================================================-->
79:<!--复制-->
80:<!--===================================================================-->
81:<targetname="extra"depends="init">
82:<mkdirdir="${build.classes}/${app.name}/presentation"/>
83:<copytodir="${build.classes}/${app.name}/presentation">
84:<filesetdir="${src.dir}/${app.name}/presentation">
85:<includename="**/*.gif"/>
86:<includename="**/*.jpg"/>
87:<includename="**/*.js"/>
88:<includename="**/*.css"/>
89:</fileset>
90:</copy>
91:</target>
92:<!--===================================================================-->
93:<!--创立lib目次,class文件及其他文件打包-->
94:<!--===================================================================-->
95:<targetname="jar"depends="extra,compile">
96:<mkdirdir="${build.lib}"/>
97:<jarjarfile="${build.lib}/${app.name}.jar"basedir="${build.classes}"/>
98:</target>
99:<!--===================================================================-->
100:<!--复制使用程序的设置文件-->
101:<!--===================================================================-->
102:<targetname="app"depends="jar,extra">
103:<!--dotheapp.conf-->
104:<copyfile="${src.dir}/${app.name}/${app.Name}.conf"todir="${build.dir}"/>
105:<!--dothemultiserver.conf-->
106:<filtertoken="OUTPUT"value="./"/>
107:<copyfile="${src.dir}/${app.name}/multiserver.conf.in"
108:tofile="${build.dir}/multiserver.conf"
109:filtering="on"/>
110:<!--dothestartscript-->
111:<copyfile="${src.dir}/${app.name}/start"todir="${build.dir}"/>
112:<chmodfile="${build.dir}/start"perm="ugo+rx"/>
113:</target>
114:</project>
4:build.xml具体申明
上面我们将具体报告这个文件,一样为了便利,我加了行号,固然一些基础的工具我就不再反复了。第四行taskdef义务(task)属于ant的外部义务,它的感化是界说一个义务,其基础属性有name,classname,在界说时这两个属性都必须有。第八行入手下手界说一个path,它有一个属性id,经由过程这个id的值我们能够在前面援用这个path,拜见第68行。方针(target)init(从14行到34行)界说了一些基础属性(property),次要是为了前面的target利用。在第38行,你会看到depends="init",depends是界说一个方针时的可选属性,它的意义是假如init方针没有实行(堕落或其他缘故原由),这个方针也不会被实行。
从第46行入手下手界说xmlc义务,到第58行停止,两头有良多参数嵌套在个中,srcdir指定源文件目次,sourceout指定输入目次,includes属性将源文件目次中的一切html文件包含出去。*为通配符。
<warningsparam1="false"/>暗示作废告诫,<generateparam1="both"/>暗示同时发生接口和完成代码,比方:一个welcome.html,它会发生两个文件:WelcomeHTMLImpl.java,WelcomeHTML.java,WelcomeHTML.java中只界说了一个接口WelcomeHTML,真实的完成在WelcomeHTMLImpl.java中。<html_encodingparam1="gb2312"/>暗示设置编码,因为xmlc将html文件编译为java类,即便你在html文件中已设置了编码,在java类中也不会有感化,必需在编译时设置编码。<argname="ssi"/><argname="keep"/>这两句相称于在命令行上输出-ssi-keep.个中ssi参数是在编译html文件时将界说的ssi文件包含出去,见html目次下的welcome2.html源代码中有一行:<!--#includefile="welcome.ssi"-->。keep参数会保存编译html文件后发生的java文件。第57行意义是将包改名,因为html文件在antDemo/presentation/html目次下,因而发生的java类属于antDemo.presentation.html包,我们经由过程new属性的值将属于此包的类改成属于新的包,利用xmlc时,一样平常以上几个参数就充足了,要想利用更多的参数,请拜见xmlctask界说的源代码。
从第63行到77行,方针(target)界说了编译时的细节,编译分为两部分,分离编译xmlc发生的java类和项目中的java类(体现层,商务层,数据层中的代码)。javac这个义务中,srcdir属性指定java文件寄存地位,destdir属性指定编译后的class文件寄存地位,classpathref属性指定classpath,debug属性设置封闭仍是翻开调试信息,includes属性起一个过滤感化,它指定编译那些文件,不然javac将会编译srcdir属性指定的目次下的一切java文件。
81行到91行入手下手将将程序顶用到的其他文件也复制到方针目次,以便下一步打包。在copy义务中,todir属性指定方针目次,至于复制那些文件,则由嵌套在copy义务中的fileset义务来指定。在fileset中,dir指定基础目次,include和exclude属性用来过滤文件,切合前提的文件将会被复制到方针目次。
95行到98行入手下手将程序打包,jarfile属性指定打包后的文件名,basedir指定基础目次,基础目次下的文件及子目次城市依照其原本的构造布局放到jar文件中。
102行到113行,入手下手复制设置文件,设置文件包含AntDemo.conf,multiserver.conf,start.个中第112行,chmod义务将start文件的属性改成对任何人可实行和可读。
经由过程下面的解说,你大概看出利用ant的优胜性,ant能够便利的办理一个年夜型的enhydra项目,固然其他的项目也能够,主要的是,你能够很简单的对它的task举行扩大。信任愈来愈多的人会利用ant来举行项目标办理。
四:小技能:
因为利用ant时大概堕落,而屏幕不敷年夜的话,大概看不清,最好将编译堕落信息放进一个文件中,以下如许利用ant:
ant-buildfilebuild.xml-logfileerror.log
就会将堕落信息放进error.log中,因为利用buildfile参数,因而xml文件名纷歧准时build.xml,能够为恣意xml文件,如project.xml
自己的开辟情况为:windows98+enhydra3.1+ant1.2+jdk1.2.2,redhat6.2+enhydra3.11b+ant1.2+jdk1.31。
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。 一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 是一种将安全性(Security)列为第一优先考虑的语言 你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢? 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading) 你可以去承接一些项目做了,一开始可能有些困难,可是你有技术积累,又考虑周全,接下项目来可以迅速作完,相信大家以后都会来找你的,所以Money就哗啦啦的。。。。。。 Java 编程语言的风格十分接近C、C++语言。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 关于设计模式的资料,还是向大家推荐banq的网站 http://www.jdon.com/,他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 Java是一种计算机编程语言,拥有跨平台、面向对java 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
页:
[1]