jsf集成spring_JSF – PrimeFaces和Hibernate集成项目

本文详细介绍了一种使用JSF、PrimeFaces和Hibernate进行项目开发的方法。从搭建环境到实现数据库操作,通过具体实例展示了如何在Java应用中整合这些技术。

jsf集成spring

本文介绍了如何使用JSF,PrimeFaces和Hibernate开发项目。 下面是一个示例应用程序:

二手技术:

JDK 1.6.0_21
Maven的3.0.2
JSF 2.0.3 PrimeFaces 2.2.1 Hibernate3.6.7 MySQL Java连接器5.1.17 MySQL 5.5.8 Apache Tomcat 7.0

第1步:创建用户表

通过执行以下脚本来创建新的USER表:

CREATE TABLE USER (
   id int(11) NOT NULL,
   name varchar(45) NOT NULL,
   surname varchar(45) NOT NULL,
   PRIMARY KEY (`id`)
);

步骤2:建立已完成的专案

创建一个Maven项目,如下所示。 (可以使用Maven或IDE插件创建)。

步骤3:图书馆

JSF,Hibernate和依赖库添加到Maven的pom.xml中。 这些库将由Maven中央存储库下载。

<!-- JSF library -->
<dependency>
   <groupId>com.sun.faces</groupId>
   <artifactId>jsf-api</artifactId>
   <version>2.0.3</version>
</dependency>
<dependency>
   <groupId>com.sun.faces</groupId>
   <artifactId>jsf-impl</artifactId>
   <version>2.0.3</version>
</dependency>
<dependency>
   <groupId>javax.servlet</groupId>
   <artifactId>jstl</artifactId>
   <version>1.2</version>
</dependency>
<!-- Hibernate library -->
<dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-core</artifactId>
   <version>3.6.7.Final</version>
</dependency>
<dependency>
   <groupId>javassist</groupId>
   <artifactId>javassist</artifactId>
   <version>3.12.1.GA</version>
</dependency>
<!-- MySQL Java Connector library -->
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.17</version>
</dependency>
<!-- Log4j library -->
<dependency>
   <groupId>log4j</groupId>
   <artifactId>log4j</artifactId>
   <version>1.2.16</version>
</dependency>

注意:primefaces-2.2.1.jar也可以通过maven或以下链接下载:

<repository>
   <id>prime-repo</id>
   <name>PrimeFaces Maven Repository</name>
   <url>http://repository.primefaces.org</url>
   <layout>default</layout>
</repository>  

<dependency>
   <groupId>org.primefaces</groupId>
   <artifactId>primefaces</artifactId>
   <version>2.2.1</version>
</dependency>

要么

http://www.primefaces.org/downloads.html

第4步:创建受管理的豆类

创建一个新的托管bean类。 使用了可以与UI组件关联的bean。 托管Bean包含属性以及getter和setter方法。 此外,它们还可以涵盖事件处理,导航,验证等方法。

package com.otv;

import java.io.Serializable;
import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;

import com.otv.hbm.User;
import com.otv.util.HibernateUtil;

/**
 * @author onlinetechvision.com
 * @since 3 Oct 2011
 * @version 1.0.0
 *
 */
public class UserManagedBean implements Serializable{

 private static final long serialVersionUID = 1L;
 private static Logger log = Logger.getLogger(UserManagedBean.class);
 private static final String SUCCESS = 'success';
 private static final String ERROR   = 'error';
 private String name;
 private String surname;
 private String message;

 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getSurname() {
  return surname;
 }
 public void setSurname(String surname) {
  this.surname = surname;
 }

 public String getMessage() {
  StringBuffer strBuff = new StringBuffer();
  strBuff.append('Name : ').append(this.getName());
  strBuff.append(', Surname : ').append(this.getSurname());
  this.setMessage(strBuff.toString());
  return this.message;
 }

 public void setMessage(String message) {
  this.message = message;
 } 

 public String save() {
  String result = null;
  Session session = HibernateUtil.getSessionFactory().openSession();

  User user = new User();
  user.setName(this.getName());
  user.setSurname(this.getSurname());

  Transaction tx = null;

  try {
   tx = session.beginTransaction();
   session.save(user);
   tx.commit();
   log.debug('New Record : ' + user + ', wasCommitted : ' + tx.wasCommitted());
   result = SUCCESS;
  } catch (Exception e) {
   if (tx != null) {
    tx.rollback();
    result = ERROR;
    e.printStackTrace();
   }
  } finally {
   session.close();
  }
  return result;
 }

 public List<User> getUsers() {
  Session session = HibernateUtil.getSessionFactory().openSession();
  List<User>  userList = session.createCriteria(User.class).list();
  return userList;
 }

 public void reset() {
  this.setName('');
  this.setSurname('');
 }
}

步骤5:建立使用者类别

创建一个新的User类以对User Table建模。

package com.otv.hbm;
/**
 * @author onlinetechvision.com
 * @since 3 Oct 2011
 * @version 1.0.0
 *
 */
public class User {

 private int id;
 private String name;
 private String surname;

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getName() {
  return name;
 }

 public void setName(String name) {
  this.name = name;
 }

 public String getSurname() {
  return surname;
 }

 public void setSurname(String surname) {
  this.surname = surname;
 } 

 @Override
 public String toString() {
  StringBuffer strBuff = new StringBuffer();
  strBuff.append('id : ').append(id);
  strBuff.append(', name : ').append(name);
  strBuff.append(', surname : ').append(surname);
  return strBuff.toString();
 }
}

步骤6:建立新生儿类

创建Singleton HibernateUtil类以构建Hibernate SessionFactory对象。

package com.otv.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

/**
 * @author onlinetechvision.com
 * @since 3 Oct 2011
 * @version 1.0.0
 *
 */
public class HibernateUtil {

 private static SessionFactory sessionFactory = null;

 public static SessionFactory getSessionFactory() {
  if(sessionFactory == null) {
   sessionFactory = new Configuration().configure().buildSessionFactory();
  }
  return sessionFactory;
 }

 public static void setSessionFactory(SessionFactory sessionFactory) {
  HibernateUtil.sessionFactory = sessionFactory;
 }

}

步骤7:创建index.xhtml

index.xhtml已创建。

<html xmlns='http://www.w3.org/1999/xhtml'
     xmlns:h='http://java.sun.com/jsf/html'
      xmlns:f='http://java.sun.com/jsf/core'
     xmlns:p='http://primefaces.prime.com.tr/ui'>  

 <h:head><title>Welcome to JSF_PrimeFaces_Hibernate Project</title></h:head>
 <body>
     <h:form>
      <table>
       <tr>
        <td><h:outputLabel for='name' value='Name:' /></td>
        <td><p:inputText id='name' value='#{userMBean.name}'/></td>
       </tr>
       <tr>
        <td><h:outputLabel for='surname' value='Surname:' /></td>
        <td><p:inputText id='surname' value='#{userMBean.surname}'/> </td>
       </tr>
          <tr>
        <td><p:commandButton id='submit' value='Save' action='#{userMBean.save}' ajax='false'/></td>
        <td><p:commandButton id='reset' value='Reset' action='#{userMBean.reset}' ajax='false'/></td>
       </tr>
      </table>
     </h:form>
</body>
</html>

步骤8:建立welcome.xhtml

welcome.xhtml已创建。

<html xmlns='http://www.w3.org/1999/xhtml'
 xmlns:h='http://java.sun.com/jsf/html'
 xmlns:f='http://java.sun.com/jsf/core'
 xmlns:p='http://primefaces.prime.com.tr/ui'>

<h:head>
 <title>Welcome to JSF_PrimeFaces_Hibernate Project</title>
</h:head>
<body>
 <h:form>
  <h:outputText value='Saved Record is #{userMBean.message}'></h:outputText>
  <p:dataTable id='users' value='#{userMBean.getUsers()}' var='user' style='width: 10%'>
   <p:column>
    <f:facet name='header'>
     <h:outputText value='ID' />
    </f:facet>
    <h:outputText value='#{user.id}' />
   </p:column>
   <p:column>
    <f:facet name='header'>
     <h:outputText value='Name' />
    </f:facet>
    <h:outputText value='#{user.name}' />
   </p:column>
   <p:column>
    <f:facet name='header'>
     <h:outputText value='Surname' />
    </f:facet>
    <h:outputText value='#{user.surname}' />
   </p:column>
  </p:dataTable>
 </h:form>
</body>
</html>

步骤9:创建error.xhtml

error.xhtml已创建。

<html xmlns='http://www.w3.org/1999/xhtml'
     xmlns:h='http://java.sun.com/jsf/html'
     xmlns:f='http://java.sun.com/jsf/core'
     xmlns:p='http://primefaces.prime.com.tr/ui'>  

 <h:head><title>Welcome to JSF_PrimeFaces_Hibernate Project</title></h:head>
 <body>
 <f:view>
     <h:form>
         <h:outputText value='Transaction Error has occurred!'></h:outputText>
     </h:form>
 </f:view>
</body>
</html>

步骤10:配置faces-config.xml

faces-config.xml的创建如下。 它涵盖了托管Bean的配置以及xhtml页面之间的导航。

<?xml version='1.0' encoding='UTF-8'?>
<faces-config
    xmlns='http://java.sun.com/xml/ns/javaee'
    xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xsi:schemaLocation='http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd'

    version='2.0'>

 <managed-bean>
  <managed-bean-name>userMBean</managed-bean-name>
  <managed-bean-class>com.otv.UserManagedBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>

 <navigation-rule>
     <from-view-id>/pages/index.xhtml</from-view-id>
     <navigation-case>
         <from-outcome>success</from-outcome>
            <to-view-id>/pages/welcome.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
         <from-outcome>error</from-outcome>
            <to-view-id>/pages/error.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
</faces-config>

步骤11:更新web.xml

web.xml已更新。

<?xml version='1.0' encoding='UTF-8'?>
<web-app xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
 xmlns='http://java.sun.com/xml/ns/javaee'
 xmlns:web='http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd'
 xsi:schemaLocation='http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd'
 id='WebApp_ID'
 version='2.5'>
   <display-name>OTV_JSF_PrimeFaces_Hibernate</display-name>
   <context-param>
     <param-name>javax.faces.PROJECT_STAGE</param-name>
     <param-value>Development</param-value>
   </context-param>
   <welcome-file-list>
     <welcome-file>/pages/index.xhtml</welcome-file>
   </welcome-file-list>
   <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>/faces/*</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.jsf</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.faces</url-pattern>
   </servlet-mapping>
   <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern>*.xhtml</url-pattern>
   </servlet-mapping>
</web-app>

步骤12:建立user.hbm.xml

用户表配置已设置。

<?xml version='1.0'?>
<!DOCTYPE hibernate-mapping PUBLIC
'-//Hibernate/Hibernate Mapping DTD 3.0//EN'
'http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd'>

<hibernate-mapping>
  <class name='com.otv.hbm.User' table='USER'>
   <id name='id' type='int' column='ID' >
   <generator class='increment'/>
  </id>

  <property name='name'>
    <column name='NAME' />
  </property>
  <property name='surname'>
    <column name='SURNAME'/>
  </property>
 </class>
</hibernate-mapping>

步骤13:建立hibernate.cfg.xml

创建hibernate.cfg.xml来管理应用程序和数据库之间的交互:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    '-//Hibernate/Hibernate Configuration DTD//EN'
    'http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd'>

<hibernate-configuration>
<session-factory>
  <property name='hibernate.connection.driver_class'>com.mysql.jdbc.Driver</property>
  <property name='hibernate.connection.url'>jdbc:mysql://localhost:3306/Test</property>
  <property name='hibernate.connection.username'>root</property>
  <property name='hibernate.connection.password'>root</property>
  <property name='hibernate.connection.pool_size'>10</property>
  <property name='show_sql'>true</property>
  <property name='dialect'>org.hibernate.dialect.MySQLDialect</property>
  <!-- Mapping files -->
  <mapping resource='hbm/user.hbm.xml'/>
</session-factory>
</hibernate-configuration>

步骤14:将项目部署到应用程序服务器

将Project部署到Application Server(Apache tomcat)时,屏幕如下所示:

单击提交按钮后,将显示welcome.xhtml页面,如下所示:

步骤15:下载

OTV_JSF_Hibernate_PrimeFaces

参考: JSF –我们的JCG合作伙伴 Eren Avsarogullari的PrimeFaces和Hibernate集成项目 ,位于Online Technology Vision博客上。


翻译自: https://www.javacodegeeks.com/2012/08/jsf-primefaces-hibernate-integration.html

jsf集成spring

PrimeFaces主要标签学习。 1 PrimeFaces综述 3 1.1 安装 3 1.2 配置,JSF2.0环境下用PrimeFace2.x 4 1.3 Hello World入门示例 4 1.4 UI组件: 4 2 UI组件 5 2.1 布局 5 2.1.1 Layout 页面布局 5 2.1.2 Panel用于包含其它组件,提供象windows窗口式的外观。 8 2.1.3 TabView 分页式面板组件 8 2.1.4 OutputPanel 仅用于显示元素 9 2.1.5 Fieldset 9 2.1.6 Dashboard 仪表盘 10 2.1.7 Themeswitcher 主题切换器,动态切换主题 11 2.1.8 Separator空白分隔区域 11 2.1.9 Spacer行内加空格 11 2.2 菜单 11 2.2.1 Menu 11 2.2.2 Menubar 12 2.2.3 MenuButton 13 2.2.4 Toolbar 13 2.2.5 Stack :堆叠式菜单(竖向) 13 2.2.6 Dock :动画鱼眼式菜单(横向) 14 2.3 按钮: 15 2.3.1 Button 15 2.3.2 CommandButton 15 2.3.3 CommandLink 17 2.3.4 ContextMenu 17 2.3.5 HotKey 17 2.4 输入组件 18 2.4.1 文本输入 18 2.4.1.1 Editor 18 2.4.1.2 Password 19 2.4.1.3 Password Strength 19 2.4.1.4 inputMask 输入掩码,实现格式化输入。 19 2.4.1.5 InputText 20 2.4.1.6 InputTextarea 20 2.4.1.7 Watermark :文本输入内容提示 20 2.4.1.8 Keyboard 显示一个虚拟键盘,用以支持输入字符。 21 2.4.1.9 Inplace 替换文本 22 2.4.2 选择式输入 22 2.4.2.1 AutoComplete :自动补全 22 2.4.2.2 PickList 选择列表 25 2.4.2.3 Slider 滑动条 26 2.4.2.4 Spinner 27 2.4.3 其它格式数据的输入: 27 2.4.3.1 Spreadsheet电子表格 27 2.4.3.2 Calendar 各种格式的日期输入与显示 28 2.4.3.3 Schedule 日程计划输入组件 31 2.4.3.4 Captcha :变形字符验证 31 2.4.3.5 Color Picker 32 2.5 集合(复杂格式)数据的输出与显示: 33 2.5.1 BreadCrumb :层次化页面导航条 >…>….> 33 2.5.2 Accordion:一个容器组件,它用tab动态地显示折叠或展开过程。 34 2.5.3 Carousel:多用途,标签式、分布式显示 35 2.5.4 Galleria 图片陈列廊 36 2.5.5 LightBox :图片加亮显示 37 2.5.6 DataGrid 数据栅格 37 2.5.7 DataList 用列表的形式显示数据,每个栅格可显示多个数据项 39 2.5.8 DataTable数据表格 41 2.5.9 Tree 树形显示 46 2.5.10 TreeTable 树表 47 2.5.11 DragDrop 50 2.5.11.1 Draggable组件: 50 2.5.11.2 Droppable组件 51 2.5.12 Charts基于flash的图形生成与显示 52 2.6 数据导出: 54 2.6.1 Data Exporter 54 2.6.2 Printer 56 2.7 状态: 56 2.7.1 ProgressBar 56 2.7.2 NotificationBar 57 2.8 对话框: 58 2.8.1 ConfirmDialog 58 2.8.2 Dialog 58 2.9 图形图像多媒体: 59 2.9.1 ImageCompare :提供丰富的接口比较两副图像 59 2.9.2 Graphic Text 文本图象化显示 60 2.9.3 ImageCropper 60 2.9.4 ImageSwitch 61 2.9.5 Google Maps 地图 61 2.9.6 Dyna Image 63 2.9.7 Media 65 2.9.8 Star Rating 65 2.9.9 Wizard: 66 2.10 消息: 66 2.10.1 Growl Mac风格的消息显示 66 2.10.2 Message/Messages 67 2.10.3 Tooltip 67 2.11 文件处理: 67 2.11.1 FileUpload 上传文件 67 2.11.2 FileDownload 下载文件 69 2.11.3 IdleMonitor 屏幕凝滞 70 2.11.4 Terminal 70 2.12 辅助功能(辅助其它JSF组件,给它们添加新的功能行为): 71 2.12.1 Ajax Engine 71 2.12.2 Ajax Poll轮询 72 2.12.3 Ajax远程调用p:remoteCommand 72 2.12.4 Ajax Status 显示ajax后台运行状态。 72 2.12.5 Focus 73 2.12.6 Effect: 73 2.12.7 Collector : 74 2.12.8 Resizable 给任何JSF组件添加可调整大小的行为。 74 2.12.9 RequestContext : 75 3 TouchFaces 76 3.1.1 移动UI工具 76 3.1.2 Ajax Push/Comet 77 3.1.3 几分钟实现聊天应用: 78 4 附录 79 4.1 全部UI组件列表 84 4.2 PrimeFaces常用属性集 85
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值