相对于struts1.2 mvc,spring mvc,struts2.0 mvc!我已经决定了用jsf.
前一段时间由于遇到性能问题,比如数据库的数据量很大,这样的情况下.怎么办呢!有两处方案可以选!
1.EJB3.0.
如果用EJB3.0解决,但是已经试验过,EJB3.0跟tomahawk不兼容,tomahawk里面有很多现成的jsf组件...文件上传,日期选框,html文本编辑器,树形菜单...
2.Spring+hibernate.
如果用spring+hibernate,跟spring+Hiberante集成较好,性能怎么解决呢,很简单,使用缓冲池就行了,dbcp或者c3p0,我目前是选择c3p0,效果非常好.
3.近来也学习了Seam,跟jsf的无缝集成,还更好地支持ajax,jsf的backBean已经放在业务类里了,验证已经放到entity Bean里,这样少写了很多类,因此,系统运行时,构建的对象是最少的,效率当然很高.不过,深入一些学习,发现存在一些难以解决的问题,
1.对国际化的支持,因为它的验证放到entity bean里了,要支持国际化,目前我还没有想到有效的解决办法.
2.对业务层的测试,因为Seam的业务层已经跟jsf混在一起来减少很多类了,测试业务层就离不开了Web容器,测试不如spring+hibernate方便.
3.jsp代码要比tomahawk写得多,tomahawk(myface)的界面用了Tiles之后,代码写得是最少了,facelets写得代码还要比它多.
开发周期和代码的移植性:
经过一段时间的技术选择和测试,我已经得到结论:
开发周期来说,spring+hiberante+tomahawk花的时间是最少的!
代码可移植性,也是它最好的!
看一下我的代码片段:
package org.dgut.lab.view.controller;
import java.util.ArrayList;
import java.util.List;
import org.dgut.lab.model.entity.Country;
import org.dgut.lab.view.builder.CountryBuilder;
import org.dgut.lab.view.util.FacesUtils;
/**
*
* @authors林春宇. 2008年6月毕业于东莞理工学院软件工程专业 QQ:445104284 电子邮箱:sunday502@126.come
* Blog: http://oak2008.iteye.com/
*/
public class CountryListBean extends BaseController {
/** Creates a new instance of CountryController */
public CountryListBean() {
this.countryBeans = new ArrayList();
}
private int command=0;
private int pageNo=1;
private long itemCount;
private long totalPage;
private int batchSize=10;
private String name;
private List countrys;
private List countryBeans;
public void init() {
List countrys = this.serviceLocator.getCountryService().getCountryAndPage(batchSize,0);
setItemCount(serviceLocator.getCountryService().getCountryAllCount());
for (int i = 0; i < countrys.size(); i++) {
Country country = (Country) countrys.get(i);
CountryBean countryBean = CountryBuilder.createCountryBean(country);
countryBean.setServiceLocator(this.serviceLocator);
this.getCountryBeans().add(countryBean);
}
}
public String findCountryByName() {
command=1;
countrys = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,0);
setItemCount(serviceLocator.getCountryService().getCountryCountByName(name));
pageNo=1;
countryBeans.clear();
for (int i = 0; i < countrys.size(); i++) {
Country country = (Country) countrys.get(i);
CountryBean countryBean = CountryBuilder.createCountryBean(country);
countryBean.setServiceLocator(this.serviceLocator);
countryBeans.add(countryBean);
}
return "country_list";
}
public String getAllCountryAndPage() {
// FacesUtils.resetManagedBean("countryListBean");
command=0;
countryBeans.clear();
List countrys = this.serviceLocator.getCountryService().getCountryAndPage(batchSize,0);
setItemCount(serviceLocator.getCountryService().getCountryAllCount());
pageNo=1;
for (int i = 0; i < countrys.size(); i++) {
Country country = (Country) countrys.get(i);
CountryBean countryBean = CountryBuilder.createCountryBean(country);
countryBean.setServiceLocator(this.serviceLocator);
countryBeans.add(countryBean);
}
return "country_list";
}
public String toPage() {
int p = getPageNo();
this.pageNo=p;
if(command==0){
countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
} else{
countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
}
return "country_list";
}
public String next() {
int p = getPageNo() + 1;
this.pageNo=p;
if(command==0){
countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
} else{
countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
}
return "country_list";
}
public String prev() {
int p = getPageNo() - 1;
if(p<=0)
this.pageNo=1;
else{
this.pageNo=p;
}
if(command==0){
countryBeans = serviceLocator.getCountryService().getCountryAndPage(batchSize,(p-1)*batchSize);
}else{
countryBeans = serviceLocator.getCountryService().getCountryByNameAndPage(name,batchSize,(p-1)*batchSize);
}
return "country_list";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public long getItemCount() {
return this.itemCount;
}
public int getPageNo() {
return pageNo;
}
public long getTotalPage() {
this.totalPage = getItemCount() % 20 == 0 ? getItemCount() / 10
: getItemCount() / 10 + 1;
log.info("***ResourceBundle"+this.getMessageString("uT",new String("code")));
return this.totalPage;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public List getCountryBeans() {
return countryBeans;
}
public void setItemCount(long itemCount) {
this.itemCount = itemCount;
}
}
我的这个项目,到现在已经完全进入了编码阶段,理论上,很快会完成的.
由于时间的仓促,这篇文章就写到这里,不足之处,还望多多交流.
我的qq:445104284
分享到:
相关推荐
这是jsf+spring2.5+jpa(hibernate)的jar包,很多人为了jsj环境而配置半天,在此提供jar包共享。注:除了ajax4jsf和tomahawk-1.1.3.jar,因为csdn只让我上传20mb,大家自己可以下一下自己试试。
自己学习JSF, Spring, Hiebernate的 HelloWorld程序,开发环境MyEclipse,含有Tomahawk、RichFaces部分集成实例。具体包括登录、注册、树控件、日历等。可用作平时学习之用! 由于大小的限制,缺少的包请到相关...
"Tomahawk src"指的是Tomahawk项目的源代码,它是一个专为JavaServer Faces (JSF) 2.0框架设计的组件库。这个组件库提供了丰富的UI元素和功能,帮助开发者构建用户界面。版本1.1.13是这个特定源代码的发行版本。 ...
标题中的“tomahawk jar”指的是Tomahawk库的Java Archive (JAR) 文件,这个版本是1.1.13,专门针对JSF 2.0框架设计。JSF是一种Java EE标准,用于构建可维护、可扩展的Web用户界面,而Tomahawk库则增强了JSF的功能,...
tomahawk-1.1.8.jar,tomahawk-1.1.8.jar,tomahawk-1.1.8.jar
《深入解析Tomahawk 1.1.8在JSF 1.1中的应用》 Tomahawk 1.1.8-bin.zip是一款基于JavaServer Faces (JSF) 1.1框架的开源组件库,它由Apache MyFaces社区开发并维护。这个压缩包包含了Tomahawk 1.1.8版本的所有必要...
《深入探索Tomahawk网络工具:从源码到实践》 Tomahawk,作为一个网络工具,相较于tcpreplay在某些方面表现出更为优越的性能和易用性,这使得它成为了网络流量回放和分析领域的一颗耀眼新星。在本文中,我们将详细...
标题中的"tomahawk20-1.1.11-bin.zip"是一个软件包,它很可能包含Tomahawk项目的特定版本(1.1.11)的二进制文件。Tomahawk通常指的是Apache MyFaces Tomahawk项目,这是一个开源JavaServer Faces (JSF)组件库,提供...
tomahawk包,用于JAVA开发的JAR包,网站页面组件开发
"Tomahawk-1.1.3" 是一个软件版本号,这通常指的是某个特定的迭代或更新,可能包含性能优化、新功能的添加或已知问题的修复。在这个上下文中,"Tomahawk"很可能是一款专为IT行业设计的应用程序,可能是音乐播放器、...
《深入剖析Tomahawk源码》 Tomahawk,这个名字源于美洲原住民的一种战斧,作为软件领域的项目,它代表了一种强大的工具或者框架。本文将深入探讨Tomahawk的源码,揭示其内在的设计理念和技术实现,帮助开发者更好地...
用的是tomahawk-sandbox。代码很简单就是配置很麻烦。晚上的大多都没有提供jar包,所以即使你配置错误也会出现错误。我将配置的信息整理,做了demol,jar包截图整理文档,把我遇到的错误误区整理一下。
一款用于测试入侵防御系统(IPS)的工具,值得学习。
"Tomahawk12-1.1.8-bin" 是一个特定版本的开源Java服务器页面(JSP)组件集合,主要包含JSF(JavaServer Faces)分页控件和其他相关控件。这个压缩包文件“tomahawk12-1.1.8-bin.zip”显然是为了方便开发人员下载和...
【Huan】_100%雷蛇血統的機殼來了!!_Razer_TOMAHAWK_ATX機殼開箱評測
### Tomahawk JSF Reference PDF概述 在JavaServer Faces (JSF)的生态系统中,《Tomahawk JSF Reference PDF》是一份重要的参考资料,为开发者提供了关于Tomahawk组件库的全面指南。这份文档包含了对Tomahawk标签库...
通信行业:博通交付Tomahawk_4交换芯片,11月我国5G手机销量超500万部-20191215-中信建投-11页.pdf
Tomahawk 是一个支持多平台的音乐播放器。在 Ubuntu 下的安装方法: sudo add-apt-repository ppa:paulo-miguel-dias/tomahawk sudo apt-get update sudo apt-get install tomahawk 标签:Tomahawk
标题中的“barefoot”是一个独特的框架,它提供了一种在没有Spring Boot或传统的Web服务器(如Tomcat)的情况下运行Spring MVC RestControllers的方式。这个概念挑战了我们对Java Web应用程序的传统理解,通常这些...