社区
非技术区 帖子详情 老程序员谈谈这几年使用jsf的感受 hoslay757 2016-05-06 12:35:00 2011年公司选择了jsf作为项目开发框架,经过5年逐渐对这个框架了解越发深刻。
初接触jsf,各种不适应,不能在jsf页面嵌入java代码控制页面控件显示隐藏;校验机制僵化,没法对提交的部分控件做部分校验;每次页面提交都会序列化与反序列化viewstate;甚至页面上判断if,for等循环写法都有很大的区别。令人不解的几大生命周期;看似美好的组件重用看起来并没有什么太大的用处。
后来接触多了,发现jsf在一些处理上还是有独到之处,如对viewstate的支持就大大简化了对象的存储;将http请求响应开发模式转变为事件驱动开发方式等,都是比较有意思的设计思路。
使用jsf到底是利多还是弊多?我来谈谈我的看法。
jsf的弊端:
1.标准的与一些第三方框架的组件,很难满足一些复杂业务的需要。复杂组件往往需要自定义,但自定义的组件有很难具备通用型(一般的程序员很难规划一个粒度适中的组件)。如数据表格变为三级表头,动态合并行等等。
2.viewstate看似比较笨重,不论提交一个控件还是多个控件都会把后台的属性序列化为viewstate隐藏文本,用于恢复视图,每次会多余提交10-100k的内容。
3.文档较少,资料难查,这点不用多说
4.组件本身实现有缺陷,如文件上传有时候无法正常上传,日期文本等在一些浏览器上的样式问题,默认样式太丑等。
5.接着上一点,修复缺陷的代价太大,出错之后无从找起,比如文件上传用richfaces的几天搞不定,自己用servlet写了一个,用一个h:inputhidden来作为中间变量,两天搞定。自己写的东西自己能全程把控,开源框架号称有源码但几人能看懂。
6.缺乏一个给力的IDE,市面上目前的ide很难支撑实际业务开发需要,只能做一些粗浅的表单页面,离客户实际使用太远。
其中个人认为第五条最让人难以接受。第六条限制了jsf的普及。
但jsf就这样神秘,笨重,这么一无是处吗?
1.jsf将复杂的http请求响应的开发模式转变为事件驱动开发,简单容易理解,学习过vb,delphi等都应该有深刻体会。
2.viewstate将数据序列化到页面上提交时反序列化,极大的简化了程序员在数据存储上的工作。如用户id,编号,名称,性别等字段信息,在struts中必须用4个隐含控件放到前端和后端action页面数据对象绑定,或者前端只有一个用户id,后端在每次请求到达或处理时重新从数据库取,这些都需要代码实现。使用jsf的话只要第一次获取了数据,今后不论多少次处理这些属性都可以通过对象直接获取。
3.jsf在搭配一个给力的ide时将会展现出无与伦比的力量。
4.jsf允许自定义组件,这样的思想,如果被合理使用将大大减少项目开发成本。
总得来说jsf有利有弊,个人认为衡量一个技术好不好是很难的,不能人云亦云。只有最适合的技术没有最好的技术。
jsf使用时首先要分析客户群体,比如都是网络比较差的用户或互联网应用,那么考虑用jsp和servlet。
jsf本质上就是html。因此无法实现或者它不方便实现的功能都可以用html技术加隐藏文本替代。如文件上传,多行表头,各种html5控件,还有浏览器兼容样式问题其实都可以绕开jsf本身的机制;不要为了技术而技术,绕开一门技术还有另外的技术,绕开技术的解决方式还可以有非技术的处理方式。
另外最后一个很重要的一点,使用jsf如果能有一个好用的IDe将是一件如虎添翼的事。
...全文
2310 7 打赏 收藏 老程序员谈谈这几年使用jsf的感受 2011年公司选择了jsf作为项目开发框架,经过5年逐渐对这个框架了解越发深刻。 初接触jsf,各种不适应,不能在jsf页面嵌入java代码控制页面控件显示隐藏;校验机制僵化,没法对提交的部分控件做部分校验;每次页面提交都会序列化与反序列化viewstate;甚至页面上判断if,for等循环写法都有很大的区别。令人不解的几大生命周期;看似美好的组件重用看起来并没有什么太大的用处。 后来接触多了,发现jsf在一些处理上还是有独到之处,如对viewstate的支持就大大简化了对象的存储;将http请 复制链接
扫一扫 分享 转发到动态 举报
写回复 配置赞助广告取 消
确 定
用AI写文章 7 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 奋斗者_小哥 2020-03-02 打赏举报 回复 有人把jsfsession共享搞定了没 vicky_lxw 2017-09-27 打赏举报 回复 我也是用了好多年的jsf,和楼主差不多,也有感触。最大的感触是,只要是非前端出身的程序员,利用jsf的事件驱动是很容易掌握的,然后我们又给予模型驱动自己开发了一个eclipse的插件帮助生成jsf的页面,目前看来对于企业级应用是够用了。jsf的sessionbean运用的最多,我们当初也想到过负载均衡会话共享的问题,但是好像jsf和spring-session整合有些问题,不是每次都能将sessionbean存成功,后来就放弃了,因为感觉没有那么高要求的平滑负载,不知道有什么场景需要做到这个 weikeli19 2016-06-26 打赏举报 回复 嗯 支持撸主~~~~~~~~~~~~~~~~~ gadzs1234 2016-06-17 打赏举报 回复 您好,请教JSF的使用问题。JSF项目很多bean直接使用session或者view的scope,这样整个实体内容就都存入session了。
如果要建立JSF的负载均衡,做session共享,很多对象无法序列化,如注入的service和hibernate等。
我使用了MemcachedSessionManager和RedisSessionManager都遇到这个问题,您在使用中是否遇到过?
您这边做JSF项目的session共享是怎么做的?谢谢! 街头小贩 2016-06-17 打赏举报 回复 oldmtn 2016-06-17 打赏举报 回复 心之所向0 2016-05-06 打赏举报 回复 JSF历程:一个程序员的JavaWeb之路 摘要:一个没有Java经验,完全不懂Web编程的程序员,也能用JSF写出复杂的Web程序?本文作者向读者介绍了自己的JSF历程,以亲身经历证明JSF是程序员通往Java Web世界的捷径。 说实在的,我的Java Web之路,其实没有... JSF历程一个程序员的JavaWeb之路 摘要:一个没有Java经验,完全不懂Web编程的程序员,也能用JSF写出复杂的Web程序?本文作者向读者介绍了自己的JSF历程,以亲身经历证明JSF是程序员通往Java Web世界的捷径。 说实在的,我的Java Web之路,其实没有... JSF历程:一个程序员的JavaWeb之路(转载,完整版本) JSF历程:一个程序员的JavaWeb之路http://www.cn0511.com.cn 2007-11-21 14:36:30 ...本文作者向读者介绍了自己的JSF历程,以亲身经历证明JSF是程序员通往Java Web世界的捷径。 说实在的,我的Java Web之路,其实没 如何成为一名合格的Java程序员? 如何成为一名合格的Java程序员? 不断提高个人代码能力,将复杂的问题简单化处理,自我总结,提升学习和解决问题能力。高级程序员一般具有丰富的项目经验,经验是能力最好的试金石,即使在碰到未知的问题,丰富的... 专家访谈:JSF技术是否在国内普及 最初在某贸易公司电脑部任程序员三年,后以系统分析员身份进入某软件公司,参与了若干大型MIS 的需求分析、设计和编码,并先后担任开发部经理及总工等职务。此后职业规划渐从技术转向管理。曾在 Nortel 某R&...
非技术区
2,129
社区成员
37,918
社区内容
发帖 与我相关 我的任务 非技术区 Web 开发 非技术区 复制链接
扫一扫 分享 确定 社区描述 Web 开发 非技术区 社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告 试试用AI创作助手写篇文章吧
+ 用AI写文章