J2EE开发文档.docx
《J2EE开发文档.docx》由会员分享,可在线阅读,更多相关《J2EE开发文档.docx(32页珍藏版)》请在冰豆网上搜索。
J2EE开发文档
西安研发中心
神州数码(中国)有限公司金融本部
密级:
普通
J2EE开发文档
文档编号:
当前版本:
作者:
影像工作流项目组
编写日期:
2006-08-14
评审:
评审日期:
审核:
审核日期:
批准:
批准日期:
文档状态:
草稿版
变更次数:
Allrightsreserved
版权所有,XX
文档修订记录
章节编号
版本号
修订内容简述
修订日期
作者
1
初始建立。
2006-08-14
目录
1简介6
1.1编写目的6
1.2背景6
1.2.1任务的提出6
1.2.2使用者6
2J2EE平台7
2.1简介7
2.2J2EE规范的四个层次7
2.3J2EE的主要应用技术8
2.4J2EE各应用技术之间的关系9
2.5J2EE各应用程序体系结构9
3表示层开发11
3.1工程文件目录结构11
3.2jsp编程11
3.3javascript编程13
3.3.1定义一个不带参的方法13
3.3.2定义一个带参的方法13
3.3.3询问对话框,有确定和取消按纽14
3.3.4提示对话框,只有确定14
3.4js编程14
3.5Servlet技术16
4业务逻辑层开发19
4.1EJB组件19
4.2.1定义主接口,必须继承EJBHome20
4.2.2定义远程接口,必须继承EJBObject20
4.2.3实现业务逻辑,必须实现SessionBean接口21
4.2.4ejb-jar.xml内容22
4.2.5打包成.jar文件23
5数据执久化24
5.1不使用连接池连接数据库24
5.2使用连接池连接数据库25
5.3JNDI技术25
5.4XML技术26
6发布27
6.1在Tomcat下发布27
6.2在Weblogic下发布28
7任务29
8案例29
9编码31
10部署31
1简介
1.1编写目的
该文档主要是为让初学者能快速的了解基本J2EE的开发和部署,包括Html、Jsp、Servlet、JavaScript、JavaBean、Ejb。
1.2背景
依据该文档开发人员可以快速的进行影像工作流项目的开发。
1.2.1任务的提出
影像工作流项目组
1.2.2使用者
该文档主要提供Java初学者使用。
2J2EE平台
2.1简介
J2EE(Java2Platform,EnterpriseEdition)是SUN公司定义的一个开发分布式企业级应用的规范。
它提供了一个多层次的分布式应用模型和一系列开发技术规范。
多层次分布式应用模型是指根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的组件容器中运行(如Servlet组件在Servlet容器上运行,EJB组件在EJB容器上运行),容器间通过相关的协议进行通讯,实现组件间的相互调用。
遵从这个规范的开发者将得到行业的广泛支持,使企业级应用的开发变得简单、快速。
2.2J2EE规范的四个层次
1.客户端层(ClientTier)
客户端层用来实现企业级应用系统的操作界面和显示层。
另外,某些客户端程序也可实现业务逻辑。
可分为基于Web的和非基于Web的客户端两种情况。
基于Web的情况下主要作为企业Web服务器的浏览器。
非基于Web的客户层则是独立的应用程序,可以完成瘦客户机无法完成的任务。
2.Web层
为企业提供Web服务。
包括企业信息发布等。
Web层由Web组件组成。
J2EEWeb组件包括JSP页面和Servlets。
Web层也可以包括一些JavaBeans。
Web层主要用来处理客户请求,调用相应的逻辑块,并把结果以动态网页的形式返回到客户端。
3.业务层(BusinessTier)
业务层也叫EJB层或应用层,它由EJB服务器和EJB组件组成。
一般情况下许多开发商把Web服务器和EJB服务器产品结合在一起发布,称为应用服务器。
EJB层用来实现企业级信息系统的业务逻辑。
这是企业级应用的核心,由运行在业务层中的EJB来处理。
一个Bean从客户端接收数据、处理,然后把数据送到企业信息系统层存储起来。
同样,一个Bean也可以从企业信息系统取出数据,发送到客户端程序。
业务层中的EJB要运行在容器中,容器解决了底层的问题,如事务处理、生命周期、状态管理、多线程安全管理、资源池等。
4.企业信息系统层(EnterpriseInformationSystemtier)
处理企业系统软件,包括企业基础系统、数据库系统及其他遗留的系统。
J2EE将来的版本支持连接架构(ConnectorArchitecture)。
它是连接J2EE平台和企业信息系统层的标准API。
业务层和Web层共同组成了三层J2EE应用的中间层,其他两层是客户端层和存储层或企业信息系统层。
2.3J2EE的主要应用技术
为实现企业级分布式应用,J2EE定义了丰富的技术标准,符合这些标准的开发工具和API为开发企业级应用提供支持。
这些技术涵盖数据库访问、分布式通信、安全等。
为分布式应用提供支持的多方面。
(1)组件技术
J2EE的核心思想是基于组件/容器的应用。
每个组件提供了方法、属性、事件的接口。
组件可以由多种语言开发。
组件是可以重用的、共享的、分布的。
(2)Servlets和JSP
Servlets用来生成动态页面或接收用户请求产生相应操作(调用EJB)。
JSP基于文本。
通过容器产生相应的Servlets,使内容和显示分开。
J2EE中提供了ServletAPI,用于创建Servlets。
(3)EJB技术
EJB规范提供了一种开发和部署服务器端组件的方法。
每个EJB是按功能逻辑划分的,开发时不必关注系统底层细节问题,只关注具体的事务分析。
EJB开发完毕后,按规范部署在EJB容器,完成相应的事务功能。
EJB支持分布式计算。
真正体现了企业级的应用。
(4)数据库访问
无论是传统的企业信息系统还是将来的企业信息系统,数据库都占有重要的地位。
开发分布式系统要求数据库访问具有良好的灵活性和扩展性。
JDBC(JavaDatabaseConnectivity)是一个独立于特定的数据库管理系统的开发接口。
它提供一个通用的访问SQL数据库和存储结构的机制,支持基本SQL功能的一个通用底层的应用程序编程接口。
它在不同的数据库界面上提供了一个统一的用户界面。
提供了多种多样的数据库连接方式。
J2EE中提供了JDBCAPI使多种数据库操作简单、可行。
(5)分布式通信技术
分布式通信技术是分布式企业系统的核心技术。
J2EE框架为Web应用和EJB应用提供多种通信模式。
为了使运行于某一机器上的对象调用另一台机器的对象,J2EE实现了如下通信方式:
JavaRMI(RemoteMethodInvoke):
远程方法调用。
JavaRMI实现Java对象间的远程通信。
服务器用注册器把一个名字和远程对象绑在一起,客户机通过名字从服务器注册器上查找远程对象,找到后下载远程对象的本地代理,调用远程对象的方法。
JavaIDL(JavaInterfaceDefilationLanguage):
接口定义语言。
可以实现Java对象的符合CORBA规范的远程对象通信。
JNDI(JavaNamingandDirectoryInterface):
Java命名和目录接口。
JNDI为分布式系统访问远程对象提供了一个标准的命名接口。
EJB主接口对象、数据源、消息服务器等都可以用JDNI树的形式注册到名称服务器中,调用它们的对象通过符合JDNI的程序接口在JNDI名称服务器中查找指定名称的远程对象。
JMS(JavaMessageService):
Java消息服务。
为开发消息中间件应用程序定义了一套规范。
Java客户端和Java中间层访问消息系统只要实现JMS定义的简单的接口,就可以实现复杂的应用,而不必去关注低级的技术细节。
2.4J2EE各应用技术之间的关系
■View---------表示层:
显示输入输出数据,由JSP,HTML页面‚JavaScript组成。
(.jsp文件).
■Model-------业务逻辑和数据层:
基于输入和定义业务流程,执行计算和其它其它操作。
由JavaBean,Ejb等实现(.java文件).
■Controller---控制层:
调用View和Model在它们之间传递数据,一般用Servlet来实现(.java文件).
■Database----执久化层:
jdbc来实现,提供了访问数据库的各种接口.
2.5J2EE各应用程序体系结构
Sun设计J2EE的初衷是为了解决两层模式的弊端。
在传统的两层模式中,客户端担当了过多的角色而显得臃肿。
在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可扩展性也不理想,而且经常基于某种专有的协议——通常是某种数据库协议,它使得重用业务逻辑和界面逻辑非常困难。
现在,J2EE的多层企业级应用模型将两层化模型中的不同层面切分成许多层,一个多层化应用能为不同的服务提供一个独立的层。
J2EE典型的结构分为四层:
●运行在客户端机器上的客户层组件(Clienttier)。
●运行在J2EE服务器上的Web层组件(Webtier)。
●运行在J2EE服务器上的商业逻辑层组件(Businesstier)。
●运行在EIS服务器上的企业信息系统(Enterpriseinformationsystem)层软件(EIStier)。
其中第二层和第三层合称为中间层(Middletier)。
其架构如图2-1所示。
图2-1J2EE典型架构
Fig.2-1J2EEtypicalarchitecture
3表示层开发
3.1工程文件目录结构
3.2jsp编程
<%@pagecontentType="text/html;charset=GBK"%>
<%@pageimport="com.demo.util.Encoding"%>
<%
//在jsp页面上嵌入了一段java代码,得到从上个页面转过来Username属性的值.
StringUsername=Encoding.encodingUnicode(request.getParameter("Username"));
%>
::
:
FileNet:
:
:
.
//下面是一段javascript代码
functionsub(ddd)
{
if(ddd==1)
document.thisform.but.value="LaunchWorkFlow";
if(ddd==2)
document.thisform.but.value="DealWorkFlow";
document.thisform.submit();
}
…
…
//下面这句是一个form表单,其中loginDirect.jsp是要转向的页面.
//下面这句是增加一个隐藏按纽,目的是在javascript中给它赋值
当前用户:
<%=Username%>
|
|
(1)"name="Submit"value="发起流程">
(2)"name="Submit"value="处理流程">
|
history.go(-1);"class=buttonvalue="退出">
|
3.3javascript编程
JavaScript代码必须写在以前和之间
如下所示:
3.3.1定义一个不带参的方法
functionsub1()
{
//定义变量
varsub;
if(sub==1)
//给隐藏按纽赋值
document.thisform.but.value="LaunchWorkFlow";
if(sub==2)
//取出属性name2的值赋给属性name1
document.thisform.name1.value=document.thisform.name2.value;
//提交本页面
document.thisform.submit();
}
3.3.2定义一个带参的方法
functionsub2(ddd)
{
if(ddd==1)
//给隐藏按纽赋值
document.thisform.but.value="LaunchWorkFlow";
if(ddd==2)
//取出属性name2的值赋给属性name1
document.thisform.name1.value=document.thisform.name2.value;
//提交本页面
document.thisform.submit();
}
3.3.3询问对话框,有确定和取消按纽
functiondel(){
varbo=confirm("您确认执行删除操作么?
");
if(bo)
{
document.thisform2.submit();
}
}
3.3.4提示对话框,只有确定
functiondel(){
alert(“删除发生错误!
”);
}
3.3.3将一个java变量赋给一个JavaScript变量
functionpages()
{
varpagei=<%=page1.getTotalPage()%>;
document.all.pageNumber.value=pagei;
document.thisform.submit();
}
3.4js编程
js文件是指将一些公用的JavaScript方法和插件专门定义到一个文件中,比如:
comm.js
如果要用到某个方法或插件时,只需要将你的js文件引用到你jsp页面上,然后就可以调用这些方法和插件了。
例:
新建一个comm.js文件,内容如下:
functionisEmpty(theStr)
{if((theStr==null)||(Trim(theStr).length==0))
returntrue
elsereturn(false);
}
该方法的作用是:
当变量theStr为null或者长度为0时,返加true;否则返回false;
新建一个test.jsp文件
<%@pagecontentType="text/html;charset=GBK"%>
functioncheckdata()
{
if(isEmpty(document.thisform.Username.value))
{
alert("用户工号必须输入");
document.thisform.Username.focus();
returnfalse
}
if(isEmpty(document.thisform.Password.value))
{
alert("密码必须输入");
document.thisform.Password.focus();
returnfalse
}
returntrue;
}
FileNet系统登录
|
|
帐号:
|
密码:
|
|
3.5Servlet技术
JavaServlet是一项服务器端技术,它接收来自Web浏览器的HTTP请求并返回HTTP响应。
首先,请求被提交给Servlet引擎,然后,Servlet引擎执行适当的Servlet,访问响应对象,并向客户端返回一个响应。
Servlet是一种小型的Java程序,它扩展了Web服务器的功能。
作为一种服务器端的应用,当被请求时开始执行,这和CGIPerl脚本很相似。
Servlet和CGI脚本的一个很大的区别是:
每一个CGI在开始的时候都要求开始一个新的进程,而Servlet是在Servlet引擎中以分离的线程来运行的。
因此Servlet在可伸缩性上提供了很好的改进。
在开发Servlet的时候,您常常需要扩展javax.servlet.http.HttpServlet类,并且override一些它的方法,其中包括:
service():
作为dispatcher来实现命令-定义方法。
doGet():
处理客户端的HTTPGET请求。
doPost():
进行HTTPPOST操作。
其它的方法还包括处理不同类型的HTTP请求。
以上描述的是标准J2EEServletAPI的各种方法。
WebLogic服务器提供了一个该API完整的实现途径。
一旦你开发了一个Servlet,你就可以在weblogic.properties中加以注册并由此可以在WebLogic服务器中对它进行配置。
//servlet的基本框架如下:
packagecom.demo.servlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassloginServletextendsHttpServlet{
publicvoidinit()throwsServletException{
//你所要实现的程序代码…
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse){
//你所