个人java web框架,传上来与大家一起交流学习。

我花了很多时间琢磨java的web框架,但很少有完全满意的,也许每个人对框架都有不同的理解和喜好。我写web应用,深感现有框架的不顺手,并且渴望掌握程序的控制权,所以诞生了写一个自己框架的念头。由于学java是半路出家的,基础并不扎实,而且势单力薄,思来想去,只能站在巨人的肩膀上,利用开源代码加以改进。我把我的框架姑且命名为fall,并发布到网络,没有哗众取宠的意思,只希望能有更多的人关注,建议,批评,指教。我想这就是开源的初衷吧


fall框架部分实现了jsf1.2、jsp2.1规范,部分抄袭了jsf-ri、seam和tomcat的代码。利用seam的状态管理功能以及实用的组件,构建一个相对较为完善的web框架。fall是web bean组件完善之前的一个过渡尝试。

fall部分实现了jsf1.2规范, 实际上主要是利用jsf的高度可插接机制,以及由于seam前端对jsf的紧密耦合而不得不为。fall摒弃了jsf的ui组件机制,增加了jsp的PageContext做为FacesContext的功能补充,部分实现jsp2.1的渲染,能兼容jsp tag。使用fall需要引入jsf-api1.2.jar,jboss-seam.jar等包。

fall的说明:

servlet容器启动依然由seam监听器完成状态初始化,初始化组件,

FacesServlet做为唯一的servlet,

重写FacesContextFactory,FacesContext等实现,实现PageContext

生命周期简化合并为三个
ApplyRequestValuesPhase
InvokeApplicationPhase
RenderResponsePhase

应用请求阶段会解析请求参数,并应用到model。可以使用jsf的转换器(验证器因为seam组件中一个hibernate validator致命NoClassDefFoundError bug暂时被注释掉了),推荐使用hibernate-validator进行model验证,出错的话根据配置(与页面动作返回null一致)导航。错误信息放到StatusMessages的子类ysq.fall.servlet.FallMessages(对话上下文)中,可以用jsp标签显示。把file参数以ysq.fall.servlet.FileParam实例映射到model。FileParam具有getFileName(),getContentType(),getFileSize(),getFileInputStream()等方法,可以使用hibernate-validator验证。请求参数保存到ysq.fall.servlet.FallParameters(对话上下文)中以便当转换和验证失败时保存表单数据。

注释掉了actionOutcome,actionMethod参数功能。增加actionPage参数(对应一个viewId)。fall将会解析pages.xml文件中与 actionPage 和 请求viewId 对应的page中的页面参数并执行页面动作。

渲染由FallRender实例完成,部分实现了jsp规范中的标签功能(省略了TagFileInfo相关功能,以后补上),PageContext贯穿其中。

纯html加标签、el,实现ajax很自然

拥有seam的页面流,工作流功能(未验证)。

保留seam事务、安全,

保留seam插接能力

...

[b]慎重声明[/b]:该框架未经过系统化的测试,不适合直接做为商业应用的框架,只适合交流学习或改进后作为商业框架使用。

web bean展望:

web Bean 出来了,等待着jboss能将seam的很多实用组件单独包装成web Bean。
我在以前的文章中曾提到我的一些框架的思路,我想再在这里写下来
组件的状态:像seam和web bean一样的组件状态管理,当然在应用服务器上实现是最好的
组件:互不干扰,高插接性
总控制器servlet:大大简化代码和配置。
清晰的生命周期:主要是请求参数解析,执行action,调用渲染。
导航组件:高插接性
安全,页面流,工作流等附加功能组件
单独的渲染组件:纯html,可随意插接,支持可插接的el和jstl功能


有疑问请直接跟贴。


下载:[url]http://code.google.com/p/fall-framework/[/url]

下载说明:版本为1.0,有两个压缩包,内容都是netbeans工程,一个是dist过的,一个没有dist过。
内部的test文件夹为简单测试,测试环境为tomcat6

相关连接:
[url]http://afadgaeg.iteye.com/blog/297632[/url]
[url]http://seam.group.iteye.com/group/topic/8363[/url]
[url]http://afadgaeg.iteye.com/blog/287770[/url]
[url]http://afadgaeg.iteye.com/blog/260887[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值