工欲善其事,必先利其器。在我们深入Struts2之前,我还是想废一些口舌来讲述一下开发环境的搭建。每个人都会根据自己的习惯来搭建自己的开发环境。开发环境是否便捷,也将直接影响开发的效率。所以对于开发环境已经非常熟悉的朋友可以直接忽略这篇文章。而我在这里给大家介绍一下我的开发和调试环境的搭建,之后所有的章节的代码,也都将建立在这个开发环境之上。
在编写J2EE程序的时候,我们往往需要一个Web容器进行调试,比较常见的Web容器是Tomcat,在Eclipse等IDE中,也有很多针对Tomcat的插件支持,使你可以很轻松地在Tomcat上调试你的J2EE应用。而我所使用的Web容器是更加轻量级的Jetty。利用它进行J2EE的开发和调试,甚至只需要依赖Jetty的jar包即可。
搭建最简单的开发环境
首先我们来看看如何搭建最简单的J2EE项目的开发环境。
1. 我们需要建立的一个空的J2EE项目的目录结构:
在这里,我简单解释一下这些目录的作用:
src(source folder):存放所有的Java源代码。
conf(source folder):存放所有的配置文件。
test(source folder):存放所有的Java测试代码和调试代码。
web:web项目的根目录,下面有WEB-INF目录以及在此之下的classes和lib目录。classes目录将会成为所有的source folder的编译对象目录,而lib目录则存放项目所依赖的jar包。
lib:也存放jar包,这些jar包可能仅仅在开发调试时依赖,项目本身则不依赖这些jar文件。
2. 编写IDE相关的文件
在这里,你还能看到classpath文件和project文件。这两个文件是导入到eclipse中所必须的文件,是我为eclipse工程而写的文件。如果你使用其他IDE,可能需要自行编辑与其他IDE相关的项目文件。
在建立了这些目录结构后,你就可以将其导入到eclipse中作为eclipse的工程了。
3. 加入相关调试所需要的jar包,并指定classpath
接下来,我们把Jetty所需要的jar包copy到lib目录下,并在IDE中指定classpath。
4. 添加Jetty启动类
在test下建一个runtime的目录,并添加Jetty启动类。
package runtime;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
/**
* Jetty Server starter. Use embedded mode.
*
* @author Downpour
*/
public class JettyStarter {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
long begin = System.currentTimeMillis();
Connector connector = new SelectChannelConnector();
connector.setPort(Integer.getInteger("jetty.port", 8080).intValue());
WebAppContext webapp = new WebAppContext("web", "/struts-sample");
webapp.setDefaultsDescriptor("./test/runtime/webdefault.xml");
Server server = new Server();
server.setConnectors(new Connector[] { connector });
server.setHandler(webapp);
server.start();
System.out.println("Jetty Server started, use " + (System.currentTimeMillis() - begin) + " ms");
}
}
如果此时,你在WEB-INF下有web.xml,那么你就可以执行上面这个Jetty的启动类。
5. 启动、调试、测试
执行了Jetty的启动类后,可以看到启动界面的日志:
15 [main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
15 [main] INFO org.mortbay.log - jetty-6.1.7
1109 [main] INFO org.mortbay.log - Started SelectChannelConnector@0.0.0.0:8080
Jetty Server started, use 1547 ms
这表示你已经成功启动了Jetty作为你的Web服务器。当然,你可以使用Debug模式来执行Jetty类,这样就进入了调试模式,你可以在代码中设置断点进行调试。
在这里,还有一点需要简单提一下,默认情况下,Jetty会在windows上使用缓存,所以会把js,css等文件进行锁定,使你无法编辑。为了解决这个问题,需要设置一些默认参数。这里,我们可以使用google大法,已经有朋友为我们解决了这个问题:
http://www.blogjava.net/alwayscy/archive/2007/05/27/120305.html
所以,我在runtime的同级目录建立了一个webdefault.xml文件,并且指定Jetty使用该文件作为默认的参数设定。
【小结】
在上面我介绍了我个人的开发调试环境,这种开发环境的好处可能有一下这些:
1. 开发环境不依赖于任何IDE或者相关的插件,只需要运行Java文件即可进行调试。(当然,你可能需要编写IDE相关的project文件来获取IDE的工程支持)
2. 开发环境不依赖于任何外部的Web服务器,与环境无关,所以无论将项目迁移到哪里,都可以直接运行。
3. 不需要开发人员额外学习如何搭建开发环境,开发环境已经内置,降低了开发人员的学习成本。
完善Library的管理方式
在上面搭建环境的过程中,我们发现,Library的管理存在着一定问题。这个问题主要表现为:
1. 不容易做Library的版本管理。如果Library的版本需要升级,那么我们不得不重新copy一份新的jar包,并且借助IDE重新指定项目的classpath。这种劳动,对于一个项目还可以接受,如果你有10多个项目,那么jar包的复制工作会让你很头疼。
2. 每个项目都会有Library的副本。这一点让人非常恼火。实际上,对于一个公司或者一个项目组而言,使用的技术体系基本不变。然而,每个项目的Library却是分开的。不仅如此,每个项目都要从svn中下载大量的相同的Library文件,给我们的硬盘造成极大的空间浪费。对于那些频繁使用Branch的项目来说,这些Library的下载简直就是噩梦。
所以,我们需要一个
集中式的Library管理方式。而这一点曾经在Javaeye的海阔天空版激烈得讨论过使用maven来进行管理还是自行管理。
Readonly 写道
共享类库可以用IDE reference project解决,公司内部项目给常用的lib建立一个project,从CVS上check out,其他工程项目都依赖这个project就可以了,ant build也直接引用这个项目的jar就可以,项目体积照样只有几百K。
——一个讨厌ant,更加讨厌maven的人
我比较赞同Readonly老大的说法而倾向于自行管理。maven这样的高级货,偶实在是用不来啊。那么我们就来看看如何使用共享类库来进行Library管理。
1. 首先建立一个共享类库
建立一个共享类库,将项目中需要共享的Library进行恰当的分类。同时,为每个加入到Library中的jar包进行统一的格式化的命名方式。例如:spring/spring-2.5.5.jar等等。这样的好处在于,一旦jar包的版本有更新,可以加入新的jar包而保留原来的。在项目中,就可以通过引用不同版本的jar包来对Library进行版本管理。
以下就是我个人建立的一个共享类库,大家可以参考:
svn://www.demo2do.com/library
2. checkout共享类库,并将其导入到IDE中作为一个Library工程
3. 为你的项目指定classpath,引用的jar包存在于Library工程中
在这里,我们可以看到,原来项目中的lib目录被删除,jar包也被删除。在项目中所引用的jar包是Library项目中的jar包。
【小结】
完成了上述所有的步骤之后,Library就被集中管理起来,而每个项目也不会再变得那么庞大。当然,开发环境的搭建完全取决于个人的习惯,所以使用各自喜欢的方式吧,不要让环境问题束缚你们的手脚。
- 大小: 3.9 KB
- 大小: 18 KB
- 大小: 20.7 KB
- 大小: 26.6 KB
- 大小: 5.4 KB
- 大小: 10.8 KB
分享到:
相关推荐
李刚的Struts 2.1权威指南:基于WebWork核心的MVC开发,写的很详细。一共有九个压缩文件。
轻量级Java EE企业应用开发实战—光盘——Struts 2+Spring+Hibernate整合开发 李刚 网络资源 互相学习 侵权自删
学习JEEE的经典教材,由李刚老师编著,这是最新的第三版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。该书在2011年2月由电子工业出版社出版 由于上传文件大小限制本书被压缩为四个部分,此附件...
李刚老师编著的,Struts2权威指南完整版(上).pdf。可以帮助初学者入门,帮助入门者提高。
轻量级Java EE企业应用实战(第4版) Struts 2+Spring 4+Hibernate整合开发 光盘 源码 2014 李刚
struts2权威指南及其开发源代码,是李刚著名的教材之一,主要介绍struts2的知识,内容又整合了spring和hibernate,确实是一本好书,所以分享给大家。
我也处于struts2的学习解决,看了一些官方介绍、李刚的书、看了java eye上面的忘记李刚等文章,针对这段时间的学习,我总结如下的文档,主要是描述我理解的struts2原理。 介绍容易混淆模糊的概念,servlet、web容器...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part5
struts2 权威指南 李刚 源代码 完整
第1章 Struts 2概述1 1.1 MVC思想概述2 1.1.1 Web技术的发展2 1.1.2 Model 1和Model 24 1.1.3 MVC思想及其优势6 1.1.4 常用的MVC框架7 1.2 Struts 2的起源和背景8 1.2.1 Struts 1简介及存在的问题9 ...
《轻量级java ee企业应用实战 第3版 struts 2+spring 3+hibernate整合开发》
亲测Struts2 3.4.1必需包,李刚系列书使用jar包,亲测可用
本光盘是《整合Struts+Hibernate+Spring应用开发详解》一书的配书光盘,书中的代码按章存放, 即第二章所使用的代码放在codes文件夹的02文件夹下,依次类推。 本光盘根目录下有11个文件夹,其内容和含义说明如下: ...
比较流行的一本书,在公司内很受欢迎 比较实用 下半部分,需与上半部分放在一起解压。
介绍了Java EE领域的三个开源框架:Struts 2、Spring和Hibernate。 这是第三部分,我上传的上限是60MB,所以不得不分包额!
辛苦制作的,对应的教材是李刚老师写的《轻量级JAVA EE 企业应用开发实践》 教案截止到拦截器部分,希望对学习struts2的有所帮助。
轻量级Java EE企业应用实战(第3版):Struts 2+Spring 3+Hibernate整合开发 part3 李刚
Struts2.1权威指南——基于WebWork核心的MV 不是2.0噢最新版,作者李刚