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

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;} @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

jsf集成spring

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/354075.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

帝国 loginjs.php,帝国cms 6.6 后台拿shell

时间:2013-02-27来源:源码库 作者:源码库 文章热度:℃漏洞作者&#xff1a; 付弘雪提交时间&#xff1a; 2013-01-21公开时间&#xff1a; 2013-01-21漏洞类型&#xff1a; 文件上传导致任意代码执行简要描述&#xff1a;帝国cms 6.6版本后台拿shell 比网上流行的方法简单很多由…

带有JSF,Servlet和CDI的DynamicReports和JasperReports

在此示例中&#xff0c;我将展示如何将DynamicReport和JasperReports与Servlet和CDI集成。 工具&#xff1a; TIBCO Jaspersoft Studio-6.0.4。最终版 Eclipse Luna服务版本2&#xff08;4.4.2&#xff09;。 WildFly 8.x应用程序服务器。 这是Eclipse上项目层次结构的屏幕…

swing 聊天气泡背景_Java Swing中的聊天气泡

swing 聊天气泡背景本文将向您解释“如何在Java swing应用程序中绘制聊天气泡&#xff1f;” 聊天气泡与呼出或提示气泡相同。 今天&#xff0c;大多数聊天应用程序都以这种格式显示转换&#xff0c;因此本文将帮助您在用Java swing创建的桌面应用程序中执行相同的操作。 以下课…

jdk7与jdk8环境共存与切换

1&#xff0c;先安装jdk7,配置环境变量JAVA_HOME,然后安装jdk8。 2&#xff0c;安装jdk8后&#xff0c;JAVA_HOME指向未做修改&#xff0c;执行java -version显示还是以前的jdk7版本信息&#xff0c; 3&#xff0c;接下来我们配置环境变量JAVA_HOME,发现配置jdk7的路径,或者配置…

PHP培训选云和数据,送给云和数据郑州分中心PHP培训班全体学员的祝福

在云和数据数百个日日夜夜&#xff0c;郑州PHP培训班的学员们一起成长&#xff0c;从青春懵懂到成熟稳重&#xff0c;从羞涩内敛到侃侃而谈&#xff0c;他们用奋斗和拼搏共同刻画了人生中一段难忘的回忆。12月12日&#xff0c;云和数据郑州分中心PHP培训班毕业典礼&#xff0c;…

cyclicbarrier_Java并发– CyclicBarrier示例

cyclicbarrierJava中的CyclicBarrier是JDK 5中在java.util.Concurrent包上引入的同步器&#xff0c;以及其他并发实用程序&#xff0c;例如Counting Semaphore &#xff0c; BlockingQueue &#xff0c; ConcurrentHashMap等。CyclicBarrier与CountDownLatch类似&#xff0c;我…

php队列失败是指什么,队列是什么意思

队列是一种特殊的线性表。它只允许在表的前端(front)进行删除操作&#xff0c;而在表的后端(rear)进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表&#xff1b;进行插入操作的端称为队尾&#xff0c;进行删除操作的端称为队头&#xff1b;队列中没有…

从In Memory Data Grid,Apache Ignite快速入门

IMDG或内存数据网格不是内存中关系数据库&#xff0c;NOSQL数据库或关系数据库。 它是另一种软件数据存储库。 数据模型分布在单个位置或多个位置的许多服务器上。 这种分布称为数据结构。 这种分布式模型被称为“无共享”架构。 IMDG具有以下特征&#xff1a; 所有服务器可以…

91.91p10.space v.php,luogu P1091 合唱队形

任务计划推了很久才做www从两头开始的单调上升队列没啥可说的#include#includeusing namespace std;#define maxn 110int a[maxn];int f[2][maxn];int ans;int main() {int n;scanf("%d",&n);for(int i 1; i < n; i)scanf("%d",&a[i]);a[0] a…

BZOJ 2097 [Usaco2010 Dec]Exercise 奶牛健美操

【题意】 给出一棵树。现在可以在树中删去m条边&#xff0c;使它变成m1棵树。要求最小化树的直径的最大值。 【题解】 二分答案。$Check$的时候用$DP$&#xff0c;记录当前节点每个儿子的直径$v[i]$&#xff0c;如果$v[i]1>mid$&#xff0c;那么就断掉连向儿子的这条边。如果…

daterangepicker双日历插件的使用

今天主要是由于项目的需要&#xff0c;做了一个daterangepicker双日历插件&#xff0c;做出来的效果如下&#xff1a; 个人感觉这个daterangepicker双日历插件很好用&#xff0c;并且实现起来也不是很麻烦&#xff0c;我是根据它的官方文档去写的&#xff0c;并将Bootstrap也整…

php 递归展现城市信息,PHP 递归兑现层级树状展现数据

PHP 递归实现层级树状展现数据?$arr[id],fid > $arr[fid],name > $arr[name],);}// 将数据按照缩进简单排列 见图1function data2arr($tree, $rootId 0, $level 0) {foreach($tree as $leaf) {if($leaf[fid] $rootId) {echo str_repeat( , $level) . $leaf[id] . .…

牛客网 2018年全国多校算法寒假训练营练习比赛(第五场) H.Tree Recovery-完全版线段树(区间更新、区间求和)...

H.Tree Recovery时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K64bit IO Format: %lld链接&#xff1a;https://www.nowcoder.com/acm/contest/77/H来源&#xff1a;牛客网题目描述 You have N integers, A1,…

微信登陆超时 重新登录_重新登录:重新登录

微信登陆超时 重新登录嗨&#xff0c;我再次感到非常高兴&#xff0c;认为日志记录是任何应用程序设计和开发的固有部分。 我是坚强的基础知识的忠实拥护者&#xff0c;以我的拙见&#xff0c;日志记录是任何企业级应用程序中经常被忽略但基本的关键要素之一。 我已经写在此之前…

快速幂矩阵快速幂

快速幂 题目链接&#xff1a;https://www.luogu.org/problemnew/show/P1226 快速幂用了二分的思想&#xff0c;即将\(a^{b}\)的指数b不断分解成二进制的形式&#xff0c;然后相乘累加起来&#xff0c;就是用\(a^{b/2}a^{b/2}\)去求\(a{^b}\)。 例如:\(a^{11}a^{(2^02^12^3)}\)…

前端项目里常见的十种报错及其解决办法

错误一&#xff1a;Uncaught TypeError: Cannot set property onclick of nullat operate.js:86图片.png原因&#xff1a;当js文件放在head里面时&#xff0c;如果绑定了onclick事件&#xff0c;就会出现这样的错误&#xff0c;是因为W3School的写法是浏览器先加载完按钮节点才…

监控oracle数据io,Prometheus监控Oracle数据库

背景本文简单介绍下&#xff0c;Prometheus如何通过exporters监控Oracle数据库&#xff0c;以及应该注意哪些指标。oracledb_exporteroracledb_exporter是一个连接到Oracle数据库并生成Prometheus metrics的应用程序&#xff0c;设置展示下如何安装和设置oracledb_exporter&…

php workman 多线程,workerman如何多线程

Workerman有一个依赖pthreads扩展的MT多线程版本&#xff0c;但是由于pthreads扩展还不够稳定&#xff0c;所以这个Workerman多线程版本已经不再维护。 (推荐学习&#xff1a; workerman教程)workerman\mqtt 是一个基于workerman的异步mqtt 客户端库&#xff0c;可用于接收或者…

js Object的属性 Configurable,Enumerable,Writable,Value,Getter,Setter

对象的数据属性 Configurable,Enumerable,Writable,Value var person {} Object.defineProperty(person,name,{configurable:false,//能否使用delete、能否需改属性特性、或能否修改访问器属性、&#xff0c;false为不可重新定义&#xff0c;默认值为true enumerable:false,//…

Bzoj2694/Bzoj4659:莫比乌斯反演

Bzoj2694/Bzoj4659:莫比乌斯反演先上题面:首先看到这数据范围显然是反演了&#xff0c;然而第三个限制条件十分不可做。于是我们暂且无视他&#xff0c;大不了补集转化算完再减是吧。于是我们有:这里我们定义:于是这个东西我们可以nlogn筛的说。也就是说&#xff0c;我们求出f的…