工欲善其事,必先利其器。在我们深入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开发,写的很详细。一共有九个压缩文件。
- **第2章Struts2下的HelloWorld**:通过一个简单的示例展示如何搭建Struts2环境并运行第一个程序。 - **第3章Struts2基础**:涵盖Struts2的核心组件、配置文件、请求处理流程等基础知识。 - **第4章深入Struts2**:...
在这个实战教程中,作者李刚聚焦于Struts 2、Spring和Hibernate这三个核心组件的整合,它们是Java EE领域中非常流行的开源框架,用于构建现代化的Web应用程序。 Struts 2是一个强大的MVC(模型-视图-控制器)框架,...
《Struts2权威指南》是由著名Java技术专家李刚编著的一本经典教材,这本书深入浅出地讲解了Struts2的核心概念、架构和使用方法。书中不仅涵盖了Struts2的基础知识,还详细讨论了如何将Struts2与其他流行技术如Spring...
在这个亲测Struts2 3.4.1必需包中,我们可以找到李刚系列书中推荐使用的JAR包,这些库文件对于成功运行和开发基于Struts2 3.4.1的应用至关重要。 1. **Struts2核心组件**:Struts2的核心库包含了处理请求、响应、...
《Struts2权威指南》是李刚先生撰写的一本深入解析Struts2框架的专业书籍,其源代码的提供对于读者理解和实践Struts2框架具有极大的帮助。 源代码通常包含了书中讲解的各种示例和实战项目,使得学习者能够通过实际...
学习JEEE的经典教材,由李刚老师编著,这是最新的第三版,第3版保持了第2版内容全面、深入的特点,主要完成全部知识的升级。该书在2011年2月由电子工业出版社出版 由于上传文件大小限制本书被压缩为四个部分,此附件...
这本书籍将深入讲解如何将这三个框架整合在一起,形成所谓的“SSH”(Struts 2、Spring、Hibernate)集成开发环境。通过SSH,开发者可以在控制层使用Struts 2处理用户请求,由Spring提供依赖管理和事务管理,并利用...
李刚老师编著的,Struts2权威指南完整版(上).pdf。可以帮助初学者入门,帮助入门者提高。
《轻量级Java EE企业应用实战(第4版)》这本书深入探讨了Struts 2、Spring 4和Hibernate这三大框架的整合开发,旨在帮助读者掌握如何在实际项目中高效构建Java EE应用。SSH(Struts 2、Spring、Hibernate)是Java ...
总之,Struts2是Java Web开发中的重要工具,李刚老师的《Struts2权威指南》为开发者提供了全面的学习资源,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,提升自己的开发技能。通过阅读本书,你将能够深入...
本教程将引导你逐步了解和掌握Struts2的基础知识,结合李刚老师的《轻量级JAVA EE 企业应用开发实践》教材,帮助你深入理解Struts2的核心概念和使用方法。 在Web开发中,MVC模式是一种常见的架构模式,它将应用程序...
轻量级JavaEE企业应用实战_Struts2+Spring3+Hibernate整合开发_第3版.part5
SSH(Struts2+Spring+Hibernate)项目开发是一种常见的Java EE企业级应用框架组合,用于构建高效、可扩展且易于维护的Web应用程序。这个压缩包中的HRSystem_Eclipse项目是李刚轻量级Java EE教程系列中关于企业开发...
《Struts2权威指南》这本书由李刚撰写,电子工业出版社出版,为开发者提供了全面的Struts2学习资源。 Struts2的核心特性包括: 1. **拦截器(Interceptors)**:Struts2的拦截器是基于AOP(面向切面编程)的概念,...
Struts2是一个基于MVC(Model-View-Controller)架构模式的开源Java Web框架,它在J2EE环境中被广泛使用,为开发人员提供了一种高效、灵活且强大的方式来构建动态Web应用程序。《Struts2权威指南》是李刚所著的一本...
李刚编著的《Struts2权威指南》是一本深入剖析该框架的书籍,它以丰富的实例和详尽的参数解析,帮助开发者从基础到高级全面掌握Struts2的使用。 1. **Struts2框架概述** - Struts2是Apache软件基金会下的一个开源...