-
Seam的启动过程
了解seam2的人知道,seam是通过在web.xml中配置监听器启动的。注意,本文中的seam是指的seam2,不是seam3.
< listener> < listener-class>org.jboss.seam.servlet.SeamListener< /listener-class> < /listener>
该监听器会做哪些事情呢?看看Gavin King对SeamListener类的描述。
Drives certain Seam functionality such as initialization and cleanup of application and session contexts from the web application lifecycle.
从描述中可以知道
SeamListener主要完成应用以及web应用生命周期中的session上下文的初始化和清理工作。该类实现了ServletContextListener接口,在contextInitialized(ServletContextEvent event)方法内主要初始化生命周期并完成应用的初始化,在contextDestroyed(ServletContextEvent event)方法内结束应用的生命周期。
该类实现了HttpSessionListener接口,主要是用于在生命周期中开始和结束session。
Read More »没有评论 -
JSF中EL表达式之this扩展
本篇文章来自以前公司的一套jsf+seam+Hibernate的一套框架,其对jsf进行了一些改进,其中包括:EL表达式中添加this,通过jsf的渲染实现权限控制到按钮等等。JSF表达式中添加this,主要是为了在facelets页面使用this关键字引用(JSF自动查找)到当前页面对应的pojo类,详细说明见下午。因为,本文的文章是公司同事整理的,本文作者仅仅是将其分享出来,供大家参考思路,如果有什么不妥的话,请告知。
EL表达式this扩展
在业务系统中,大量页面具有大量区域是相似或者相同的,或者可能根据某些局部特征的变化具有一定的变化,jsf中通过facelet模板功能可以达到一定程度的页面重用,从而减轻开发人员编辑和拷贝一些页面代码,达到重用的目的。然而,她们具有如下限制:
1.Java语言作为一种典型的OO语言,通过抽象、继承等功能,可以大量重用已经实现或者在父类中已经存在的属性和方法等。模板技术作为一种静态加载和内容替换,无法充分利用面向对象的继承功能
2.由于Jsf/jsp框架采用视图和动作分离的模型,多个相似功能在不同的页面实现中由于页面对应点动作类不同因而必须使用复制的方法;
3.模板中使用EL表达式与后台动作类交互,这种交互是基于绝对名称的,不同的网页对应的动作类是完全不同的,因此很难重用和利用面向对象的特征。我们需要一种新的功能,实现:
1.模板的应用特种可以参照OO的继承特种,即模板的对模板的引用可以看成一种继承,这种继承可以和java的OO是一致的
2.多个页面和多个独立java后台程序相同部分完全可以抽离出来,不依赖它们是否继承关系、只需保证他们具有相同的属性或者方法
3.动态映射功能,即在满足上述基础上可以实现页面和后台实现类的属性和方法的自动映射
4.兼容标准的EL表达式我们将上述功能处理为“this”表达式。其功能模型为:
页面A和页面B分别引用了通用功能T,内含this相关的El表达式,通过分析处理,分别映射到对应的页面动作类的属性A.name和B.name。A和B可以从相同的基类C派生而来,只需C类实现了name属性即可,A类和B类也可以毫不相关,但是它们具有相同的属性name。
Read More » -
翻译:First JBoss Seam tutorial
说明
该文章翻译于《First JBoss Seam tutorial》,原文作者:Sebastian Hennebrueder,翻译者:JavaChen。
原文链接:http://www.laliluna.de/articles/posts/first-jboss-seam.html
一步一步的创建Jboss seam应用
介绍
这篇教程展示如何使用JBoss Seam、JSF和Facelets创建一个应用。我将为Tomcat和JBoss应用服务器列出一个配置。此外,你可以学习如何使用Maven定义依赖。
版本
教程版本:1.0 作者:Sebastian Hennebrueder
包版本
1.Seam 2.0.1.GA
2.Tomcat 6
3.JBoss Application Server 4.2 (not 4.0)下载
教程PDF:
http://www.laliluna.de/download/first-jboss-seam-en.pdf
项目例子代码
http://www.laliluna.de/download/first-jboss-seam-source.zip -
Seam中cos多文件上传出现异常
忙了一晚上,记录一下遇到的问题以及解决办法。
做了一个上传的功能,由于用到了其他的一些开源组件,没法和seam以及jsf集成起来,故只能用其他的上传的方法。
上传的方法很多,比如:jspsmart公司的jspsmartupload组件,O`Rrilly公司的cos组件,Jakarta Apache公司的commonsFileUpload组件,JavaZoom的uploadbean组件,还有Struts组件中自带的org.apache.struts.upload类工具等等。
在这里我使用的是cos组件,什么是cos组件?可以参阅【java中几种上传方法介绍、比较】 Read More »
-
Seam中的log日志记录方法
org.jboss.seam.log.Log 日志接口,定义一些记录的日志方法以及判断日志级别是否有效的方法
org.jboss.seam.log.LogImpl Log接口的实现类,是对log4j或是jdk日志的一个封装,其用意在于在记录的时候seam对其拦截,加入seam的一些操作。
org.jboss.seam.log.Logging 获得log的工厂类,该类为首先查找log4j是否可用,如果没有配置log4j则使用jdk的日志类。
org.jboss.seam.log.LogProvider 接口,log提供者
org.jboss.seam.log.JDKProvider JDK的log提供者
org.jboss.seam.log.Log4JProvider Log4J的log提供者如何使用seam的log记录日志呢?
使用方法如下:
private static final LogProvider log = Logging.getLogProvider(XXXXX.class);
-
Faceletes模板构建方法
Faceletes模板构建方法,这是在公司编写《java培训手册》时候找到的一点资料,这篇文章写得比较好,对新手还是有点帮助,故把其贴出来,和大家分享!
基本介绍
模板可以让你快速的建立相同页面布局而内部不同的网页,将通用的,不常变化的部分抽取出来放到模板页中,之后由子页面继承模板页面,子页面既具有模板页面的相同特征,可以简化系统的维护难度,降低维护成本。
XHTML模板
xhtml模板技术是一种动态的模板框架,模板中定义整体风格和占位符,在具体的页面实现中实现占位符的内容即可
(1)使用<ui:insert name=”title”/>实现占位符,其中name为占位符的唯一名称,在模板xhtml中
(2)使用<ui:define name=”title”>RichFaces Components</ui:define>实现占位符的内容,写在具体的页面xhtml中 Read More »
-
struts2的FilterDispatcher初始化过程分析
很久没有看SSH了,今天看看struts2的源码,想知道其框架的实现和运行原理,加深自己对struts2的理解。
分析struts2的初始化过程,需要建立一个工程,然后对其进行调试、跟踪代码的运行过程。
新建一个helloworld工程,可以参照这篇文章:【为Struts 2.0做好准备】,算是为后面的工作做好准备吧。在web.xml里可以看到struts2的启动入口是org.apache.struts2.dispatcher.FilterDispatcher这个类,该类实现了StrutsStatics, Filter两个接口。Filter是servlet的过滤器接口,有三个抽象方法:init()、doFilter()、destroy()。StrutsStatics借口定义了struts的action context或是其他接口使用的一些常量。
熟悉Filter的话,就会知道FilterDispatcher类的初始化主要是在init()方法里进行的。
Read More » -
hibernate hql query and native sql query
这是一篇上班期间整理的文章,参考了相关文章,版权不归本人所有,特此说明,如有侵犯他人,请提出。
Hibernate中有hql查询和原生sql查询,本文整理这两种查询的用法,不涉及游离查询、投影查询等等。
本文需要解决的问题是:怎样将使用本地SQL查询出来的结果映射为值对象的问题?这里就Hibernate中提供的方法做个结论。前提,这里没有使用属性的延迟加载技术。 Read More »
