J2EE新手入门图解
副标题#e#
许多人都知道J2EE,但有几多人真正知道它的寄义呢?简朴的说,J2EE是一套贸易应用系统模子可能说是一种类型,它包括java长途要领挪用(RMI)、企业级javaBean(EJB)、java动静处事(JMS),java处事器页面(JSP)等等。操作J2EE的资源我们可以利便、迅速的建设一个强大的企业级应用,好比电信的收费系统,企业的常识打点系统等。你大概会想,开拓这么强大的系统,必然需要大量的投资吧?其实否则,我们操作现有的网络找就可以找到免费甚至是开源的部件,再将他们组装成一个可用的系统。我们的方针是空手起家!虽然买电脑的钱你得本身掏:
本文以下列组件为例来构建我们的J2EE系统。请各人留意各组件的版本号,不然大概呈现组件间的兼容问题:底层数据库用mySQL3.23.35,EJB和Web处事器用Jboss3.2.3,而开拓情况我们选用最近很风行的eclipse2.1+lomboz2.1.3。
下面我们就来一步一步设置好开拓J2EE所需的各部门组件,而且实际建设一个实体EJB挪用底层数据库中的内容,并用一个JSP页面将其显示出来
一、 安装与设置
1.首先我们需要的是SUN的JDK,去SUN的网站(http://java.sun.com/)上看看,找到最新的JDK,把它下载返来。然后将其释放到到一个利便的目次里,好比说D:\worktools\jdk1.4。右健单击"我的电脑"选择"高级"->"情况变量"如图一所示:
(图一)
情况变量分为两个部门:上面是用户变量区;下面是系统变量区。在用户变量区中,我们新建一个名为JAVA_HOME的变量,它的值指向适才生成的JDK的目次,好比D:\worktools\jdk1.4,下文我们用%JAVA_HOME代指。新建建一个CLASSPATH值为%JAVA_HOME\LIB;%JAVA_HOME\TOOLS.JAR;在系统变量区中,我们对PATH这个情况变量举办修改,添加一个值%JAVA_HOME\bin,中间";"离隔。ok,一路确定下来,至此我们便搞定了一切JAVA开拓的基本—-JDK的配置。(本文以WINXP为例,若利用WIN9X系统则配置需要重启一下计较机)
2.险些所有的企业级应用都需要数据的存储系统,我们也将利用一个台甫鼎鼎的开源数据库:mySQL。.本文利用的版本是mySQL3.23.35,各人可以到mySQL的网站(http://www.mysql.com)去下载。
安装mySQL很是简朴,解开下载下来的压缩包,运"SETUP.EXE",一路"Next"便可搞定,发起将其安装在C:\MYSQL中。安装完毕后,在MYSQL\BIN中有一个名为"WINMYSQLADMIN.EXE"的措施。运行这个措施,输入你的用户名和暗码(本身设定)后,MYSQL就已经可以用了。此刻你可以同过它的默认用户名"ROOT"暗码为空来哄骗数据库。
#p#副标题#e#
3.对数据库的操纵一般有两种方法,一种是节制台;另一种是图形化操纵。简朴起见,我们选用后一种方法。而选择的软件是mySQL-Control-Center0.9.4,它也是mysql Group出品的,最大的利益就是免费!我们在mysql的网站上下载安装mysql-cc后,会在桌面上生成一个快捷方法。我们由此进入mysql-cc,用户名"ROOT"暗码为空,默认的端标语为"3306",主机名添入"localhost"。确定后,右健选择毗连。此刻我们就可以哄骗本身的mysql数据库了。
(图二)
利用EJB的目标就是要以一种工具的方法哄骗底层的数据,所以我们要先成立本身的底层数据。如图三所示,右健单击MYSQL-CC左侧的“databases”,选择"new",起名为“mytest”。
(图三)
在新建的数据库基本上,我们在成立一个数据表。如图四所示,新增两个字段"id"、"context",范例均为"varchar",生存的时候起名为"myejb"。
(图四)
打开适才建好的数据表中添加几个数据,"id"依次为1,2,3;"context"与"id"为应为"time","blank","talk"。
4.是我们的应用处事器JBoss进场的时候了。从JBoss的sourceForge的子项目(http://sourceforge.net/projects/jboss/)下载Jboss3.2.3。把它解压到某个文件夹下,好比D:\worktools\Jboss3.2.3。将个中的\docs\examples\jca下的mysql_ds.xml拷贝到\server\default\deploy中,用记事本打开举办编辑。有几项修改如图五所示:
(图五)
生存今后,将其重定名为"mytest-ds.xml",这就是我们编写EJB时要用到的数据源。
#p#分页标题#e#
由Jboss毗连我们的mySQL数据库,需要用到mySQL的JAVA驱动措施。我们照旧得从mySQL的主页上下载mysql-connector-java-3.0.11-stable。解压这个压缩文件包,从中提取mysql-connector-java-3.0.11-stable-bin.jar,将其放入Jboss目次下的\server\default\lib目次中,并把这个文件重定名为mySQL.jar。
5.至此,我们就可以举办实际的开拓了。大概你会问,那用什么来编辑我们的措施呢,难到用Windows自带的记事本吗?虽然可以!可是各类繁琐、反复的操纵很倒霉于我们新手的生长。我们需要的是一个集成开拓东西(IED)来辅佐本身处理惩罚一些初级的操纵,迅速编写出一个可用的系统,提高我们进修J2EE的信心。比及对J2EE相识的更深入相识今后,我们回过甚来再用一个文本编辑东西编写每个所需的文件,然后编译、陈设,可以迅速提高本身的程度。
这里我向各人推荐一款优秀的开拓东西,就是前面提到过的Eclipse。其实它自己可以想象成一个很友好的框架,通过向个中安装各类兼容的插件,来到达我们各式百般的开拓需求。你要知道,它的靠山但是IBM阿,但对付我们更重要的是它完全免费,我们甚至可以开拓本身的插件!
从Eclipse主页(http://www.eclipse.org)下载Eclipse2.1,然后到www.objectlearn.org下载Lomboz2.1.3,这是开拓J2EE进程中的一个强大的Eclipse插件。首先解压Eclipse和Lomboz,再把由Lomboz压缩包生成的com.objectlearn.jdt.j2ee和com.objectlearn.jdt.j2ee.editors这两个文件夹拷贝到Eclipse主目次下\plugins文件夹中。运行Eclipse,选择"Windos"->"customize perspective..."。如图六所示:
展开所有节点,选中所有有关lomboz的选项,然后点击"ok"。(图六)选择"Window"->"preference"。单击lomboz,在JDK Tolls .jar中选择你的jdk目次下的\lib\tools.jar,点击Apply。因为我们的应用处事器选择的是支持热陈设的JBoss,所以确保Restart Server After Depoly选项没有被选中。如图七所示,在左边展开lomboz这个选项,选中Server Definition.在Server types中我们选择JBoss 3.2.x。而Application Server Directoty和Classpath Variable中同样的选择JBoss的主目次,并点击Apply。
(图七)
照旧在"Window"->"preference",展开java类,选择New Project在Source and output folder中我们将其改成folders,如图八所示。
(图八)
点击apply,最后点击ok。
呼呼~长出一口吻吧,至此我们已经把开拓J2EE系统所需的所有软件都安装设置好了。喝杯茶,顿时开拓我们的第一个EJB!
二、 开拓第一个EJB
EJB2.0类型中界说了3种企业Bean。别离为会话Bean(Session Bean)、实体Bean(Entity Bean)和动静驱动Bean(Message Driven Bean)。会话Bean模仿一个商务进程;实体Bean模仿商务数据;而动静驱动Bean与会话Bean雷同也是在模仿一个商务进程,但动静驱动Bean只接管动静的挪用。
本文着重先容如何快速开拓一个实体Bean。因为会话Bean相对简朴,在领略了实体Bean后,本身很容易就能编写出来。而动静驱动Bean在用到的时候学也不迟。
1. Eclipse中,运行"file"-> "new"-> "project"选择Lomboz J2EE Project。在project name中填入我们的工程名"EJBTest"。点击next后,会呈现java setting的对话框,我们不做任何修改,直接next。在这一步,我们将成立一个EJB的模块。如图九所示,在ejb Module选项卡中,我们新建一个名为myEJB的EJB Module。
(图九)
然后在Targent Server中,选择我们方才设置好的Jboss3.2.x。add今后再选择finish,我们工程就成立好了。
2. 此刻用Lomboz的领导来生成我们EJB,选择"file"-> "new"->"Lomboz EJB Creation Wizard"。如图十所示:
(图十)
在package 中填入包名,好比"Rip.ejb.cmp";在name中,我们给这个EJB起个名字,好比"mytest"。Select EJB Type选项里,选择"Container Managed Entity EJB",表白要建设一个由容器打点的实体EJB。如图十一所示
(图十一)
这一步中我们要声明数据表名称,数据源名称,以及表中各个字段。参照图十二:
#p#分页标题#e#
将各项内容填入相应的处所。留意,每添加一个字段都要点击add一次,将其放入下方的已插手的字段列表中。最后选中id这一字段,点击Make Primary Key,将其标志为主健。个中,table name项对应着我们先前在mySQL中成立的数据表myejb;datasource对应着我们在jBoss中设定的数据源mytest-ds.xml。
点击finish后,就可以在左侧src目次下Rip.ejb.cmp包中找到并打开我们方才生成的mytestBean.java(mytest后的Bean是Lomboz自动添加的)文件。找到ejbCreate()要领,添加两个字符串型的输入变量"id"和"context,并添加两个要领setId(id)和setContext(context),详细实现如图十三:
(图十三)
假如变动进程中呈现载入包可能捕获异常的错误,单击错误标记,选择载入或直接抛出异常即可。
这个新成立的EJB需要被放入一个模块中才可以被装载、执行。如图十四所示:
(图十四)
右健点击mytestBean.java,选择lomboz J2EE...->Add EJB to Module,再在适才成立的myEJB这个模块前打勾,点击ok后,便实现了装载。一个完整的实体EJB是由多个差异坚守的文件组合起来的,但这里它们由加了标签的mytestBean.java自动生成。所利用的是XDoclet技能,感乐趣的读者可以到网上去搜索一下,有许多的相关先容,我们就不再先容详细细节了。如图十五所示:右健点击myEJB这个模块,选择lomboz J2EE...->Generate EJB Classes。
(图十五)
显示乐成之后,在ejbsrc目次下的Rip.ejb.cmp包中,你就可以看到mytestHome.java等六个文件。在mytest这个模块下面的META-INF文件夹中,有很多xml文件。个中,jboss.xml、jbosscmp-jdbc.xml和ejb-jar.xml是陈设EJB最要害的三个设置文件。而我们现阶段需要变动的只是jbosscmp-dbc.xml这个文件,它描写了对数据源的描写,其他的文件都已经过lomboz 设置好了。我们将这个文件的相关部门修改为:
<jbosscmp-jdbc>
<enterprise-beans>
<defaults>
<datasource>java:/mytestDS</datasource>
<datasource-mapping>mySQL</datasource-mapping>
<preferred-relation-mapping>foreign-key</preferred-relation-mapping>
</defaults>
<enterprise-beans>
其他部门不做改变。至此,我们完成了所有的EJB开拓事情。右健点击myEJB这个模块,选择lomboz J2EE...->Deploy Module将这个模块装载随处事器中。然后,选择lomboz J2EE...->Debug Server运行处事器。万事俱备,只欠挪用!
三、 EJB的挪用-利用JSP显示数据
此刻我们将利用JSP作为业务层和暗示层来挪用EJB,将一些数据存储到数据库中,并把数据库里已有的数据全部打印到客户端的欣赏器上。
1. 如上文先容过的,我们再成立一个名为"myEJB"的Web模块。target Server照旧选择我们设置好的Jboss3.2.x,确定后将生成一个myWeb的目次。
2. 打开myWeb的目次,将以下的代码替换掉index.jsp的原有代码。
<%@ page import="javax.ejb.*"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.ejb.*"%>
<%@ page import="Rip.ejb.cmp.*"%>
<%@ page import="java.util.*"%>
<%@ page import="java.rmi.RemoteException"%>
<html>
<head>
<title>Welcome Every body,This is my firstEJB for qiqi</title>
</head>
<body>
<center><%
/*初始化系统的上下文,并查找jidi名为mytestBean的实体Bean*/
InitialContext Context = new InitialContext(System.getProperties());
mytestHome Home = (mytestHome) Context.lookup("mytestBean");
try {
/*挪用EJB的Create()要领在在数据库中生成数据,假如你不需要挪用EJB时在底层数据库中发生数据,则不需要挪用Create()要领*/
mytest myBean = Home.create("18","Hello,I am Rip");
/*按照前面的界说,findAll()要领将返回myejb表中的所有数据;假如你想利用差异的find要领,好比要返回id<5的数据,你可以编写本身的finder要领。*/
Collection col = Home.findAll();
String outString = "";
/*利用轮回的方法遍历所有的数据,并把它们打印出来*/
Iterator it = col.iterator();
while(it.hasNext()){
mytest element =(mytest)it.next();
outString = element.getId()+":"+element.getContext()+"<br>";
out.println(outString);
}
/*捕获并抛出给中异常*/
} catch (RemoteException e) {
e.printStackTrace();
} catch (CreateException e) {
e.printStackTrace();
} catch (FinderException e){
e.printStackTrace();
}
%></center>
</body>
</html>
3. 右健点击myWEB这个模块,选择lomboz J2EE...->Deploy Module将这个WEB模块装载随处事器中。
#p#分页标题#e#
4. 打开欣赏器,在地点栏中输入"http://localhost:8080/myWEB/index.jsp"。假如一切顺利的话,将可以看到如同图十六 的页面输出。
(图十六)
至此,我们就竣事了这次对J2EE的入门进修。
四、 竣事语
全文来看,真正在EJB开拓上面花的工夫较量少,仅仅几行代码罢了,所以EJB很适合应用系统的快速开拓。但是,EJB从降生以来就是一项重量级的应用,尤其是利用长途挪用(为了说明问题,本文利用的就是这种要领),大量的利用了系统的资源。所以在一般环境下,利用当地接口可以大大的淘汰对资源的利用。可能,你还可以利用其他O-R映射组件,好比说Hibernate等等。
由于篇幅有限,笔者不行能将所有大概呈现的错误息争决步伐一一罗列出来,如有任何意见或问题,请发送email到我的邮箱kknd0669@sina.com。