Eclipse 下J2EE 开发与解释

来源:互联网 发布:淘宝开店怎么装修店铺 编辑:程序博客网 时间:2024/06/01 08:35
对于J2EE,我们需要了解哪些
我的理解,它是一种框架(或者说是基础框架).SUN将企业级应用开发所涉及到的包,类等基础构件都囊括在了J2EE中.
因此,J2EE平台成为了企业级应用的最佳平台之一,它可以让程序员迅速,快捷地开发和分布企业级应应用程序.以下便是它的相关技术:
1.Enterprise JavaBeans Architecture,企业级JavaBeans定义了一个应用程序接口.它可以使程序员迅速开发,发布和管理跨平台的,基于组件的企业级应用程序. 
2.JavaServer Pages,JSP技术提供了一种简单,快速的方法来创建动态网页.通过它,可以快速地开发基于Web的应用程序,并且这些应用程序都是与平台无关的.因为JSP与ASP很相似,所以熟悉ASP的人学习它就很容易了. 
3.JavaServlet,提供了应用程序接口.通过它可以简单快速地开发并扩展服务器功能.就发展趋势来看,它将来可能取代CGI. 
4.J2EEConnector,提供了一种标准结构来联接不同的企业信息平台. 
5.Java Naming and Directory Interface(JNDI),在Java平台与商业信息之间,JNDI提供了统一,无缝的标准化连接.通过使用JNDI,程序员可以在企业多命名与目录服务之间传送Java应用程序. 
6.Java Interface DefinitionLanguage(JIDL),通过使用CORBA,可以提供协同工作的能力.JIDL包括一个IDL-to-Java编译器和支持IIOP(Internet Inter-OrbProtocol)的ORB. 
7.JDBC,几乎是为所的数据库提供了统一的接口,同时可以创建高级工具和接口. 
8.Java Message Service(JMS),它几乎规范了所企业级消息服务,如可靠查询,发布消息,订阅杂志等各种各样的PUSS/PULL技术的应用,并且为它们提供了一个标准接口. 
9.Java TransactionAPI(JTA),为分布式系统中可处理的应用程序规定了一个高级的管理规范. 
10.JavaMail,JavaMail应用程序接口提供了一整套模拟邮件系统的抽象类.通过JavaMail,可以创建邮件或消息应用程序. 
11.RMI-IIOP,使用它就可以只用Java 技术和JavaRMI接口开发客户机与服务器的远程接口.
当然,随着J2EE在市场也业务的不断发展中,该框架下的内容也会不断的扩展.
从我的感受来看,我们是无法一次性将J2EE中的各个模块(包,类)都理解清楚,也不是每一个应用都会用到上述各个模块(包,类),当我们开发不同应用模式下的程序时,所用到的模块(包,类)是不同的,因此,J2EE的学习,掌握,提高是一个循序渐进,分块熟悉的过程.
为什么要在Eclipse下开发
从上面我们了解到,J2EE是一种框架,是众多模块(包,类)的集合.因此,我们的疑问也就产生了,既然是这样,一个记事本,一个DOS命令,不就能让我们开发J2EE程序了么,为什么还用用Eclipse呢 
的确,我们能够通过一个记事本,一个DOS命令来开发J2EE程序(只要我们那些相关类包齐全).但是,要知道,编写的J2EE程序功能(模块)之间,往往是结构关联的,调试困难的,部署复杂的.如果没一个综合的平台来帮助我们进行以上的一些工作,则我们的项目真的要"天长地久"了.
通常来说,开发平台众多,JBUILDER,NETBEAN都是非常出色的开发平台,也都能很好的满足我们在J2EE开发过程中的"代码编写","运行调试","应用部署"等工作.
而对于ECLIPSE来说,在IBM支持下的开放源码项目,经过一段时期的发展完善,已经为广大Java开发者所熟悉.它为Java开发者提供了免费使用强大的JavaIDE的机会,通过集成大量的plugin(不断扩展的插件),Eclipse的功能可以不断扩展,以支持各种不同的语言,应用,提供丰富的开发环境和手段.
基于Eclipse的插件灵活性,对我们的开发工作起到了非常好的保障作用,比如:我们可以使用VSS或CVS插件来让Eclipse控制版本;我们可以用插件来集成TOMCAT的控制和配置;通过图形界面来编写XML;甚至,如果你喜欢,还可以给Eclipse 更换skin;在Eclipse安装游戏插件……
我们都已经知道了,除了基础的,官方网站去下载的ECLIPSE以外,要实现各种新鲜的功能,则需要我们下载各类插件(当然,官方网站下载的版本已经涵盖了比较多的功能了)以下,我们分别介绍一下,在J2EE开发过程中,适合我们使用的两个"插件集合".
Lomboz --是一个免费的Eclipse plugin,它将很多Java应用服务器,J2EE组件和Web应用开发集成到Eclipse中,可以帮助Java开发者使用Eclipse建立,测试,部署J2EE应用.
MyEclipse—相对的,MyEclipse是一个收费的插件,同样的,它将很多Java应用服务器,J2EE组件和WEB应用开发集成到了ECLIPSE中,帮助JAVA开发者使用ECLIPSE建立,测试,部署J2EE应用.
它们两者为用户达到的目的基本相同,所不同的是Lomboz是FREE的,当然它是由免费项目组维护的,采用的各个软件包自然也是免费的包;MyEclipse作为一家公司的产品,更多的使用收费的包(也许会更稳定一些),当然,也包含数量相当的免费包.
从Myeclipse5.0包的内容来看,大约含800个左右的插件集成(当然,很多是属于N个插件完成一种操作或功能)其中,还包括同一插件的多个版本,供用户按照各自的习惯选用.
环境配置
基于Myeclipse的安装相对Lomboz便捷一些,我们在这里就选择Lomboz来进行环境配置.
Eclipse安装
(注意,鉴于Lomboz提供了包括Eeclipse以及Lomboz插件的下载包,我们可以跳过Eclipse安装这一节)
首先,当然是安装ECLIPSE http://www.eclipse.org/
现在完成后,按照通常软件的安装方法安装.当然,ECLIPSE的运行会要求JDK的支持,如果JDK的设置正确,则ECLIPSE会在第一次运行时自动设置.(推荐大家先安装J2SE,等到后续用到J2EE包,在去下载)
第一次进入ECLIPSE,用户会看到一个教学界面,其中列举了多个不同的ECLIPSE应用教程,都是非常好的教程!当然,不是我们今天的重点,如果时间,推荐大家都可以学习一下.
同时,也可以通过ECLIPSE内置的升级功能,对默认版本的ECLIPSE的插件进行升级和扩充:
帮助软件更新查找并安装
Lomboz下载,安装,配置
Lomboz&Eclipse可以从http://lomboz.objectweb.org/downloads/download.php下载到,下载后解压缩(解压缩请注意,不要用默认的解压缩选项,而是将该压缩包直接解到根目录下,不然会存在文件名过长问题)
然后启动Eclipse,即可.(注:该下载包中包含ECLIPSE基础包)
略过后续设置
(MyEclipse的安装与普通软件的安装过程相同)
应用服务器安装
在这里,我们推荐两种服务器软件:TOMCAT和JBOSS.
TOMCAT是阿帕奇组织的著名开源项目,http://tomcat.apache.org/下载最新版本.安装方法也同普通软件相同,安装后运行即可(默认情况下TOMCAT占用系统8080端口,如需要,可通过CONF目录下的server.xml进行修改).正常安装运行后,可以通过http://localhost:8080访问来验证安装是否成功.在这里就不具体介绍TOMCAT的细节了,如果兴趣可以自己网上搜一下帖子.
窗口首选项Tomcat节点,需要对TOMCAT的路径等进行设置.设之后,即可用ECLIPSE直接启动,停止TOMCAT了.
JBoss和Eclipse师出同门,最初都是IBM牵头做的,且它的实现和TOMCAT很像,后来走向了"软件免费,支持收费"的模式,个人感觉,其版本更新速度(对新特性的支持速度)比TOMCAT慢,但相对稳定一些(只是感觉上的),其特色"支持收费"由于太穷,从来未曾感受过,也就无从评论了.安装也不困难,下载后解压,我们假设JBOSS_HOME为JBoss的主目录,执行JBOSS_HOME/bin/run.bat,就启动了JBoss服务器.一般会在1分钟左右启动完毕.顺便说一下,现在的JBoss已经改投REDHAT门下了.
(JBoss只丑陋的字符界面,这里就不贴图了)
在 文件新建其他Server 中,可用在ECLIPSE中建立"服务"(供ECLIPSE界面调用,其实质过程是,将TOMCAT或JBOSS的配置文件在ECLIPSE下单独建立一份,然后通过ECLIPSE进行配置.因此,每个服务都是独立的,且我们的对服务的配置工作也将降低)

开发
首先,还是必须要说明,不是开发工作都需要我们安装如上的插件才能在ECLIPSE下进行开发,ECLIPSE非常丰富的开源项目,很多插件的目标相同,方式方法不同,寻找自己觉得合适的才是重点,之所以我们在DOC中向大家介绍Lomboz这个插件,只是因为它是插件集.希望大家在实际开发中多关注ECLIPSE的开源项目,为自己定义出个性化的ECLIPSE.
Web应用
(这里只是一个范例,不代表所ECLIPSE下的WEB应用都是这样开发的,顺便说一下,ECLIPSE中的WEB开发插件,也许应该使用的插件名称叫WTP)
我们先来看一个比较简单的例子:
创建项目:
新建一个JSP文件
ECLIPSE会自动生成一些框架,然后我们填写一些代码进去:
Insert title here
OK,把它放置到TOMCAT目录下WEBAPPS\ROOT目录下,启动TOMCAT,然后在浏览器里输入:
http://localhost:8080/helloWorld.jsp是不是已经开到结果了 
Servlet
从某种意义上来说,Servlet能做的东西,几乎JSP也都能做,最直白的说法是:SERVLET是从JAVA程序中处理业务逻辑并输出HTML;而JSP是在一堆HTML中包含JAVA的业务逻辑.如果你追根溯源,可以发现,其实在Tomcat\work\Catalina\localhost目录下,就躺着所众多JAVA,CLASS文件,这些文件其实就是TOMCAT将JSP翻译成了JAVA文件,再编译成了CLASS(就是说,TOMCAT将JSP这种脚本程序翻译成了SERVLET程序)
好了,让我们用实例来制作我们的SERVLET吧.通常来说,SERVLET其实就是实现了若干规定方法的JAVA程序,其写法和普通JAVA程序没不同.当我们在浏览器里敲入一个SERVLET的地址,其实就是要触发SERVLET的某个"事件",而该"事件"的响应部分,就是我们写业务逻辑的入口.(浏览器浏览某地址,触发容器,容器触发SERVLET)
刚才已经说了,SERVLET可以以普通JAVA程序的相同写法编写,但为了发布方便(让ECLIPSE帮助我们动态发布,上一个JSP例子是手动拷贝的,这次我们希望ECLIPSE帮助我们处理掉这些工作)
确认你在"应用服务器安装"一节已经将SERVER装上,并配置好,如果配置好请跳入2)

因为我们之前已经安装好TOMCAT或JBOSS,因此,这里不需要过多设置,只需完成即可.
新建一个"动态网站项目"(其本质就是将来网站能够自动发布到TOMCAT(或JBOSS)下)
以上界面分别对应: 项目的名称,项目存储目录,服务器(就是我们刚才建立的),Module Version(Servlet的版本)等等… 点击完成.
这样,我们的动态网站已经建立起来了.通过右键项目的运行为,就可以动态发布网站了(当然,现在网站里什么都没)
3)新建SERVLET,填写SERVLET的 CLASS NAME(注意看它的SUPERCLASS,这就是用来响应外部访问时,激活事件的父类)如果你愿意深入下去,那么可以点击"下一步",会深入的告知你SERVLET和外部访问之间的配置关系.

看看我们已经获得的JAVA构建的代码框架里些什么:
程序默认的IMPORT了一些必要的类包,然后在构造函数中,将父类初始化了一下.
public class FSS extends javax.servlet.http.HttpServlet implementsjavax.servlet.Servlet {
public FSS() {
super();


接着,我们可以看到两个方法 doGet 和 doPost,这两个方法就是用来响应外部HTTP请求的,通过这两个方法,我们可以触发业务逻辑.例如,我们在doGet里加些代码.
protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
PrintWriter out = response.getWriter();
out.println("Hello Servlet");

protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{
// TODO Auto-generated method stub

}
OK,让我们发布吧.通过以下四部,我们已经可以通过浏览器查看到结果了.
EJB
如果各位熟悉JavaBean,那么Ejb的概念还是比较好接收的.其写法其实和Servlet相差无几,用向导来新建EJB.然后,EJB会要求你实现若干方法,逐一实现即可.如果要深入的学习EJB,恐怕不是一两个月能够弄得明白得,这里我们只能来讲一下它的概念和大概的写法.
首先,EJB的最大好处是:它能够通过统一的容器(如JBOSS)访问,来进行跨进程,跨计算机的组件,业务逻辑访问,最后,统一从一个容器中返回结果.最明显的例子是:跨行转账,从A银行需要进行扣款,B银行需要到帐,那么他们之间的这项业务的底层操作,可能就和适合用EJB的方式来构建.EJB是基于Java的远程方法调用(RMI)技术的,所以它可以被远程访问(跨进程,跨计算机).但EJB必须被布署在诸如Webspere,WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问.EJB容器是EJB组件的代理,EJB组件由容器所创建和管理.客户通过容器来访问真正的EJB组件.
EJB 包括三种主要类型:会话 bean(stateless session bean),实体bean和消息驱动的bean(Message-DrivenBean).会话bean执行独立的,解除耦合的任务,譬如检查客户的信用记录.实体bean是一个复杂的业务实体,它代表数据库中存在的业务对象.消息驱动的bean用于接收异步JMS消息.
一下是我们通过ECLIPSE的想到建立的EJB的结构,我们可以清晰的看到,其框架是在继承了若干类后要求我们实现一部分的方法.
详细的学习,还是大家去找些更明确的资料来学习,这里就不详细描述了.
WebService 
来说说我们的WebService虽然从严格意义上,WebService并不属于J2ee的主体范畴,但鉴于它的广泛应用,以及其基于XML和AXIS等这些基础,了解WebService对我们深入的学习J2EE还是一定的借鉴意义的.
WebService解决了通过互联网这个异常松散的结构来建立接口的问题,其本质就是互联网上的接口(其实像这样的技术如:Rmi,dCom[当然,dCom从概念上更像EJB]在多年前就已经存在了,个人认为WEBSERVICE只是因为其"生得逢时"而已)
首先,请大家从GOOGLE上了解一下XML以及AXIS的基础知识,我们在这里就不详细描述了,只是简单这样描述:XML--对接口内容,定义进行描述;AXIS--接口之间得简单传输协议.
安装了MYECLIPSE或Lomboz都已经符合我们开发WebService的要求了.
因为WebService的最终布置过程,是和网站类似的,因此我们可以通过"Servlet"这一章节的建立项目的方式作为我们开始的第一步.(静态网址也可,动态网站更好)
然后编写一个,还方法的类(这个类将作为远程调用的接口,最简单,我们可以直接在里面写一个HelloWorld方法)
然后,我们建立一个WEBSERVICE:
在上一个界面中,选择(就是我们之间写的类的名称)
点击"完成"之后,网站和WEBSERVICE都已经制作完成.
接下来就要发布了,如果是静态网站,那么就需要你自行手动将网站配置到TOMCAT或JBOSS下.
如果是动态网站,那么MYECLIPSE和Lomboz发布方法略不同,各位可以参见"Servlet"章节里面的内容.
一旦发布成功(启动Tomcat或JBOSS后),我们可以通过浏览器访问http://localhost:8080/应用名称/service来查看服务列表.
当然,如果你点击旁边的[WSDL],可以看到如下的内容,它也是我们接下来会讲的
这些内容看似晦涩,但我们不必要完全理解,我们只需要知道:
它是一个XML
它被命名成了WSDL
将它交给同等网络(我们这里发布的是局域网,所以,在局域网内是同等网路,如果你发布到互联网,那么全世界的人都能访问到它)上的其他用户,他们就能访问到你的接口
好了,既然我们开发这个接口是希望别人使用的,那么WSDL自然要交给别人.和新建WebService的方法类似,我们可以用向导来创建一个WSDL:
然后,随便你通过什么方式,将这个东西交给需要调用的人,就由他来处理把.
让我们角色转换一下,现在,假设我们收到了一份WSDL,需要调用WSDL指定的接口:

过程差不多,只是和刚才从"提供方法的类"――>到"WSDL"的过程相反,是从"WSDL"――>到"调用方法的类".
需要特别指明的是,如果你是在自己的机器上进行的测试,最好另建一个测试项目(形式无所谓,最方便的是WEB应用),这样能避免代理类重名等问题.
此时,我们来看看我们的测试项目中,将前一个项目的类引入(但,其内容不同,只是名字一样).这些类,我们称之为"代理类"其中包含了所上一个项目所提供的类,方法.因此,当我们需要使用上一项目所提供的某一方法时,直接用相同名称指定它即可,而代理类会自动的去同等网络里找到其实质方法.
如果你愿意,你可以在测试项目中新建一个JSP或JAVA类,其内容就是调用代理类中的helloworld方法,你会发现,一旦你运行了你的测试项目,它就会去上一项目中寻找并调用其helloworld方法了.
Struct
Struts 已经成为了用 Java 创建 Web 应用的一个最流行的框架工具,Struts 所实现的 MVC 模式给 Web应用带来了良好的层次划分,同时也提供了一系列的工具来简化 Web 应用的开发.
Client browser(客户浏览器) 
来自客户浏览器的每个 HTTP 请求创建一个事件.Web 容器将用一个 HTTP响应作出响应. 
Controller(控制器) 
控制器接收来自浏览器的请求,并决定将这个请求发往何处.就 Struts 而言,控制器是以 servlet 实现的一个命令设计模式.struts-config.xml 文件配置控制器. 
业务逻辑 
业务逻辑更新模型的状态,并帮助控制应用程序的流程.就 Struts 而言,这是通过作为实际业务逻辑"瘦"包装的 Action类完成的. 
Model(模型)的状态 
模型表示应用程序的状态.业务对象更新应用程序的状态.ActionForm bean在会话级或请求级表示模型的状态,而不是在持久级.JSP 文件使用 JSP 标记读取来自 ActionForm bean的信息. 
View(视图) 
视图就是一个 JSP 文件.其中没流程逻辑,没业务逻辑,也没模型信息-- 只标记.标记是使Struts 别于其他框架(如Velocity)的因素之一. 
如果你愿意,MYECLIPSE里已经带STRUCT开发包了,你可以尝试一下,但Lomboz似乎没带,我们只能自行下载了,这里选用EasyStruts这个插件(http://sourceforge.net/projects/easystruts) ――EasyStruts暂不支持高版本的ECLIPSE 这里我们选用StrutsIDE作为开发工具.
http://amateras.sourceforge.jp/cgi-bin/fswiki_en/wiki.cgipage=StrutsIDE
与该站点下载 tk.eclipse.plugin.struts_2.0.0.zip(最新版,但我的主机无法安装)
可能还需要下载tk.eclipse.plugin.htmleditor_2.0.2.zip;GEF 这两种包,具体也请自己斟酌版本.
1)当然,首先下载该插件,然后拷贝到ECLIPSE的plugins里,启动ECLIPSE.
2)新建一个TOMCAT项目,然后加入对STRUTS的支持:
"File" -> "New" -> "Other ...".->Amateras-> "Struts"-> Add Struts Support"
StrutsIDE 自动生成Struts's JAR , TLD, struts-config.xml 和 web.xml,点击完成.
3)此时,你已经可以在项目中见到一堆XML文件了,这些都是STRUTS的配置文件.我们可以通过上述类似的方式建立STRUTS的控制层(VIEW)JSP;后台业务逻辑(Model)通常是JAVA程序;然后通过系统已经为你生成好的控制层(CONTROLLER)Servlet和XML配置文件将两者连接起来.
如下图:让我们能够在图形化的界面中编辑JSP,动作之间的关系.
Struts知识还是比较深入的,通常,JSP程序员,页面程序员的进阶形态就是编写STRUTS程序,而后是JSF,当然,JSF目前的流行程度实在让人失望,也就因此没必要讲了.
小结
本文是沧海一栗,且不少地方是值得斟酌.只是希望大家能够通过本文对ECLIPSE 和J2EE的开发一个认识,并且能够通过本文档,将两者结合起来,跨出第一步.今后的学习将艰难的多,因为当今的应用不单要对以上一些技术本身熟知即可,也同时要对开发平台的特性,使用,操作方法所知(比如,版本的控制,程序格式的控制,快速的编写代码,系统自动校验等)