J2EE总结

发布时间 : 星期日 文章J2EE总结更新完毕开始阅读

JavaServer Faces(JSF)

JSF是RAD框架(MVC框架),JSF规范本身是MVC规范,它的目的是使网页开发更方便快捷,它提倡以页面组件的方式隐藏传统web应用开发的HTTP细节(代替request,response,makeup)。

Model1模式:JSp身兼view和controller两种角色,将控制逻辑和表现逻辑混杂在一起,导致代码重用性非常低

Model2:servlet作为前段控制器(C),负责接收客户端发送的请求,然后调用javabean(M)来完成实际的逻辑处理,最后转发到相应的JSp(V)页面处理显示逻辑

经典的MVC模式:把多个视图注册到同一个模型,当模型发生改变时,模型向所有注册过的视图发送通知,接下来,视图从对应的模型中获得信息,然后完成视图显示的更新

JSF与传统的MVC框架的不同点在于:JSF不再基于请求--响应,它是以事件响应机制来进行通信的,它可以将视图页面的UI组件状态绑定到托管bean,也可以通过视图页面中UI组件的事件来触发托管bean的方法。FacesServlet是JSF的核心控制器

JSF请求的基本配置:一个标准的web container---Tomcat,以及一个JSF框架的实现---MyFaces

基础的JSF由以下组成:

用UI控件定义的web页面

Faces-config.xml----用于定义web页面之间的导航规则 Managed bean 和backing bean

Helper object如event listener,validators,converters等注册在组件上的 Web.xml---注册FacesServlet和它的mapping JSF是由自定义的JSP标签综合成的

Renderer:盖属性指定一个条件表达式,只有当该值为true时该组件才会被绘制出来。renderer可以对应多个UI控件,一个UI控件可以对应多个renderer Validatoe:负责确保输入合法,由服务端控制

Backing beans:包含用户想要收回的属性以及操纵UI的event listener方法

一个view可以有多个backing bean。backing bean经常与模型对象交互,但不直接与UI控件绑定

Converters:将对象转化成字符串或字符串转化为对象 Navigation:导航

/login.jsp

success /mainmenu.jsp

failure /login.jsp

JSF请求处理生命周期:一旦请求被JSF服务端接受就开始生命周期

1.restore view恢复视图阶段:为选定的视图找到或者创建组件树。在此阶段,某些组件,如HtmlCommandButton,将产生动作事件(或者其他类型事件)。 2.Apply request values应用请求值阶段:更新组件的值,使之等于请求中发送的值,可能需要使用转换器。如果出现错误将添加转换错误。 3.Progress validations处理输入校验阶段:每一个组件进行自我验证(可以包含外部验证器),要报告验证错误。

4.Update model values更新模型的值阶段:更新与组件相关的后台bean或者模型对象的值。要报告转换错误。 5.Invoke application调用应用阶段:调用注册的动作监听器,默认的动作监听器也可以执行由命令组件引用的动作方法,并选择下一个要显示的视图

6.Render response生成响应阶段:使用当前的显示技术,显示相应的视图 UI组件存在于两个地方 服务端(UI组件作为组件树对象,通过component identifier得到UI组件)和客户端(如HTML,通过client identifier得到UI组件,client identifier连接服务端和客户端)

UIViewRoot:不显示任何东西,不能直接与backing bean绑定,可以通过facescontext访问 Managed-bean

可以包含零到多个managed-bean-property,一个map-entries或者一个list-entries 表示bean的存活范围,设定为 (1)request:存活于请求阶段(存活周期最长)

(2)Session:从使用者应用程序交互式开始,到浏览器关闭或显式地结束对话 (3)Application:一开始就存在,直到应用程式关闭为止 (4)None:会在需要的时候生成一个bean(存活周期最短)

?? ??

?? ??

#{另外一个managed bean名字}//指向一个生命周期比它长的managed bean

JSF主要由4种类别组成:application,context,event handling,UI component

EJB(EnterPrise Java Bean):它作为java EE(J2EE)的核心规范,不仅是一种优秀的组件技术(是一系列的java接口),而且还是java EE其他规范的具体应用

EJB2中:

Object接口:提供客户端视图

Local接口:继承javax.ejb.EJBLocalObject

Remote接口:继承javax.ejb.EJBObject,抛出异常java.rmi.RemoteException Home接口:提供类似于factory的作用,创建一个Object对象的引用 Local home接口:继承javax.ejb.EJBLocalHome

Remote home接口:继承javax.ejb.EJBHome,抛出异常java.rmi.RemoteException EJB3中用@remote和@local来标注

EJB容器负责处理如事务、访问控制管理等系统级的问题,而EJB开发者则集中精力去实现业务逻辑

EJB有三种类型的bean

会话bean:代表一个可处理应用中业务逻辑的完整组件,主要包含实现各种业务逻辑的代码

功能:并发和线程安全;方便的web service支持;事务和安全管理;timer服务和拦截机 Stateful bean:它会使用一个或多个实例变量来记录客户端状态。在客户端多次调用某个sessionbean的方法时,只要客户端一直保持着该sessionbean的引用,那么该bean就可以在多次调用之间维护这种会话状态;但是一旦客户端断开与该session bean的连接,那该bean将丢失与该客户端的会话状态

Stateless bean:无须维护与客户端之间的会话状态,因为不需要定义实例变量。EJB容器可以将无状态的session bean分配给任何客户端 开发session bean应该遵循如下设计规范

#至少有一个业务接口,可以是local,也可以是remote接口,(分别用@local和@remote标注)还可以同时提供两个

#它的bean类不能是抽象类,也不能是final修饰的,因为EJB容器会对该bean进行操作 #session bean的bean类必须提供无参数的构造函数,若开发者没有为它提供任何构造器,系统会提供

#session bean 的bean类可以是任何其他类的子类 #业务方法最好不要以ejb开头

JNDI(java naming and directory Interface):一个为java客户端提供对naming和directory结

构的访问的系统,为不同的directories提供一个相同的接口

Naming services(命名服务):为计算机系统内的对象起名字,并建立关联,允许通过名字对对象进行访问

Directory services(目录服务):是命名服务的扩展,不仅要保存名称和对象之间的关联,还要保存对象的属性,这样就允许开发者对属性进行操作(增删改查) Binding(绑定):为对象起名字 Context:一组绑定关系的集合

JPA(java persistent API):把对实体的操作转换为对数据库的操作 ORM:对象/关系数据库映射

实体:用@Entity标记,必须声明一个主键,必须提供一个无参构造函数,为每个属性提供setter和getter方法

Field-based persistence:统一声明为public或者private,@id声明在主键前面 @Entity

public class Category { @Id

public Long id;

public String name;

public Date modificationDate; public Category() {}}

Property-based persistence:通过get和set方法,@id声明在get方法前面 @Entity

public class Category { ...private Long id;... @Id

public Long getId() {return this.id;} public void setId(Long id) {this.id = id;} ...}

在@Entity后,添加@idClass表示可以有多个@id

New:实体尚未与entitymanager关联

联系合同范文客服:xxxxx#qq.com(#替换为@)