`
fly.net.cn
  • 浏览: 186867 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java Server Face介绍

    博客分类:
  • JSF
阅读更多

Java Server Face是快速开发web应用的一个框架和解决方案。他改变了以往基于java web应用的request-response处理机制,采用了事件驱动处理机制。这为在java平台上快速开发web应用提供了可能。JSF框架简化了web form有效性检查、request参数解析,状态管理,多线程支持等任务。开发人员只需实现具体的事件处理器和事务逻辑(在JSF中分别称为Handlers和Components)。<o:p></o:p>

在采用JSF框架进行开发时,不需要继承实现JSF的任何API,应用各组件之间的关系通过一个XML(faces-config.xml)配置文件实现。他的实现方式与以往介绍过的Spring框架有些类似。<o:p></o:p>

Java Server FaceMVC架构比较<o:p></o:p>

与现在较为流行的MVC 架构有所不同,JSF在设计结构上并没有将视图和逻辑事务严格的分开,而是依赖于程序设计人员的具体实现。比如Handlers和Components在 实际的开发中可以在一个类中实现,这样就会使视图层和逻辑处理层紧密的偶合在一起。建议在进行JSF项目时应严格要求程序设计人员将Handlers和 Components分离。<o:p></o:p>

<o:wrapblock><v:shapetype coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f" id="_x0000_t75"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype></o:wrapblock>
以下是MVC(以Struts为例)和JSF框架在结构设计上的比较<o:p></o:p>

 <o:p></o:p>


从上图可以看出,MVC和JSF的开发结构有很大的区别。MVC主要关注于开发应用各层的松散偶合;JSF则关注于事件处理。从应用上分析,MVC重视结构的划分而JSF致力于为快速开发提供基础解决方案。笔者建议不能简单的比较两种架构的优劣,应结合实际的开发和应用选择。<o:p></o:p>

Java Server Face的技术实现<o:p></o:p>

JSF框架的实现依赖于以下几种技术:Java Tag LibIoC type2setter and getter,xml

JSF的表示层使用Tag lib技术处理webform object

使用IoC type2xmlform object和具体的handlercomponent关联起来

Java Server Face的示例<o:p></o:p>

示例应用需求说明:实现一个用户管理功能,要求将视图层、逻辑层、数据访问层分开,降低各层的偶合度。<o:p></o:p>

<o:wrapblock><v:shape type="#_x0000_t75" style="margin-top: 18.2pt; z-index: 2; left: 0px; margin-left: 0px; width: 415.5pt; position: absolute; height: 430.5pt; text-align: left;" id="_x0000_s1027"><v:imagedata src="file:///F:/DOCUME%7E1/ADMINI%7E1/LOCALS%7E1/Temp/msoclip1/04/clip_image003.wmz" o:title=""></v:imagedata><w:wrap type="topAndBottom"></w:wrap></v:shape></o:wrapblock>
下图是示例的简单类图,其中数据层采用DAO+Hibernate技术<o:p></o:p>

 <o:p></o:p>


UserForm代码:<o:p></o:p>

package jsfdemo.forms;<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

/**<o:p></o:p>

 * Created date:2004-8-19<o:p></o:p>

 * @author genstone<o:p></o:p>

 *<o:p></o:p>

 */<o:p></o:p>

public class UserForm<o:p></o:p>

{<o:p></o:p>

    private String username;<o:p></o:p>

    private Long userid;<o:p></o:p>

    private String password;<o:p></o:p>

    <o:p></o:p>

    /**<o:p></o:p>

     * @return Returns the username.<o:p></o:p>

     */<o:p></o:p>

    public String getUsername()<o:p></o:p>

    {<o:p></o:p>

        return username;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @param username The username to set.<o:p></o:p>

     */<o:p></o:p>

    public void setUsername(String username)<o:p></o:p>

    {<o:p></o:p>

        this.username = username;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @return Returns the password.<o:p></o:p>

     */<o:p></o:p>

    public String getPassword()<o:p></o:p>

    {<o:p></o:p>

        return password;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @param password The password to set.<o:p></o:p>

     */<o:p></o:p>

    public void setPassword(String password)<o:p></o:p>

    {<o:p></o:p>

        this.password = password;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @return Returns the userid.<o:p></o:p>

     */<o:p></o:p>

    public Long getUserid()<o:p></o:p>

    {<o:p></o:p>

        return userid;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @param userid The userid to set.<o:p></o:p>

     */<o:p></o:p>

    public void setUserid(Long userid)<o:p></o:p>

    {<o:p></o:p>

        this.userid = userid;<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

 <o:p></o:p>

UserHandler代码:<o:p></o:p>

package jsfdemo.handlers;<o:p></o:p>

 <o:p></o:p>

import jsfdemo.components.BaseComponent;<o:p></o:p>

 <o:p></o:p>

/**<o:p></o:p>

 * Created date:2004-9-20<o:p></o:p>

 * @author genstone<o:p></o:p>

 *<o:p></o:p>

 */<o:p></o:p>

public class UserHandler<o:p></o:p>

{<o:p></o:p>

    private BaseComponent component;<o:p></o:p>

    <o:p></o:p>

    /**<o:p></o:p>

     * @return Returns the component.<o:p></o:p>

     */<o:p></o:p>

    public BaseComponent getComponent()<o:p></o:p>

    {<o:p></o:p>

        return component;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @param component The component to set.<o:p></o:p>

     */<o:p></o:p>

    public void setComponent(BaseComponent component)<o:p></o:p>

    {<o:p></o:p>

        this.component = component;<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public void save()<o:p></o:p>

    {<o:p></o:p>

        component.save();<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public void delete()<o:p></o:p>

    {<o:p></o:p>

        component.delete();<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public void modify()<o:p></o:p>

    {<o:p></o:p>

        component.modify();<o:p></o:p>

    }<o:p></o:p>

}<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

UserComponent代码:<o:p></o:p>

package jsfdemo.components;<o:p></o:p>

 <o:p></o:p>

 <o:p></o:p>

import net.sf.hibernate.HibernateException;<o:p></o:p>

 <o:p></o:p>

import jsfdemo.beans.UserInfo;<o:p></o:p>

import jsfdemo.daos.BaseDAO;<o:p></o:p>

import jsfdemo.forms.UserForm;<o:p></o:p>

import jsfdemo.util.ValueObejctUtil;<o:p></o:p>

import util.Logger;<o:p></o:p>

 <o:p></o:p>

/**<o:p></o:p>

 * Created date:2004-9-20<o:p></o:p>

 * @author genstone<o:p></o:p>

 *<o:p></o:p>

 */<o:p></o:p>

public class UserComponent implements BaseComponent<o:p></o:p>

{<o:p></o:p>

    private UserForm userForm =null;<o:p></o:p>

    private BaseDAO dao = null;<o:p></o:p>

    <o:p></o:p>

    /**<o:p></o:p>

     * @return Returns the userForm.<o:p></o:p>

     */<o:p></o:p>

    public UserForm getUserForm()<o:p></o:p>

    {<o:p></o:p>

        return userForm;<o:p></o:p>

    }<o:p></o:p>

    /**<o:p></o:p>

     * @param userForm The userForm to set.<o:p></o:p>

     */<o:p></o:p>

    public void setUserForm(UserForm userForm)<o:p></o:p>

    {<o:p></o:p>

        this.userForm = userForm;<o:p></o:p>

    }<o:p></o:p>

    <o:p></o:p>

    public boolean save()<o:p></o:p>

    {<o:p></o:p>

        UserInfo info = ValueObejctUtil.getPersistObject((UserForm)userForm);<o:p></o:p>

        try<o:p></o:p>

        {<o:p></o:p>

            //insert into database<o:p></o:p>

            info.userid = (Long)dao.save(info);<o:p></o:p>

        }<o:p></o:p>

        catch (HibernateException e)<o:p></o:p>

 &n

分享到:
评论

相关推荐

    java server face重定向

    Java Server Faces(JSF)是Java平台上用于构建Web应用程序的MVC(模型-视图-控制器)框架。在JSF中,重定向是常见的页面导航技术,它将用户从一个页面引导到另一个页面,通常在处理完某个请求或事件后执行。重定向...

    JSF Java Server Faces (JSF)框架

    JSF(Java Server Faces)技术为开发基于网络用户界面的Java开发者提供了标准的编程接口API以及标签库。就像Struts框架一样,JSF定义了一套JSF标签 JSF的全称  1、Joint Strike Fighter (JSF)  2、Java Server ...

    java server face 教程

    通过上述知识点的详细介绍,我们可以看出JavaServer Faces (JSF) 不仅提供了一种灵活的方式来构建动态Web应用程序,还通过其丰富的标签集和强大的后端支持,极大地简化了开发者的开发过程,使得网页设计人员、应用...

    core of javaserver face

    JavaServer Faces(JSF)是Java平台上用于构建企业级Web应用程序的一个强大框架。它是一个Model-View-Controller(MVC)架构的实现,为开发人员提供了丰富的组件库、事件处理机制以及可扩展的架构,旨在简化用户界面...

    JavaServer Faces 2.0, The Complete Reference源码

    《JavaServer Faces 2.0, The Complete Reference》这本书全面介绍了JSF 2.0框架,提供了详细的指南和实践案例,帮助开发者深入理解和应用这一技术。源代码通常包括书中所讲解的各种示例和实例应用,这对于读者理解...

    JavaServer Faces 核心编程(第二版)源码

    JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的官方标准组件模型和视图框架。这个【标题】"JavaServer Faces 核心编程(第二版)源码"指的是一个关于JSF技术的书籍——《JavaServer Faces核心编程》的第...

    JavaServer Faces核心编程(第3版) 源码

    JavaServer Faces(JSF)是Java平台上用于构建Web应用程序的官方标准框架,它提供了一种组件化、事件驱动的方式来创建用户界面。《JavaServer Faces核心编程(第3版)》是一本深入探讨JSF技术的专业书籍,源码的提供...

    JSF(Java Server Faces)学习日记

    **JSF(Java Server Faces)** 是一种Java技术,用于构建Web应用程序的用户界面。它是一种组件化的MVC(Model-View-Controller)框架,旨在简化开发过程,提高开发效率。JSF提供了一系列预定义的UI组件,允许开发者...

    Java.Server.Faces编程(中文).part4(免分)

    Java.Server.Faces编程(中文).part4 最后一个

    JSF ppt课件 java serve face

    JavaServer Faces(JSF)是Java平台上的一种用于构建用户界面的服务器端框架,它主要用于开发Web应用程序。这个“JSF ppt课件”很显然是为了帮助学习者深入理解JSF的核心概念和技术。以下是对JSF的一些关键知识点的...

    Java.Server.Faces编程.part1

    0资源分 Java.Server.Faces编程.part1

    Java.Server.Faces编程.part2

    0资源分 Java.Server.Faces编程.part2

    Java.Server.Faces编程.part3

    0资源分 Java.Server.Faces编程.part3

    Java.Server.Faces编程.part4

    0资源分 Java.Server.Faces编程.part4

    百度人脸识别windows java离线sdk

    在压缩包文件“baidu-face-sdk-master”中,可能包含了SDK的源码、库文件、开发文档、示例代码等资源。开发者可以通过阅读文档和示例,快速了解如何使用这个SDK。 总的来说,百度人脸识别Windows Java离线SDK为...

    基于Oracle ADF的校园OA系统的设计与实现.pdf

    Java Server Face(JSF)是一种基于Java的Web应用程序开发框架,在Oracle ADF中可以与JSF集成,提供了一个快速开发和实施的解决方案。 七、结论 基于Oracle ADF的校园OA系统的设计与实现可以提高学校的管理效率和...

    myfaces-jsf-api-1.0.9.jar

    Java Server Face Api 1.0.9

    解决libarcsoft_face.dll:Cant‘t find dependent library报错

    解决libarcsoft_face.dll:Cant‘t find dependent library报错,相关文章:https://blog.csdn.net/chw0629/article/details/122557038

    java调用第三方dll心得.docx

    - 注意在运行Java应用程序时,确保`face.dll`与Java可执行文件在同一目录下,或者将其路径添加到系统路径中。 7. **问题与解决方案**: - 在开发过程中可能会遇到类型匹配、内存管理、异常处理等问题。例如,Java...

    Web Face Based JavaEE Tech 4

    2. **JSP(JavaServer Pages)**:JSP是Servlet的一种扩展,提供了一种更简单的视图层开发方式。开发者可以在HTML页面中嵌入Java代码,使得页面更具动态性。JSP最终会被编译为Servlet执行。 3. **JSF(JavaServer ...

Global site tag (gtag.js) - Google Analytics