primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)

primefaces

最近,我的朋友问我如何构建轻量级的Java Web应用程序。 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序。 但是,它可能不够轻巧。 我建议他尝试使用Guice和MyBatis构建应用程序框架。 尽管Spring比Guice功能更丰富,但我承认Guice更轻巧且易于使用。 MyBatis还是一个轻量级SQL映射框架。 它可以很好地与Guice框架集成。

在这里,我将尝试使用PrimeFaces,Guice和MyBatis建立一个简单的Web应用程序。 我希望我的朋友可以学习如何做。

集成MyFaces和PrimeFaces很简单。 只需从MyFaces网站和PrimeFaces网站获取JARS文件。

对于MyFaces,只需将以下示例配置添加到web.xml中。

<display-name>TestGuice</display-name>
<context-param><param-name>facelets.DEVELOPMENT</param-name><param-value>false</param-value></context-param><context-param><param-name>facelets.REFRESH_PERIOD</param-name><param-value>2</param-value></context-param><context-param><param-name>javax.faces.CONFIG_FILES</param-name><param-value>/WEB-INF/faces-config.xml</param-value></context-param><context-param><param-name>javax.faces.STATE_SAVING_METHOD</param-name><param-value>client</param-value></context-param><context-param><param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name><param-value>resources.application</param-value></context-param><context-param><param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name><param-value>true</param-value></context-param><context-param><param-name>org.apache.myfaces.AUTO_SCROLL</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.ERROR_HANDLING</param-name><param-value>false</param-value></context-param><context-param><param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name><param-value>org.jboss.el.ExpressionFactoryImpl</param-value></context-param><context-param><param-name>org.apache.myfaces.PRETTY_HTML</param-name><param-value>false</param-value></context-param><welcome-file-list><welcome-file>index.do</welcome-file></welcome-file-list><servlet><servlet-name>Faces Servlet</servlet-name><servlet-class>org.apache.myfaces.webapp.MyFacesServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>Faces Servlet</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

对于PrimeFaces,应该没有配置。 如果要使用PrimeFaces主题,可以在web.xml中添加以下上下文参数。

<context-param><param-name>primefaces.THEME</param-name><param-value>glass-x</param-value></context-param>

Google Guice将用作IOC容器。 服务类和SQL映射器类的依赖注入通过Guice完成。 为了与JSF集成,我建议仅添加一个ServletContextListener即可。

在您的web.xml中添加以下配置:

<listener><listener-class>org.borislam.GuiceContextListener</listener-class></listener>

在ServletContextListener内部,只需创建一个Guice Injector并将其放在ServletContext中:

public class GuiceContextListener implements ServletContextListener {public void contextDestroyed(ServletContextEvent servletContextEvent) {ServletContext servletContext = servletContextEvent.getServletContext();servletContext.removeAttribute(Injector.class.getName());}public void contextInitialized(ServletContextEvent servletContextEvent) {Injector injector = Guice.createInjector(new MyBatisModule() {@Overrideprotected void initialize() {         //add singleton service classbind(SimpleService.class).to(SimpleServiceImpl.class).in(Singleton.class); });ServletContext servletContext = servletContextEvent.getServletContext();servletContext.setAttribute(Injector.class.getName(), injector);}
}

在基础支持bean中,通过PostConstruct方法获取Guice注入器。 然后,Web应用程序中的每个后备bean都需要扩展此基本后备bean。

package org.borislam.view;import java.io.Serializable;import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;import com.google.inject.Injector;public abstract class BasePageBean implements Serializable{private Injector injector;public BasePageBean() {}public Injector getInjector() {if(injector == null) {ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();injector = (Injector)servletContext.getAttribute(Injector.class.getName());  }return injector;}public void setInjector(Injector injector) {this.injector = injector;}@PostConstructpublic void init() {getInjector().injectMembers(this);}
}

在第二部分中 ,我将继续演示如何集成MyBatis和Guice。

参考: 轻量级Web应用程序框架:来自我们的JCG合作伙伴 Boris Lam的PrimeFaces(JSF)+ Guice + MyBatis(PART1) ,位于“ 编程和平”博客上。

翻译自: https://www.javacodegeeks.com/2013/01/lightweight-web-application-primefaces-jsf-guice-mybatis-part-1.html

primefaces

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

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

相关文章

北语19秋计算机应用基础作业答案,北语18秋《计算机应用基础》练习1满分答案...

1 在微型计算机的各种设备中 既可输入又可输出的设备是 A 磁盘驱动器磁盘驱动器 B 键盘 C 鼠标 D 绘图仪 2 在 PowerPoint 的大纲窗格中输入文本 则 A 该文本只能在幻灯片视图中修改 B 既可以在幻灯片视图中修改文本 也可以在大纲视图中修改文本既可以在幻灯片视图中修改文本 也…

463个生活小窍门

1、巧用牙膏6&#xff1a;若有小面积皮肤损伤或烧伤、烫伤&#xff0c;抹上少许牙膏&#xff0c;可立即止血止痛&#xff0c;也可防止感染&#xff0c;疗效颇佳。 2、巧除纱窗油腻3&#xff1a;可将洗衣粉、吸烟剩下的烟头一起放在水里&#xff0c;待溶解后&#xff0c;拿来擦玻…

是否可以在最终课程中使用抽象方法?

这是最近在Java开发人员工作面试的电话面试中向我的一位读者提出的有趣的Java核心问题之一。 即使他知道你 无法用Java将抽象类定型为final &#xff0c;他对方法的措辞感到困惑。 答案很简单&#xff0c;不&#xff0c;在Java的最终类中不可能有抽象方法。 为什么&#xff1f…

重庆大学校友会计算机,资环学院联谊会隆重举行

2011年11月5日&#xff0c;重庆大学北京校友会资源及环境科学学院联谊会在北京京师大厦隆重举行。本次联谊会由重庆大学北京校友会主办&#xff0c;重庆大学资环学院协办&#xff0c;费用由82采矿段建国和82管理孙国敏共同资助&#xff0c;得到了学校领导的高度重视和众多校友的…

小学计算机三年级课程目录,小学生信息技术课本目录.doc

小学生信息技术课本目录三年级上册第1课  生活中的信息技术第2课  电脑能干什么第3课  电脑的组成第4课  爱护电脑设备第5课  正确使用电脑第6课  认识桌面第7课  让鼠标动起来第8课  认识电脑键盘第9课  使用记事本第10课  基准键操作第11课  上行键操作第12课  下…

cdh搭建hadoop集群_Hadoop宿醉:使用Apache Whirr启动hadoop集群CDH4

cdh搭建hadoop集群这篇文章是关于如何在EC2实例上启动CDH4 MRv1或CDH4 Yarn集群的。 据说您可以在Whirr的帮助下在5分钟内启动一个集群&#xff01; 当且仅当一切工作正常时&#xff0c;这才是正确的&#xff01; 希望本文在这方面对您有所帮助。 所以&#xff0c;让我们划船…

计算机活动宣传稿,畅想科技,创造梦想 ——东华大学计算机科学与技术学院第十一届图灵科技文化节通讯稿...

2015年11月11日&#xff0c;东华大学计算机科学与技术学院“畅想科技&#xff0c;创造梦想”第十一届图灵科技文化节在松江校区图文信息中心第二报告厅拉开帷幕&#xff0c;出席的嘉宾有&#xff1a;计算机学院院长刘国华教授、计算机学院党总支副书记虞晨洁老师、东华大学校团…

在cygwin下编译c语言

1 #include <stdio.h> 2 3 int main (void) 4 { 5 printf("Hello World!\n"); 6 return 0; 7 } 1.保存到cygwin工作目录下 2.在cygwin中输入&#xff1a;gcc -o hello helloworld.c 将文件编译成exe后缀可执行文件 3.在cygwin中输入&#xff1a;ls …

Apache Camel 2.20发布–新增功能

Apache Camel 2.20已于今天发布&#xff0c;并且像往常一样&#xff0c;我受命撰写有关此新发行版及其亮点的博客。 该版本具有以下重点。 1&#xff09;Java 9技术预览支持 我们已经开始支持Java 9的工作&#xff0c;此版本称为技术预览。 源代码在Java 9上构建和运行&…

距测试软件,两步路怎么测量距离 测距工具使用方法介绍

两步路户外助手是专门为户外运动爱好者打造的一款手机户外运动助手软件&#xff0c;用户通过它可以记录自己的每一条轨迹以及出行方式&#xff0c;这样可以很好的为大家记录各种户外出行的数据&#xff0c;还能参加各种活动和比赛。此外软件自带的地图还有很多实用的小功能&…

Visual Studio的Web Performance Test提取规则详解(1)

总结 Visual Studio的Web Performance Test是基于HTTP协议层的&#xff0c;它不依赖于浏览器&#xff0c;通过直接接收&#xff0c;发送HTTP包来和Web服务器交互。Web Performance Test发送和接收的一系列请求和响应之间存在相关性&#xff0c;例如&#xff0c;用户登录后&…

我的世界f服务器自定义皮肤,我的世界服务器皮肤指令

我的世界换肤教程&#xff0c;本篇教程记录如何使用MCSkin 3D软件、皮肤使用、皮肤预览图制作等相关教程。感兴趣的小伙伴们可以来看看这篇我的世界皮肤教程。一.MCSkin 3D1.4软件介绍及教程&#xff1a;1. 视图-3D设置-屏蔽部位半透明显示在绘制其他部位时&#xff0c;可以用半…

couchbase_Couchbase 101:从Java应用程序创建视图(MapReduce)

couchbase使用Couchbase 2.0开发新应用程序时&#xff0c;有时需要从代码中动态创建视图。 例如&#xff0c;在安装应用程序&#xff0c;编写一些测试时&#xff0c;可能会需要此方法&#xff1b;或者&#xff0c;在构建框架时&#xff0c;您也可以使用此方法&#xff0c;并希望…

如何设置Linux操作系统shell命令的默认语言

Linux中语言的设置和本地化设置真是一个很繁琐的事情&#xff0c;时不时的会出现乱码的情况。 一般来说&#xff0c;linux中显示什么语言是通过环境变量来确认的。 这些环境变量包括&#xff1a; $LANG / $LANGUAGE / $LC_CTYPE .... 可以通过locale命令查看这些变量的值。 要设…

如何在虚拟机上安装wsus服务器,如何在Hyper-V虚拟机上安装WSUS服务器技巧

由于许多企业继续减少使用物理服务器&#xff0c;一个经常提及的问题随之而来&#xff1a;对Windows Server更新服务(WSUS)服务器进行虚拟化处理是个好想法吗?简单的回答&#xff1a;是的。本文介绍了如何在Hyper-V虚拟机中运行WSUS。WSUS可以在虚拟机中运行吗?一言以蔽之&am…

从Spring Data JPA访问EntityManager

Spring Data JPA允许您通过使用Repository接口来快速开发数据访问层。 有时&#xff0c;您需要从Spring Data JPA访问EntityManager。 这篇文章向您展示了如何访问EntityManager。 实体管理器 EntityManager的目的是与持久性上下文进行交互。 然后&#xff0c;持久性上下文将管…

NOIP模拟测试11「string·matrix·big」

打的big出了点小问题&#xff0c;maxx初值我设的0然后少了10分 第二题暴力打炸 第一题剪了一些没用的枝依然40分 总分70 这是一次失败的考试 string 想到和序列那个题很像&#xff0c;但我没做序列&#xff0c;考场回忆学长讲课&#xff0c;打不出来。最后我口胡了一个CDQ分治&…

监控摄像头服务器维护要多久,监控摄像机怎么维护和保养?

原标题&#xff1a;监控摄像机怎么维护和保养?在安防监控系统中&#xff0c;起决定作用的是显示器、摄像机和储存设备。那么&#xff0c;问题来了&#xff0c;监控摄像机怎么维护和保养呢?摄像机属于精密家电&#xff0c;使用上也应更加注意。1、注意防潮&#xff1a;潮湿是摄…

Promise 学习心得

当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise&#xff0c; Promise 有什么用&#xff1f;在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱&#xff0c;Promise 这个东西就是为了解决回调嵌套而生的 Promise 是异步编程的一…

小米羊城通余额不足服务器维护,再不怕羊城通余额不够了!地铁站现自助补票“神器”...

再不怕羊城通余额不够了&#xff01;地铁站现自助补票“神器”金羊网 作者&#xff1a;陈泽云 2018-04-16金羊网讯 记者陈泽云报道你有没遇到过这样情况&#xff0c;准备出地铁站时&#xff0c;却发现羊城通余额不足刷不出闸、或者闸机读取不到你的进站信息&#xff0c;只能去…