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.mzph.cn/news/371981.shtml

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

相关文章

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。 在最近的会议和博客文章上&…

html网页背景图片平铺代码,jQuery图片平铺效果制作网页背景图片平铺代码

插件描述&#xff1a;jQuery图片平铺效果制作网页背景图片平铺代码调用JS文件调用插件方法$(function(){// 插件初始化$(img).jqthumb({classname : jqthumb, // 类名. 默认是 jqthumbwidth : 100%, // 新的图像裁剪后宽度. 默认是 100px.height : 100%, // 新的图像裁剪后高度…

spring mvc 文件上传

spring mvc 文件上传 一、单文件上传 配置步骤&#xff1a; 步骤一、在配置文件中配置包扫描器&#xff08;暂且这样配&#xff0c;会出问题&#xff0c;我们下面说解决方案&#xff09; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns…

使用工厂模式解决设计问题

工厂设计模式是面向对象环境中最常用的模式之一。 再次来自“创意设计”模式类别&#xff0c;即有关对象创建的所有信息。 在某些情况下&#xff0c;对象的创建很复杂&#xff0c;可能需要某种程度的抽象&#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…

交大计算机专业怎样,计算机专业高校实力排名,上海交大第五,清华第二,第一毫无争议...

原标题&#xff1a;计算机专业高校实力排名&#xff0c;上海交大第五&#xff0c;清华第二&#xff0c;第一毫无争议计算机专业在近几年可谓是“大热”&#xff0c;众多考生抢破头也想当码农&#xff0c;背后的原因其实不难理解。互联网时代的到来&#xff0c;计算机早已渗透到…

python之路-面向对象

编程范式 编程是 程序 员 用特定的语法数据结构算法组成的代码来告诉计算机如何执行任务的过程 &#xff0c; 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合&#xff0c;正所谓条条大路通罗马&#xff0c;实现一个任务的方式有很多种不同的方式&#xff0c; 对这…

西安邮电大学计算机科学与技术有专硕吗,2020年西安邮电大学计算机学院考研拟录取名单及排名!...

20考研复试调剂群&#xff1a;4197552812020年西安邮电大学计算机学院硕士研究生招生复试成绩及综合排名各位考生&#xff1a;现将我院2020年硕士研究生招生复试成绩及综合排名公布(最终录取名单及新生学籍注册均以“全国硕士研究生招生信息公开平台”备案信息为准)&#xff0c…

检测一个点, 是否在一个半圆之内的方法

demo: http://jsbin.com/lihiwigaso 需求: 一个圆分成分部分, 鼠标滑上不同的区域显示不同的颜色 思路: 先判断这个点是否在圆之内, 再判断是否在所在的三角形之内就可以了 所需要的全部源码: <!DOCTYPE html> <html> <head><meta charset"utf-8&quo…

台式计算机风扇声音大怎么处理,如何解决电脑电源风扇声音大的问题?

现在的台式机一般用3到5年后&#xff0c;一些问题自然也就慢慢表现出来了。很多网友在使用电脑过程中都有电脑风扇声音大怎么办的问题&#xff0c;电脑风扇声音大就会让人觉得使用电脑很不舒服&#xff0c;怎么办好呢&#xff1f;出现重要的问题要如何解决好呢&#xff1f;现在…

计算机应用 winxp,2017年职称计算机考试模块WindowsXP试题

2017年职称计算机考试模块WindowsXP试题全国专业技术人员计算机应用能力考试是专业技术人员资格考试的一种。接下来应届毕业生小编为大家搜索整理了2017年职称计算机考试模块WindowsXP试题&#xff0c;希望大家有所帮助。1. Windows XP中删除某个文件的快捷方式【 A 】。A. 对原…

Python基础(8)_迭代器、生成器、列表解析

一、迭代器 1、什么是迭代 1 重复   2 下次重复一定是基于上一次的结果而来 1 l[1,2,3,4] 2 count0 3 while count < len(l): 4 print(l[count]) 5 count1 迭代举例2、可迭代对象 可进行.__iter__()操作的为可迭代对象 #print(isinstance(str1,Iterable)),判断str…

Angularjs2-EXCEPTION: Response with status: 200 Ok for URL:

利用jsonp跨域请求数居&#xff0c;报错 core.umd.js:3070 EXCEPTION: Response with status: 200 Ok for URL: 参考&#xff1a;stackoverflow 未解决。。。脑仁疼。。。有小伙伴也碰到过这个问题么&#xff1f; 16/11/30 问题解决 1.服务器端API允许跨域访问(返回的数据添加允…

WebStrom Sass 编译配置 windows

第一步&#xff1a; 先安装Ruby下载 一路next 安装完成后打开开始菜单 打开后输入 gem install sass sass -v 出现版本号说明成功 第二部配置webstorm 在webstorm中settings中搜索file watchers工具&#xff0c;在此工具中添加一个scss的watcher 确定&#xff0c;打开一个scss…

非本地跳转之setjmp与longjmp

非本地跳转(unlocal jump)是与本地跳转相对应的一个概念。 本地跳转主要指的是类似于goto语句的一系列应用&#xff0c;当设置了标志之后&#xff0c;可以跳到所在函数内部的标号上。然而&#xff0c;本地跳转不能将控制权转移到所在程序的任意地点&#xff0c;不能跨越函数&am…

清华计算机自主招生试题,2017年清华大学自主招生笔试题

2017年清华大学自主招生笔试题2017高考结束后&#xff0c;全国各大高校自主招生面试开始了&#xff0c;以下是百分网小编搜索整理的关于2017年清华大学自主招生笔试题&#xff0c;供各位参考&#xff0c;希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!…

字符串替换

题目: 给定一个英文的字符串, 要求你将其中的元音删除掉, 返回新的字符串. 例如:"This website is for losers LOL!" --> "Ths wbst s fr lsrs LL!" 当看到这个题目的时候, 第一个想起的就是re模块的正则表达式. 不过由于最近使用过字符串的replace方…

JavaFX 2.0布局窗格– FlowPane和TilePane

FlowPanes和TilePanes是不错的布局窗格&#xff0c;如果您想一个接一个地连续地水平或垂直地布局子级&#xff0c;则可以。 它们彼此非常相似&#xff0c;因为它们都将子级布置成列&#xff08;在水平Flow / TilePane的情况下&#xff09;并按其宽度或行&#xff08;在垂直Flow…