`
icyheart
  • 浏览: 777540 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSF+Spring+Hibernate整合要点

    博客分类:
  • JSF
阅读更多

最近一直在用这个框架,现在来就它们的整合要点来做一个总结。jsf与spring结合的时候在service层spring对jsf进行注入,下面来看看配置文件。

web.xml

<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
	//关联jsf
    <listener>
        <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
    </listener>
	//关联spring
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    //关联jsf的核心配置文件
    <context-param>
        <param-name>javax.faces.CONFIG_FILES</param-name>
        <param-value>
             /WEB-INF/tiles-faces-config.xml,
            /WEB-INF/conf/jsf/user-faces-config.xml
        </param-value>
	//关联页面上要用到的下拉菜单
    <context-param>
        <param-name>tiles-definitions</param-name>
        <param-value>
			/WEB-INF/conf/jsf/user-tiles.xml
        </param-value>
    </context-param>
	//关联spring配置文件
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/conf/spring/*.xml
        </param-value>
    </context-param>
	//从地址栏匹配符合条件的内容,用Faces Servlet进行控制
	<servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>

	<welcome-file-list>
        <welcome-file>Login.jsf</welcome-file>
    </welcome-file-list>
</web-app>

  tiles-faces-config.xml这个文件里面的内容是写在face-config.xml文件中的,如果就一个face-config.xml文件,可以将以下内容写入face-config.xml文件中,但是当有多个时,为了避免重复的代码就单独提了出来

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
                              "http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
 <application>
  <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
 </application>
</faces-config>

 user-tiles.xml

<!DOCTYPE tiles-definitions
        [
                <!ELEMENT component-definitions (definition+)>
                <!ELEMENT tiles-definitions (definition+)>
                <!ELEMENT definition (put*, putList*)>
                <!ATTLIST definition
                        name CDATA #REQUIRED
                        pages CDATA #IMPLIED
                        path CDATA #IMPLIED
                        extends CDATA #IMPLIED
                        role CDATA #IMPLIED
                        template CDATA #IMPLIED
                        controllerClass CDATA #IMPLIED
                        controllerUrl CDATA #IMPLIED>
                <!ELEMENT put (#PCDATA)>
                <!ATTLIST put
                        name CDATA #REQUIRED
                        value CDATA #IMPLIED
                        type (string | pages | template | definition) #IMPLIED
                        content CDATA #IMPLIED
                        direct (true | false) #IMPLIED>
                <!ELEMENT putList ( (add* | item* | bean* | putList*)+) >
                <!ATTLIST putList
                        name CDATA #REQUIRED>
                <!ELEMENT putListElements (add | item | bean)>
                <!ELEMENT add (#PCDATA)>
                <!ATTLIST add
                        value CDATA #IMPLIED
                        type (string | pages | template | definition) #IMPLIED
                        content CDATA #IMPLIED
                        direct (true | false) #IMPLIED>
                <!ELEMENT bean (#PCDATA)>
                <!ATTLIST bean
                        classtype CDATA #REQUIRED>
                <!ELEMENT item (#PCDATA)>
                <!ATTLIST item
                        value CDATA #REQUIRED
                        link CDATA #REQUIRED
                        classtype CDATA #IMPLIED
                        icon CDATA #IMPLIED
                        tooltip CDATA #IMPLIED>
                ]>

<tiles-definitions>//这个标签和web.xml中的param-name相对
    <definition name="/Login.tiles" extends="layout.busitemplateLogin">
        <put name="body" value="/pages/Login.jsp"/>
    </definition>

    <definition name="/user/UserManager.tiles" extends="layout.busitemplate">
        <put name="body" value="/pages/user/UserManager.jsp"/>
    </definition>
   
</tiles-definitions>

 user-faces-config.xml在这个文件里面页面与类就要实现关联了,而且在这里实现jsf与spring的注入整合

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
        "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
    <managed-bean>
        <managed-bean-name>user_loginBB</managed-bean-name>
        <managed-bean-class>com.user.web.LoginBackingBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
        <managed-property>
            <property-name>userucc</property-name>
            <value>#{user_userManageUCC}</value>//与spring进行注入
        </managed-property>
    </managed-bean>

    <managed-bean>
        <managed-bean-name>user_userManagerBB</managed-bean-name>
        <managed-bean-class>com.user.web.UserManagerBackingBean</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
        <managed-property>
            <property-name>usermanageucc</property-name>
            <value>#{user_userManageUCC}</value>//与spring关联进行注入
        </managed-property>
    </managed-bean>
    
    <navigation-rule>
        <from-view-id>/user/UserInfoEdit.jsp</from-view-id>//从哪个页面来
        <navigation-case>
            <from-outcome>userlist</from-outcome>//根据bean中return的字符串跳向指定的页面
            <to-view-id>/user/UserManager.jsf</to-view-id>
        </navigation-case>
    </navigation-rule>
    
</faces-config>

 user-applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    <bean id="user_loginlogdao" class="com.user.dao.LoginLogDAO">
        <property name="hibernatetemplate">
            <ref bean="hibernateTemplate"/>
        </property>
    </bean>

    <bean id="user_logservice" class="com.user.service.LoginLogService">
        <property name="loginlogdao">
            <ref bean="user_loginlogdao"/>
        </property>
     </bean>

    <bean id="user_userManageService" class="com.user.service.UserManageService">
        ...可以在这里写入要注入的东西
    </bean>

    <!--ucc-->
    <bean id="user_userManageUccImpl" class="com.user.ucc.impl.UserManageUCC">
        <property name="usermanageservice">
            <ref bean="user_userManageService"/>
        </property>
        <property name="logservice">
            <ref bean="user_logservice"/>
        </property>
    </bean>
       
    <!--proxy-->//实现注入
    <bean id="user_userManageUCC" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="proxyInterfaces">
            <list>
                <value>com.user.ucc.IUserManageUCC</value>
            </list>
        </property>
        <property name="target" ref="user_userManageUccImpl"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="transactionAttributeSource" ref="namingTransactionAttribute"/>
    </bean>
</beans>

 关于所涉及到的类和页面就不多写了,这里主要是看看jsf和spring的配置文件是如何进行关联的。

分享到:
评论
7 楼 bluemusic 2009-12-04  
jansel 写道
JSF 只能配合tiles吗?能不能配合sitemesh呢? 一直觉得sitemesh比较好用。



tiles不清楚


sitemesh可以用,以前要修改个文件重新打包才能用,现在不知道能不能直接用。
6 楼 bengan 2009-12-03  
爲什麽不用faceslet呢
5 楼 a275430349 2009-12-03  
既然用到jsf,为什么不用jpa做opm?都收标准么,
4 楼 icyheart 2009-12-03  
jansel 写道
JSF 只能配合tiles吗?能不能配合sitemesh呢? 一直觉得sitemesh比较好用。

可以搭配sitemesh使用的
3 楼 jansel 2009-12-03  
JSF 只能配合tiles吗?能不能配合sitemesh呢? 一直觉得sitemesh比较好用。
2 楼 icyheart 2009-12-03  
空和灵 写道
为什么一定要用到Spring呢?

这里用到了spring的注入,这只是代码的一部分,还会用到事务之类的
1 楼 空和灵 2009-12-03  
为什么一定要用到Spring呢?

相关推荐

    跟我学spring系列 蒋开涛

    - **Hibernate**:通过Spring提供的`LocalSessionFactoryBean`等组件来整合。 - **MyBatis**:通过Spring MyBatis插件进行集成。 - **JPA**:Spring Data JPA提供了更为简洁的接口来操作数据库。 ### 二、Spring...

    MyEclipse 6 Java开发教程[优化整合版]

    - **Spring与Hibernate整合**:实现Spring对Hibernate的配置管理,提高开发效率。 - **Hibernate框架**: - **对象关系映射(ORM)**:了解ORM的基本概念及其优势。 - **快速开发**:利用MyEclipse内置的工具,...

    Spring3.0MVC中文教程

    - **第7部分**:通过一个整合Hibernate的示例项目,展示如何结合Spring 3.0 MVC和持久层技术。 通过以上各部分的学习,开发者可以从基础到高级逐步掌握Spring 3.0 MVC框架的使用方法和技术要点。

    java工程师求职简历怎么写优秀范文.pdf

    - **开源框架**:Spring+Struts+Hibernate(SSH)的整合能力。 - **设计模式**:列举你能熟练运用的设计模式,如工厂模式、单例模式、MVC等。 - **数据库**:如Oracle和MySQL的编程技术。 - **表现层技术**:JSP...

    DWR中文文档(pdf)

    ##### 4.6 DWR与Hibernate整合 - **整合要点**: - 使用`HibernateBeanConverter`来转换Hibernate实体对象。 - 管理Hibernate的Session,确保线程安全性。 #### 五、DWR中的JavaScript使用技巧 ##### 5.1 简单的...

    myeclilpse使用教程

    - **第十一章:Spring 整合 Struts 和 Hibernate**:介绍了如何使用 Spring 统一管理 Struts 和 Hibernate 的配置,提高开发效率。 - **第十二章:JPA 快速开发**:随着 Java EE 5 规范的推出,JPA 成为一种新的...

    struts2inaction

    #### 四、整合Spring和Hibernate/JPA - **Spring集成**:Struts 2可以与Spring框架无缝集成,利用Spring来管理依赖关系,实现IoC(Inversion of Control,控制反转),从而提高代码的可维护性和可测试性。 - **...

    J2EE框架_笔记_事例_程序

    8. **安全框架整合**:例如Spring Security或Apache Shiro,提供身份验证、授权和会话管理。 这些项目为学习者提供了实战经验,有助于深入理解J2EE框架的各个组成部分及其实际应用场景。通过研究这些项目,开发者...

    java工程师简历范文.pdf

    11. **技术掌握**:熟悉CoreJava编程,能整合SSH框架,应用设计模式,如工厂模式、单例模式等,掌握数据库编程,使用JSP、JSF等表现层技术,了解WebSocket编程和网络协议。 通过以上要点,我们可以看出一份全面且...

Global site tag (gtag.js) - Google Analytics