JSF – PrimeFaces和休眠集成項目

本文介紹了如何使用JSF,PrimeFaces和Hibernate開發項目。 下面是一個示例應用程序:

二手技術:

JDK 1.6.0_21
Maven的3.0.2
JSF 2.0.3 PrimeFaces 2.2.1 休眠3.6.7 MySQL Java連接器5.1.17 MySQL 5.5.8 Apache Tomcat 7.0

第1步:創建用戶表

通過執行以下腳本來創建新的用戶表:

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 Central Repository下載。

<!-- 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;} @Overridepublic 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-configxmlns='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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371981.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371981.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371981.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android q升級名單,華為升級 Android Q 機型名單敲定 陣容龐大

中關村在線消息&#xff1a;在 5 月份的谷歌 I/O 大會上&#xff0c;谷歌公布了一系列支持下一代安卓系統 Android Q 的機型。除了谷歌自家的 pixel 手機之外&#xff0c;還包括 9 款國產手機&#xff0c;其中華為 Mate20 Pro 成為華為首款支持原生安卓的機型。這也讓華為手機的…

mvc UrlHelper

何謂Helper,其實就是在View中為了實現一些靈活功能而寫的方法組。 其實ASP.NET MVC的View是Aspx的頁面,本身可以聲明定義方法,那為什么要有Helper呢&#xff1f; 其實無非是將界面與邏輯分離,而且Asp.net MVC也并不只支持Aspx一種View&#xff08;還可以擴展出來很多&#xff0…

Mockito –使用全局配置的SmartNull在NPE上提供更好的錯誤消息

編寫Mockito參考卡后&#xff0c;我有機會仔細研究了Mockito不太流行但非常有用的功能。 其中一些過于先進或太稀少&#xff0c;無法在refcard中進行描述&#xff0c;因此應簡短說明。 其中之一就是SmartNull。 當前&#xff0c;非空方法返回適用于已知類型&#xff08;例如&am…

java使用js引擎時,關于時間的問題getTime()獲取為NAN的問題

在java中使用js引擎時&#xff0c;想要去獲取兩個時間的相差的天數&#xff0c;查找網上的辦法&#xff1a; var beginMonth parseInt(beginTime.substring(6,8),10);//2016-05-17 18:51:33 var beginYear parseInt(beginTime.substring(1,5),10); var beginDate parseInt(b…

python——成語接龍小游戲

小試牛刀的簡易成語接龍。 思路—— 1、網上下載成語字典的txt版本 2、通過python進行處理得到格式化的成語&#xff0c;并整理成字典&#xff08;python字典查找速度快&#xff09; 3、python程序&#xff0c;查找 用戶輸入的最后一個字和字典里首字一致的&#xff0c;放入列表…

計劃B? 那是計劃N…沒什么。 拼圖于2015年問世

真是一天 當典型的歐洲人逐漸破產時&#xff0c;美國的人們開始喝咖啡。 這就是為什么我在Mark Reinhold最近的新聞中睡個好覺的原因。 他在題為“ Project Jigsaw&#xff1a;火車晚點 ”的帖子中建議將Project Jigsaw推遲到下一個版本Java 9。 在最近的會議和博客文章上&…

C# 訪問MongoDB 通用方法類

using MongoDB.Driver; using System; namespace MongoDBDemo { public class MongoDb { public MongoDb(string host,string timeOut) { this.CONNECT_TIME_OUT timeOut; this.MONGO_CONN_HOST host; } /// <summary> /// 數據庫所在主機 /// </sum…

html網頁背景圖片平鋪代碼,jQuery圖片平鋪效果制作網頁背景圖片平鋪代碼

插件描述&#xff1a;jQuery圖片平鋪效果制作網頁背景圖片平鋪代碼調用JS文件調用插件方法$(function(){// 插件初始化$(img).jqthumb({classname : jqthumb, // 類名. 默認是 jqthumbwidth : 100%, // 新的圖像裁剪后寬度. 默認是 100px.height : 100%, // 新的圖像裁剪后高度…

使用保險絲結構管理MQ和ESB的大型部署,第I部分

FuseSource最近發布了ActiveMQ和ServiceMix發行版的企業版。 其中一些重要功能包括增量修補 &#xff0c; 自定義平臺安裝程序和第三方驗證 。 新企業版附帶的最酷的功能之一是Fuse Fabric和一些新工具 &#xff0c;使您可以利用Fabric管理環境。 Fabric允許您通過一些命令行或…

Mybatis參數傳遞及返回類型

mybatis參數傳遞&#xff1a; 單個參數&#xff1a;不做特殊處理 #{參數名}&#xff1a;取出參數值 多個參數&#xff1a;做特殊處理 多個參數會被封裝成一個map key&#xff1a;param1 ... paramN value&#xff1a;傳入的參數…

網絡html代碼是什么問題,html代碼問題

html代碼問題來源:互聯網 2010-03-22 10:35:57 評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言問題描述:這三種鏈接格式我都試了&#xff0c;都不行&#xff0c;請高手指點下。。。。。注意&#xff1a;我要的是代碼&#xff0c;不是操作方法&#xff0c;因為…

spring mvc 文件上傳

spring mvc 文件上傳 一、單文件上傳 配置步驟&#xff1a; 步驟一、在配置文件中配置包掃描器&#xff08;暫且這樣配&#xff0c;會出問題&#xff0c;我們下面說解決方案&#xff09; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns…

使用工廠模式解決設計問題

工廠設計模式是面向對象環境中最常用的模式之一。 再次來自“創意設計”模式類別&#xff0c;即有關對象創建的所有信息。 在某些情況下&#xff0c;對象的創建很復雜&#xff0c;可能需要某種程度的抽象&#xff0c;以便客戶端代碼無法意識到這些復雜性和內部實現細節。 在某些…

103. Binary Tree Zigzag Level Order Traversal

二刷。 BFS&#xff0c;基本習慣上用Iterative的做法來做&#xff0c;就是QUEUE。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ public class Solution…

java多線程系列13 設計模式 Future 模式

Future 模式 類似于ajax請求 頁面異步的進行后臺請求 用戶無需等待請求的結果 就可以繼續瀏覽或者操作 核心就是&#xff1a;去除了主函數的等待時間&#xff0c;并使得原本需要等待的時間段可以用于處理其他業務邏輯 JDK內置實現Future模式演示一下 public class RealData im…

lodop轉到其他html頁面,Lodop實現打印功能

思路&#xff1a;1、在 html 頁面引入 LodopFuncs.js 文件&#xff0c;并用 object 標簽和 embed 標簽獲取 lodop 對象2、在 js 中獲取 html 頁面中的 object 和 embed 對象&#xff0c;并使用getLodop() 方法得到 lodop 對象3、實現打印功能&#xff0c;以下三步是必需的初始化…

完整的Web應用程序Tomcat JSF Primefaces JPA Hibernate –第3部分

Primefaces AutoComplete&#xff0c;JSF轉換器 這篇文章從第一部分和第二部分繼續。 JSF擁有Converter工具&#xff0c;可以幫助我們從用戶視圖中獲取一些數據并將其轉換為從數據庫或緩存中加載的對象。 在“ com.converter”包中&#xff0c;創建以下類&#xff1a; packa…

html5首屏加載樂山暴雨,發布前端項目時因chunk-vendors過大導致首屏加載太慢,Vue Build時chunk-vendors的優化方案...

這個優化是兩方面的&#xff0c;前端將文件打包成.gz文件&#xff0c;然后通過nginx的配置&#xff0c;讓瀏覽器直接解析.gz文件。1、compression-webpack-plugin插件打包.gz文件安裝插件npm install --save-dev compression-webpack-plugin或者yarn add compression-webpack-p…

width:100vh與min-height:calc(100vh + 51px)

vh:相對于視窗的高度&#xff0c;那么vw:則是相對于視窗的高度。 “視區”所指為瀏覽器內部的可視區域大小&#xff0c;即window.innerWidth/window.innerHeight大小&#xff0c;不包含任務欄標題欄以及底部工具欄的瀏覽器區域大小。 詳細vh的用法&#xff0c;大家可以參考http…

XML配置文件中的Spring配置文件

我的上一個博客非常簡單&#xff0c;因為它涵蓋了我從Spring 3.0.x到Spring 3.1.x的輕松升級&#xff0c;最后我提到可以將Spring模式升級到3.1&#xff0c;以利用Spring的最新功能。 在今天的博客中&#xff0c;我將介紹這些功能中最酷的功能之一&#xff1a;Spring配置文件。…