摘 要 在分析Java EE5.0规范最新推出的Web层框架JSF1.2和EJB层框架EJB3.0结构的基础上,提出了基于Java EE的Web框架与组件的集成方案,并设计该方案下的教学质量测评系统的体系结构。最后结合课堂测评子系统开发实例,探讨了JSP2.1+JSF1.2+EJB3.0开发模式在高校教学测评系统实现过程中的应用。
关键词 POJO;JSF1.2 ;EJB3.0;持久层;质量测评 1 引言 质量问题是高等教育发展的生命线。在高等教育竞争十分激烈的情况下,保证和提高教育质量是一所学校可持续发展的基本保障。因此要根据不同院校的特点,在正确的评估目的下,依据教学过程的特点、学校与学生对教师素质与发展的需要,开发一套合理的教学质量测评体系势在必行。 SUN公司最新推出的JSF1.2这个新的表现层框架和一套以注释为基础的EJB编程模型EJB3.0,并引入了新的Java Persistence标准,这是一套基于Java EE的基本架构[1]。以JSF1.2+EJB3.0的集成模式开发的教学质量测评系统,从用户界面表现层到业务逻辑控制层,再到数据对象持久层,提供了Java EE的一站式解决方案,为系统的实现、维护与移植提供了高度的灵活性和可靠性。两类框架的融合能很好的兼顾开发效率与维护成本,具有极高的实用价值,同时两者均为Web应用框架并且都遵循Servlet规范,也为二者的整合提供了基础。2 Java EE的核心技术
2.1 JSF1.2
JavaServer Faces(JSF)是一项使用Java技术来快速构建Web应用程序的新的框架[2]。JSF主要包括两大方面的内容:一个API集合,用来表示用户接口组件、管理组件的状态、处理事件和验证输入、定义页面间的导航以及支持国际化;一个JSF的自定义标签库,用来在JSP页面中显示JSF接口。其中API集合是JSF的核心组成部分。 在Web开发方面,JSF基于事件及UI组件模型的开发方式颠覆了传统的web开发习惯,结合开发工具的支持,使其更接近于一个真正的MVC编程环境。使用JSF开发表现层现在看起来更象Swing编程,基于UI组件的模型能够把web界面定制的很多工作独立出来,厂商可以针对具体的目标定制更多更好用的组件。2.2 EJB3.0
在EJB3.0[3]里,任何类型的企业级Bean只是一个加了适当注释的简单Java对象(POJO),这就减少了在创建EJB时所需的类、接口、部署描述符的数量,注释可以用于定义bean的业务接口、O/R映射信息、资源引用信息。EJB 3.0通过用纯旧式Java对象(POJO)取代抽象bean类,用纯旧式Java接口(POJI)取代组件与主接口(Component & Home),也不必实现业务接口,简化了EJB的开发过程。2.3 Java Persistence API 1.0( EJB3 Entity Bean)
在Java EE5中,开发了通用持久化规范Java Persistence API 1.0代替以前规范中的Entity Bean[3],其实就是完全重新定义了的Entity Bean规范(目前在很多场合中,由于历史原因仍然使用ejb3持久化来称呼这个规范)。JPA作为java中负责关系数据持久化的组件已经完全独立出来成为一个单独的规范,而不再属于EJB的范畴。JPA可以说是java持久化技术的一个集大成者,它吸取了Hibernate、JDO、TopLink等优秀技术和框架,将这几年发展成熟起来的基于POJO模型的O/R Mapping技术标准化,成为在java中通用的API。2.4 JSF与EJB的集成
系统架构的实现方式有很多的选择,基于JSF1.2和EJB3.0框架的集成,使用MVC结构和POJO技术能够更容易开发松散耦合的组件。backing bean和EJB在功能上有一定程度的并列关系,只是backing bean适用于小型系统、EJB适用于大型系统的开发。 包含JSF标签的JSP页面是表示层,Faces Servlet提供了controller的功能,将JSF中的属于Bean角色的Backing Bean作为EJB与UI的接口,其作用是在真正的业务逻辑Bean及UI组件之间搭起桥梁。而另一面的EJB容器则成为MVC模式中的Model层,其中会话bean执行独立的、解除耦合的任务,譬如检查客户的信用记录;消息驱动bean用于接收异步JMS 消息,随后这些消息由应用程序来处理;实体bean已经升级为独立的持久层框架(即JPA1.0),应用O/R Mapping技术处理与数据库之间的业务,通过EntityManager对实体(Entity)的操作的定义包括持久化,查询,删除等。如图所示:
3 集成JSF1.2与EJB3.0的教学质量测评系统的体系结构
图2:系统的体系结构图
4 系统的开发与实现
下面以课堂教学测评子系统为例,对系统的开发过程进行说明,系统的开发工具使用NetBean5.5,配置环境使用glassfish(免费,开源的Java EE5应用服务器,支持EJB 3.0, JSF 1.2,Servlet 2.5, JSP2.1, Java Persistence 1.0)+ant服务模式,后台数据库采用Oracle10g,使用数据库库连接池技术,jndi名为campusjndi,JSP2.1+JSF1.2+EJB3.0总体开发模式。4.1 数据库的设计
campus为全局数据库名,下设若干个表,包括学生信息表(student)、教师信息表(teacher)、课程信息表(course)、留言板信息表(lyb)、记分表(mark)等。4.2 视图的设计
视图层是一些加入JSF标签的JSP文件,每个文件都加入下面三条语句以引入JSF自定义标签库,并且声明page属性: <%@ taglib uri="http://java.sun.com/jsf/html"prefix= "h"%> <%@ taglib uri="http://java.sun.com/jsf/core"prefix= "f"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix= "c"%> 登陆界面login.jsp,主界面index.jsp,打分界面mark1.jsp、mark2.jsp(简写为1-2),学生界面student.jsp(1-5),教师界面teacher.jsp(1-5),管理员界面administer.jsp(1-3),留言板界面lyb.jsp(1-3),连接数据库conn.jsp,文件头head.jsp,文件尾tail.jsp等。其中以login.jsp文件为例加以说明,部分代码如下:. . .<f:view> <h:form id=“loginform”> <h2>Please enter your username and password</h2> Username : <h:inputText id=“input_username”value #{userBean.username} required=“true”/><br> <!一一把输人的信息放人模型(javabean)-一!> <h:message for= “input_username”/></br> . . . </h:form></f:view> 注释部分说明了View是如何与Model和Controller关联的。. . .4.3 控制器的设计
需要配置Web应用程序的web.xml文件,加入以下内容:放置在campus/WEB-INF/web.xml:<servlet> <servlet-name> Faces Servlet </servlet-name> <servlet-class> javax.faces.webapp.FacesServlet </servlet-class> <load-on-startup> 1 </load-on-startup></servlet><servlet-mapping> <servlet-name> Faces Servlet </servlet-name> <url-pattern> /login/* </url-pattern></servlet-mapping>在本应用程序中,将该faces-config.xml用于bean管理和页面导航的配置,放置在campus/WEB-INF/faces-config. xml:. . .<faces-config> <navigation-rule> <from-view-id>/pages/index.jsp</from- view-id>
[8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />
4.4 模型设计
EJB 3.0会话bean类指定了系统的业务方法,可使用元数据注释来指定bean类型,即使用@Stateful和@Stateless来分别指定有状态或无状态。也可在一个会话bean中用一个业务接口来取代组件与主接口,因为业务接口是一个POJI,所以可用@Local和@Remote来指定其为本地或远程类型,而一个会话bean可同时实现本地与远程接口。可以看出下面的POJO取代了EJB以前版本中的home接口。 以打分模块为例,其中实现了两个业务方法add和getNumber,add方法就是对班级提交的测评分取平均值(供模糊算法使用),getNumber方法用来获取平均值。 这个例子主要有4个文件: StuCounter.java:业务接口;StuCounterBean.java:业务实现类; jndi.properties:jndi属性文件,提供访问jdni的基本配置属性(略);Build.xml:ant配置文件,用以编译、发布、测试、清除EJB(略)。l StuCounter.java . . .@Remotepublic interface StuCounter{ public int add(int class[]); public int getNumber();}l StuCounterBean.java. . .@Statelesspublic class StuCounterBean implements Counter{ . . . StudentCounter sc=new StudentCounter(); private int average = 0; public int add(int class[]) { for(int i=0; i<class.lenth; i++) { average=(average+sc.class[i])/class.lenth; //u为指标数组 } return average; } . . . //得到当前的计数 public int getNumber() { return average; } . . .}4.5 持久层的设计
在EJB3.0中开发实体Bean非常简单,同开发一般的java bean一样,只需做少量的注释。一个实体bean不需要实现Home接口或者Remote、Local接口。实体Bean通过EntityManager产生、查找、和持久层结合、从持久层收回等操作。 下面的例子主要实现了管理学生提交测评分数的功能。Student是一个实体Bean,管理学生的基本信息(姓名和各课分数),其中学生提交的测评分数又是一个实体Bean。StuCounterBean是一个无状态的会话Bean,用来调用实体Bean。Student.java:实体Bean;Counter.java:实体Bean;StudentBean.java:会话Bean的实现类jndi.properties:jndi属性文件,提供访问jdni的基本配置属性(略);Build.xml:ant 配置文件,用以编译、发布、测试、清除EJB(略)。l Student.java . . .@Entity@Table(name = "STUDENT")public class Student implements Serializable{ private EntityManagerFactory emf; private EntityManager em;private int id; //主键 private String name; //学生名 private Counter counter; //学生的分数 @Id(generate = GeneratorType.AUTO) //主键自动产生 public int getId() { return id; } public void setId(int id) { this.id = id; } void saveCounter(Counter counter) { EntityTransaction tx=em.getTransaction(); tx.begin(); em.persist(counter); tx.commit(); } User getUser(String s) { return (User)em.find(User.class,s); } . . . @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "student_id") . . .5 结束语
通过使用规范里UI组件、注释和POJO等新技术,采用JSF1.2与EJB3.0集成的方法减轻了开发人员进行底层开发的工作量,而且开发和设计过程层次分明、结构简单。依据本文提出的JSF1.2、EJB3.0框架和新的持久层规范JPA集成的设计思路,成功的开发了教学质量测评系统。这套基于Java EE技术架构的解决方案从运行性能来说,支持大并发量的用户访问,具有较快的响碰速度;从维护性能来说,具有良好的可变更性、可移植性和可重用性。参考文献
[1] JCP Expert Group.JSR-244(java EE5.0)[S/OL] . /d/file/p/2024/0424/detail JCP Expert Group.JSR-252(JSF1.2)[S/OL] . /d/file/p/2024/0424/detail JCP Expert Group.JSR-220(EJB3.0)[S/OL] . /d/file/p/2024/0424/detail /> [8]电大学习网.免费论文网[EB/OL]. /d/file/p/2024/0424/fontbr />相关文章:
IP传真的分析与改进04-26
宽带门户网站身份认证系统设计04-26
连锁销售决策支持系统解决方案研究04-26
基于RBF神经网络的四声自动识别及应用04-26
基于网页结构挖掘算法研究04-26
在J2ME/MIDP中实现图像旋转04-26
Web日志挖掘在网络远程教学中的应用04-26
多媒体农业专家系统构建平台的实现与研究04-26
基于Agent的分布式数据库异构消解策略04-26
一种硬实时调度算法的可行性判定及实现04-26