JSF+Spring+JPAHibernate实现的环境搭建Word文件下载.docx
《JSF+Spring+JPAHibernate实现的环境搭建Word文件下载.docx》由会员分享,可在线阅读,更多相关《JSF+Spring+JPAHibernate实现的环境搭建Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
--配置JSF-->
context-param>
<
param-name>
javax.faces.CONFIG_FILES<
/param-name>
param-value>
/WEB-INF/faces-config.xml<
/param-value>
/context-param>
--Spring配置文件地址-->
contextConfigLocation<
/WEB-INF/classes/applicationContext.xml<
--客户端管理状态-->
javax.faces.STATE_SAVING_METHOD<
client<
—加入facelets框架支持-->
facelets.LIBRARIES<
/WEB-INF/facelets/tags/arcmind.taglib.xml;
/WEB-INF/tomahawk.taglib.xml
description>
指定facelets支持的后缀<
/description>
javax.faces.DEFAULT_SUFFIX<
.xhtml<
--JSF的ajax配置AJAX4JSF-->
filter>
display-name>
Ajax4jsfFilter<
/display-name>
filter-name>
ajax4jsf<
/filter-name>
filter-class>
org.ajax4jsf.Filter<
/filter-class>
/filter>
filter-mapping>
servlet-name>
FacesServlet<
/servlet-name>
dispatcher>
REQUEST<
/dispatcher>
FORWARD<
INCLUDE<
/filter-mapping>
—JSF支持-->
servlet>
servlet-class>
javax.faces.webapp.FacesServlet<
/servlet-class>
load-on-startup>
1<
/load-on-startup>
/servlet>
servlet-mapping>
url-pattern>
*.faces<
/url-pattern>
/servlet-mapping>
—组件支持-->
为正确使用tomahawk组件包而配置<
extensionsFilter<
org.apache.myfaces.webapp.filter.ExtensionsFilter<
init-param>
<
uploadMaxFileSize<
10m<
/init-param>
uploadThresholdSize<
100<
/faces/*<
在WEB-INF下面加入jsf_core.tld、html_basic.tld和tomahawk.taglib.xml文件、新建一个faces-config.xml文件,内容配置如下:
--配置facelets-->
application>
locale-config>
default-locale>
zh_CN<
/default-locale>
/locale-config>
view-handler>
com.sun.facelets.FaceletViewHandler<
/view-handler>
/application>
—JSF与Spring集成-->
variable-resolver>
org.springframework.web.jsf.DelegatingVariableResolver
/variable-resolver>
再加入facelets框架的标签支持包,整个环境包大致如下图所示:
4.上面的配置好了,JSF和Spring就集成起来了。
下面我们加入JPA支持,并且将JPA和Spring集成起来。
首先加入persistence.xml文件,内容如下:
?
xmlversion="
1.0"
encoding="
UTF-8"
>
persistencexmlns="
xmlns:
xsi="
http:
//www.w3.org/2001/XMLSchema-instance"
xsi:
schemaLocation="
version="
persistence-unitname="
JSJDemoPU"
transaction-type="
RESOURCE_LOCAL"
provider>
org.hibernate.ejb.HibernatePersistence<
/provider>
class>
test.vo.Test<
/class>
properties>
--Hibernate方言(只有Hibernate才需要设置)-->
propertyname="
hibernate.dialect"
value="
org.hibernate.dialect.MySQLDialect"
/>
--Hibernate显示调试SQL-->
hibernate.show_sql"
value="
true"
--Hibernate格式化sql-->
hibernate.format_sql"
hibernate.hbm2ddl.auto"
update"
/properties>
/persistence-unit>
/persistence>
之后建立一个值对象,代码如下:
packagemangerTeam.vo;
importjava.io.Serializable;
importjava.util.Set;
importjavax.persistence.Basic;
importjavax.persistence.CascadeType;
importjavax.persistence.Column;
importjavax.persistence.Entity;
importjavax.persistence.FetchType;
importjavax.persistence.GeneratedValue;
importjavax.persistence.GenerationType;
importjavax.persistence.Id;
importjavax.persistence.JoinColumn;
importjavax.persistence.JoinTable;
importjavax.persistence.Lob;
importjavax.persistence.ManyToMany;
importjavax.persistence.ManyToOne;
importjavax.persistence.Table;
/**
*运动员实体
*
*@author刘岩
*/
@Entity
@Table(name="
player"
)
publicclassPlayersVOimplementsSerializable{
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="
id"
unique=true,nullable=false)
privateIntegerid;
name"
privateStringname;
@ManyToOne(optional=true,fetch=FetchType.LAZY)
@JoinColumn(name="
teamId"
privateTeamVOteamVO;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(nullable=false,name="
nationalityId"
privateNationalityVOnationalityVO;
@Lob
@Basic(fetch=FetchType.LAZY)
pic"
privatebyte[]pic;
mess"
privateStringmess;
@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.LAZY)
@JoinTable(name="
plays_position"
joinColumns={@JoinColumn(name="
playerId"
)},inverseJoinColumns={@JoinColumn(name="
positionId"
)})
privateSet<
PositionVO>
positions;
publicIntegergetId(){
returnid;
}
publicvoidsetId(Integerid){
this.id=id;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
publicSet<
getPositions(){
returnpositions;
publicvoidsetPositions(Set<
positions){
this.positions=positions;
publicTeamVOgetTeamVO(){
returnteamVO;
publicvoidsetTeamVO(TeamVOteamVO){
this.teamVO=teamVO;
publicNationalityVOgetNationalityVO(){
returnnationalityVO;
publicvoidsetNationalityVO(NationalityVOnationalityVO){
this.nationalityVO=nationalityVO;
publicbyte[]getPic(){
returnpic;
publicvoidsetPic(byte[]pic){
this.pic=pic;
publicStringgetMess(){
returnmess;
publicvoidsetMess(Stringmess){
this.mess=mess;
}
之后写DAO,无论你是用IDE生成的DAO还是自己写的DAO,代码大致如下:
packagemangerTeam.dao;
importjava.util.HashMap;
importjava.util.List;
importjavax.persistence.EntityManager;
importjavax.persistence.PersistenceException;
importjavax.persistence.Query;
importmangerTeam.vo.PlayersVO;
importorg.springframework.context.ApplicationContext;
importorg.springframework.orm.jpa.JpaCallback;
importorg.springframework.orm.jpa.support.JpaDaoSupport;
importorg.springframework.transaction.annotation.Transactional;
@Transactional
publicclassPlayerDAOextendsJpaDaoSupportimplementsIPlayerDAO{
//propertyconstants
publicstaticfinalStringNAME="
;
publicstaticfinalStringMESS="
publicstaticfinalStringPIC="
publicvoidsave(PlayersVOentity){
logger.info("
savingPlayerinstance"
);
try{
getJpaTemplate().persist(entity);
logger.info("
savesuccessful"
}catch(RuntimeExceptionre){
logger.error("
savefailed"
re);
throwre;
}
publicvoiddelete(PlayersVOentity){
deletingPlayerinstance"
entity=getJpaTemplate().getReference(PlayersVO.class,
entity.getId());
getJpaTemplate().remove(entity);
deletesuccessful"
deletefailed"
publicPlayersVOupdate(PlayersVOentity){
updatingPlayerinstance"
PlayersVOresult=getJpaTemplate().merge(entity);
updatesuccessful"
returnresult;
updatefailed"
publicPlayersVOfindById(Integerid){
findingPlayerinstancewithid:
"
+id);
PlayersVOinstance=getJpaTemplate().find(PlayersVO.class,id);
returninstance;
findfailed"
@SuppressWarnings("
unchecked"
publicList<
PlayersVO>
findByProperty(StringpropertyName,
finalObjectvalue,finalint...rowStartIdxAndCount){
findingPlayerinstancewithproperty:
+propertyName
+"
value:
+value);
finalStringqueryString="
selectmodelfromPlayersVOmodelwheremodel."
+propertyName+"
=:
propertyValue"
returngetJpaTemplate().executeFind(newJpaCallback(){
publicObjectdoInJpa(EntityManagerem)
throwsPersistenceException{
Queryquery=em.createQuery(queryString);
query.setParameter("
value);
if(rowStartIdxAndCount!
=null
&
&
rowStartIdxAndCount.length>
0){
//有分页
introwStartIdx=Math.max(0,rowStartIdxAndCount[0]);
//开始页
if(rowStartIdx>