Chords
Endeering Chords Make Melody

2007年4月29日

使用Frails快速搭建Spring+Hibernate+JSF项目
     摘要: 本文主要介绍了如何利用Frails框架进行快速开发。在本文中我们的目标是架构起一个Spring+JSF+Hibernate的项目,并且实现后台代码。您会发现,原本仅仅实现一个Spring框架就要话很长时间的“痛苦”过程,在Frails框架和模板的帮助下,几乎喝杯咖啡的功夫就可以搞定了。您甚至会发现,不需要写任何SQL或者数据库相关代码就能够实现几乎可以覆盖全部的数据库操作需求。通过本文,您一定会喜欢上在Frails框架帮助下快速开发的感觉。  阅读全文
posted @ 2007-04-29 19:53 Coody Sk8er 阅读(3364) | 评论 (5) | 编辑 收藏
 

2007年3月15日

Frails使JSF成为主流!
长久以来,JSF一直没有成为WEB框架的主流,不仅是遗留系统的原因,JSF原始的标准并没有使得开发简化和清晰。一直不断有这样或者那样的小问题阻碍着JSF成为绝对主流。

        事实上,JSF的目标是相当不错的,希望代码人员能和美工分离,并且能够快速的开发。但是其中的一些有待解决的问题,貌似与初衷相违背:烦琐的配置,比较依赖开发工具,不够灵活等等。直到Frails这个JSF框架的诞生,JSF以往的烦恼都解决了。Frails能帮助你快速的开发JSF,效率可以和ROR媲美!

        你可以在Souceforge找到这个项目 https://sourceforge.net/projects/frails 。中文站为http://frails.hexiao.cn/ 。 目前Frails的最新版本是1.2,不过马上2.0就要发布了。
  
  Frails的特性如下:
  • Frails 让开发者使用约定(习惯)和注解(annotations)来省略在 faces-config.xml 文件中 managed-bean 和 navigation-rule的配置.
  • Frails 提供一个更简单的方法来使用 Faces API.
  • Frails 重定向非 faces 请求为一个 faces 请求,这样可以避免因为URL输入的疏忽导致的异常.
  • Frails 提供一些预定义的 Managed Bean 基类让开发者扩展 .
  • Frails 可以让开发者在 Managed Bean 中使用注解(Annotation)来支持AOP功能 ,如 函数拦截(method interception).
  • Frails 提供 Managed Bean 属性的injection 和 outjection
  • Frails 中的Hibernate GenericDao 对象提供了基本的 CRUD 函数 和 其他一些有用(常用)的数据访问函数.
  • Frails 还提供了一些有用的注解(annotations)来简化JSF的开发.
  • Frails 完全支持 jsf 1.1 和 jsf 1.2 规范,并且可以自动的探测你使用的版本.
  • Frails 提供了对action Method 和 Listener 函数的增强,在这些函数中现在你可以传递参数了.

        作为一名Frails的开发人员,我会继续写很多关于Frails的文章。不过先在这里简单的展示一下Frails的几个特性,如果你要详细的察看使用方法,请到 http://frails.hexiao.cn/user-guide.html

不需要配置faces-config.xml
       再也不需要在faces-config.xml里一个个的写导航规则,注册ManageBean了。在Frails框架下注册一个ManageBean只需要在Bean的Class文件前加上@DefMbean这样的Annotation就可以了。而导航会根据一定的导航规则实现。比如导航去index.jsp就可以直接返回"index"就可以了,当然,还有更灵活的方式。


轻松实现GET
        URL里加上参数-值对能够轻松的解析出来了,甚至不需要写方法。在一个String属性前加上@Param(name=paramName)后,这个属性就自动获得来自URL里paramName的值。如:

@Param(name="paraName")
String paVa;

URL是./xxx.jsp?paraName=Yes 那么paVa的值就是Yes。
       
        而在一个无返回方法前加上@PreRender后,这个方法将回在页面渲染前调用,提前获取一些相关的信息。如:

@PreRender
public void preRender()
{
    
//do something for rendering the page
}


  当然了,Frails提供了让方法在各个声明周期得到调用的Annotations,不仅仅是预渲染。


从烦琐的验证中解脱
        Frails使得你能在申明一个属性的时候就能快速简单的加上一些限制条件,成为这个属性的验证器。如下

@Prop
    @ValidateNumber(required 
= true, max = "33", id = "indexForm:id", message = "error.id.invalid")
    
int id;

       这样就使得在setID的时候根据需要进行验证,而不必再写validate方法。


使用简单、功能强大的JSFHelper
        例如,如果一个对象要放入HttpSession. 使用标准的 Faces API, 代码如下:

  FacesContext.getCurrentInstance().getExternalContext()
  .getSessionMap().put(name, val); 

        如果使用 JSFHelper,代码是如此的简单:

JSFHelper.putIntoSession(name, val);

        当然,JSFHelper还有很多其他的功能。如导航功能,能将页面之间的数据最大化独立开,之间的联系只需要规定有什么属性就可以了。(以后会详细介绍:Frails下网站快速开发模式)

还有很多特性,帮助你快速开发JSF。当你真正体验过Frails后,你就回发现JSF一统天下的时代的来临!

posted @ 2007-03-15 01:08 Coody Sk8er 阅读(3054) | 评论 (8) | 编辑 收藏
 

2006年12月14日

优秀软件开发人员的五个好习惯 —— 译自 java.net
     摘要: Five Habits of Highly Profitable Software Developers by Robert J. Miller08/24/2006翻译:Coody Sk8er  http://www.blogjava.net/chords原文地址:http://today.java.net/pub/a/today/2006/08/24/five-habits-o...  阅读全文
posted @ 2006-12-14 23:47 Coody Sk8er 阅读(2282) | 评论 (6) | 编辑 收藏
 

2006年12月12日

Break on Through-----Java SE 6 goes final !!!!

Break on Through

http://weblogs.java.net/blog/editors/archives/2006/12/break_on_throug.html

Posted by invalidname on December 11, 2006 at 09:12 AM | Comments (0)

Java SE 6 goes final

Two years ago, Java SE 6 was in about the same stage that Java SE 7 is today: it existed as a code-base, with ongoing development to existing features, and major features yet to be decided. Meeting with some of the engineers, it struck me that there was this thing that would be called Java SE 6 (actually we called it something else back then), and we didn't even know what it would be, but we did know precisely how we'd get there. And how we were getting there (and why the O'Reilly editors were at the meeting) was that it was to be an open-source development project on java.net, one which has been offering binary and source drops since late 2004.

And as of today, Java SE 6 is final.

So how did it work out? Probably the best sign of success is that that there were a number of outside contributors contributing code -- check out a podcast interview from the java.net booth at JavaOne in which I spoke with Brian Harry, Jesse Sterr, and Andy Tripp about their experiences contributing to JDK 6.

So, before we turn our focus to JDK 7, let's take a minute to congratulate everyone who contributed to this major new release. After all, there's a lot in JDK 6. Its major new features are described in JSR-270, and include integrated web services, scripting language support, more desktop API's (including the famous SwingWorker), a compiler API, pluggable annotations, Swing L&F improvements, LCD subpixel rendering, XML digital signature API's, JDBC 4.0, and more.

What are you waiting for? If you're on a supported platform, go download...

posted @ 2006-12-12 22:41 Coody Sk8er 阅读(353) | 评论 (0) | 编辑 收藏
 

2006年12月11日

体验NetBeans Visual Web Package (一)……轻松实现JSF的GET请求
使用NetBeans Visual Web Package是目前功能最强大的免费JSF可视化开发工具(SUN Creator与Visual Web Package其实就是一种产品)。在VW的帮助下,开发JSF就如同使用NetBeans开发Swing一样,所见即所得,真正的实现了JSF开发的初衷。再加上丰富的组件(包括支持AJAX的插件GOOGLE MAP等,需另外下载),开发起JSF来十分得心应手。今天我们来轻松的实现JSF里可加入书签的URL,也就是GET请求。


首先,到www.netbeans.org上下载Visual Web Package( Technology Preview ),并且安装好。(不用截图了吧)



o_newProject2.jpg
然后再创建一个新的工程。
选择右边Web下的Visual Web Application ,起个好名字。
source structure 推荐选择 Java BluePrint (JAVA蓝图标准),或者使用 Jakarta 。
去掉 Set source level to 1.4 前面的钩 ,要不然就使用JDK1.4开发了。
其他的根据自己需要的设定好,点击 Finish 整个项目就创建好了。




o_bluePrint.jpg


在 Project 窗口中可以看到 BluePrint 下的本项目结构。应该一看就明白:
        Themes 目录下有IDE自带的三个主题,可以根据需要要,简单的切换整个项目Web的主题。对于我这样不怎么懂得CSS的人来说是个福音;对于那些美工来说,可以专门的编辑这些主题,供开发人员直接使用,很方便。
        Page Navigation 是可视化的页面导航配置(当然也可以直接写XML配置),可以让你把页面里可以有导航作用的组件(或者整个页面)通过拖拽到其他页面来自动配置页面的导航规则,同时给该组件加上return "toXXPage"的方法。
        清晰的将三种 Managed Bean 分类列举出来,很直观。
        Configuration File 下有熟悉的 faces-config.xml 和 web.xml 。其中 web.xml 可以让你可视化(如同选择、填表一样)配置 Web 的 Filter、Sevlet、Security、XML、General、Pages、Refference信息。以前这些复杂的配置都在这里可以很方便的进行了。




下面我们就开始实现可以加入书签的URL,也就是GET请求

打开一个Page, 将组件托盘里的HyperLink拖拽到页面中间,作为导航入口。请记住,实现GET请求的导航必须是链接类型,而不能是按钮等动作类型的。o_components.jpg

在属性框里更改其Text,让这个链接显示成为你想要的文字。或者在本链接上点又键,选择Data Binding,将其绑定到一个属性上(以后详细介绍)。

然后,在本链接属性框里的URL后写上 faces/page2.jsp?name=XXX 
注意:一定要以faces/开头 。导航机制自动的将你的项目 http://localhost/yourProject/ 映射到 faces/ 下,然后faces/ 又将映射到 web/ 下。所以使用NetBean Visual Web开发的JSF部署后,如果要定位到某个页面,其名字不是 xxxPage.faces,而直接是 xxxPage.jsp ! 并且,http://localhost/yourProject/  将自动映射到本项目下默认的其实页面(设置方法是右键点要设为默认起始的页面,选设置为起始页面即可)。在上面的URL也可以输入绑定表达式和运算表达式,其中page2.jsp代表了就是你要导航到的页面,"?"后面就是“参数名字=值”的形式,并且多个的参数和值对之间用&链接,下面你将看到简单的根据这些参数名字获取到值的方法。

新建一个叫page2的页面(方法很多,不用介绍了吧),从组件托盘中选择 Static Text 拖入到页面中,在属性面版中更改 ID 为 output 以便我们以后方便的使用。点击页面编辑器上 Java 按钮,进入到本页面的 Request Bean , 这个 Bean 是在生成本页面时候自动生成的,与页面同名并且是 Request 范围的,主要就是负责页面的表示和逻辑。Visual Web会自动的为页面上每个组件生成相应的JAVA代码,也就是说,你可以在这个页面内动态的控制页面内每个组件的属性。

下面我们要在 public void prerender() {   }方法中写上代码。   prerender() 方法是负责在页面生成前做好一切准备的工作的,如同其名字一样,预渲染。所以我们要在这个时候把刚才通过GET方法传到本页面的参数提取出来。方法很简单:

 public void prerender() {
        String name 
= (String) getExternalContext().getRequestParameterMap().get("name");
        
        
if( name != null )
        
this.output.setText(name);

    }

通过getRequestParameterMap()就能获得所有的 参数名-值 的MAP,即可从中轻松的取得想要的参数值了。

最后我们将 Static Text 的值设置为name参数的值,就大致的展示了我们能获得一个GET请求了!这样就可以让用户将此页面保存到书签(收藏夹),并且动态的获取信息,而不再是仅仅依靠内部导航机制了。

结果我就不在这里展示了,自己动手体验下吧!
       

posted @ 2006-12-11 22:01 Coody Sk8er 阅读(4104) | 评论 (3) | 编辑 收藏
 
SUN技术开放日-武汉站

   今天(其实是10月6日上个星期三,抱歉拖了很长时间都没有写BLOG),SUN公司在武汉举办了SUN技术开放日活动,本人有幸参加。本以为通知函上说已经帮我预留位子可以不慌不忙了,哪知道到了现场才知道JAVA魅力超乎想像,我只能找个椅子坐边席了。 
   
   具体日程如下:

12月06日,全天,Sun 技术日
上午9:00 -- 下午5:00

09:00 -- 09:30, Open Source at Sun
09:30 -- 09:45, SCJP
09:45 -- 10:00, Break
10:00 -- 11:00, EJB 3.0 and Java Persistence
11:00 -- 12:00, Developing Applications on Solaris and Linux
12:00 -- 13:00, Free Lunch for All Attendees
13:00 -- 14:00, Building Java Web Services with the New JAX-WS 2.0
14:00 -- 15:00, Web 2.0 and AJAX
15:00 -- 15:15, Break
15:15 -- 16:45, Developing Java Applications with NetBeans 5.5
16:45 -- 17:00, Gift Distribution and Exit

        今天的开放日活动虽然说是针对企业的,但是整体的内容还是较为入门,貌似还是抱着对非专业JAVA人士的宣传目的进行的。到场的听众也如SUN公司估计的,能力层次不齐,比如在介绍SPARC技术的时候--当然提法是包装成很现代的 XXX Thread技术--有人不明白为什么现在的速度瓶颈是I/O处理上,特别是CPU对内存的速度差问题,从而不了解SPARC,也就是RISC(精简指令集)指令执行方式(重叠方式和流水线方式)和多路发射带来的优势。当然,这些都是计算机组成原理的问题了,实际上跟JAVA本身没有很大的关系,只是SUN公司的产品而已。所以,在这里就不拘泥细节和旁枝了,主要给大家介绍下跟JAVA相关的信息动态。



        首先,大会介绍了SUN的最新动态,这里介绍三个让我比较感兴趣的(就不重提SPARC了……)

Leader in RFID

        RFID(无线射频识别)的应用将回越来越受到重视。由于可以将任何物体,包括人,加上一个独一无二的微小标签,并且可以根据不同需要,在不同的距离范围内读取出来,这样就实现了物理世界和信息世界的资源整合。所以War-Mart能够通过卫星实时的追踪全球的物流情况;德国Metro可以实现超市无人快速自助付款……

Poineers Utility Computing
        也就是现在正流行的网格。网络就是计算机,网格的目的就是让计算机接上网络就能计算,就像是电器插上电源一样简单。总的说来具有以下特性:
Simple plug and play
Use when you want
Muti resource
        并且听参过与网格研究的学长说,网格这东西还就是只能用JAVA来写。看来实现这个远大目标的重任就完全压在JAVA身上了,真是光荣!

Smart Dust
       具体是哪一期我不记得了,我只模糊记得在2-3年前,科学美国人(Scientific American)杂志就刊登过微尘(Smart Dust)的理论。简单的说就是,在物理世界中掺入如同尘埃一样微小并且大量的探测器,进行实时的监控。例如,将Smart Dust混合在混凝土里,就能实时搜集到用这些混凝土盖成大楼的结构内部受力状态等信息等。现在实际运用的是美国LA的一片海域中放置了Smart Dust,来进行生态科学试验。


下面就进入到正题了



Solaris 10

        今天让我最意外的收获是让我了解了不少原本没有怎么关心的SOLARIS 10的信息,并且让我感觉到S 10真是一个强大的操作系统。


New Features  

   Evolution Net Performence
        较为前一个版本的SOLARIS 9,10版本最显著直观的改善是网络性能有了明显的提升。原来9版本的网络是基于流的技术,虽然使用灵活方便,但是十分消耗时间,SOLARIS 10改变了基于流的特性,在最这方面的改动相当大。

   Dtrace -Intrument every line in every App.
        Dtrace ( Data Trace )就象是给应用程序街上无数的探针(Probe)一样,时刻监视着应用程序的情况,并且实时的做出反应。只要你写一些脚本,整个系统将成为你应用程序的保姆,时刻监控,保护者你的应用正常的运转。

Security
        在安全方面,SOLARIS下足了功夫,例如在账户的管理上,开机重启的账号(一般是ROOT)可以不是整个系统最高权限的账号,充分考虑到了系统管理安全的方方面面。

        更值得一提的是Container的概念,类似分时系统是在时间层面上把操作系统化做不同的时间片断给不同的用户,让用户感受到自己在独占一个操作系统一样,Container是在空间层面上,把Solaris 10划分为多个小的容器,每个容器内装载不同的应用程序或者是操作系统,让其中的用户感觉自己是在独占整个操作系统。使用Container可以在硬盘分区、虚拟机、操作系统和应用程序四个层面上进行虚拟化(Visualization),并且在Solaris 10本身的操作体统层面上对每个Container进行监控和操作。也就是说,你完全可以在Solaris 10下装多个版本的Linux操作系统,并且不同的用户使用不同的版本,让用户完全感受到自己在使用一个完全独立的Linux。理论上Solaris 10下可以同时跑8000个应用,但是实际测试中是3000个,也已经非常惊人了!

在Container的帮助下,Solaris 10轻松的实现了以下特性:
Live Migration
End-to-end Data Integrity
Immense Data Capacity
Easier Admin
Huge Performence Gains


        在介绍完后,我咨询了在场资深的Solaris 10工程师关于Container下能不能跑Windows(要是在Solaris 10下同时跑上Unix Linux & Windows那不就爽歪了,哈哈),他说目前是不可能实现的了,不是SUN不想做,是MS不愿意。(预料之中)

        令人惊喜的是,如此优秀的Solaris 10是一个完全开源的操作系统,任何对Solaris 10感兴趣的人都可以加入到Solaris 10的开发社区来,贡献自己的一份力量! 详见 http://www.opensolaris.org


JDK 6
        JDK 6已经是RC版本了,据SUN工作人员说最迟在明年初发布正式版本。网上介绍JDK 6的文章应该超级多,开放日当天也只是将6的新特性再重复了以次,但是要注意的是,SUN公司官方取消了MUSTANG的说法,直接称之为JDK 6,原因是即将正式发布了,要注意避免使用他人注册名的问题。

主要新特性有
JSR 199(Java Compiler API 规范)  提供了Java编译器API
JSR 269(Pluggable Annotation Processing API) 提供了一个处理元数据注释的API
JSR 221 JSR223 JSR173 JSR222 JSR224 …… 大家自己在网上可以轻松的找到,或者直接上http://dev.java.net

另外,JDK 6还包含了一些小特性,如:
Free Disk File 轻松的查询硬盘剩余空间
Class Path 类路径查找
Improved Out of Memory Handling 对Out of Memory的Error可以进行捕获和操作了
Java Desktop Integration
Improved Jconsole


NetBeans
        
SUN公司强调NetBeans单独出现的时候,它表示的是一种平台。在介绍的时候,屏幕上展示了众多通过NetBeans平台开发的产品,他们有的是美国国防部的软件,有的是企业软件,但外表看起来都和NetBeans IDE差不多,毕竟大家都出自同一平台吗,使用的组件都是一样的。


         接着就是介绍NetBeans IDE了,完全是拿着Eclipse作为竞争对手一板一眼的对着干。可惜演示用的代码提示功能简直就是250级别的,是个IDE就应该有的功能。对我来说,一提起NetBeans IDE,那就是让人百感交集,又爱又恨啊。爱的原因是,NetBeans IDE本身就自带了SE和EE开发工具,相对来说占用资源较少;恨的原因是,其BUG不计其数,字体难看到家,代码提示性格古怪(可能是我用Eclipse多了吧)和愚蠢(这个是可以比较出来的),让一个程序员得花不少功夫去适应。但是,NetBeans IDE有几个插件是非常值得推荐得:

Profiler Package
        能对你得开发程序进行性能监视和分析,帮助你直观了解程序性能,和快速找到症结并优化。简直就象教科书里的线程调度时序示意图一样,让你清晰的看见所有线程在“赛跑”,以及其他资源的情况。



Visual Web Package
        不得不提出,这个插件包BUG是最多的,而且有些是毁灭性的(我有亲身经历),但是他实现了JSF的可视化开发,并且在BluePrint下,成功实现了MVC三者分离的目标。在这个插件包的帮助下,JSF的快速、分工开发变成了可能,为JSF成为下一代标准下了一又有分量的砝码。
注意,SUN工作人员提醒,由于Visual Web Package还只是Technology Preview版本(连个ALPHA都不是),如果要想实际开发的花,建议还是使用Creator比较靠得住(因为Visual Web Package就是在NetBeans IDE上Creator的移植)。


总体说来,这次SUN技术开放日的收获还是相当多的,让我了解了不少以前没有机会了解的内容,明确了JAVA未来的发展方向。JAVA还是最有前途的。

posted @ 2006-12-11 01:27 Coody Sk8er 阅读(1959) | 评论 (5) | 编辑 收藏
 
仅列出标题  
 
<2025年6月>
日一二三四五六
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

 导航

  • BlogJava
  • 首页
  • 发新随笔
  • 发新文章
  • 联系
  • 聚合
  • 管理

 统计

  • 随笔: 6
  • 文章: 0
  • 评论: 27
  • 引用: 0

常用链接

  • 我的随笔
  • 我的评论
  • 我的参与
  • 最新评论

留言簿(1)

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(6)

  • Frails(2) (rss)
  • GWT (rss)
  • JDK6(1) (rss)
  • NetBeans(1) (rss)
  • SCJP (rss)
  • Software(1) (rss)
  • SUN(1) (rss)

随笔档案(6)

  • 2007年4月 (1)
  • 2007年3月 (1)
  • 2006年12月 (4)

相册

  • Event Shot
  • Screen Shot

JAVA博客

  • dyerac 的天天天蓝 (rss)

必须要的

生活博客

搜索

  •  

积分与排名

  • 积分 - 15825
  • 排名 - 1952

最新评论

  • 1. re: 使用Frails快速搭建Spring+Hibernate+JSF项目
  • 我要好好看,谢谢你的 努力!
  • --liang
  • 2. re: 使用Frails快速搭建Spring+Hibernate+JSF项目
  • 正在学习,非常好,可惜jsp页面及后台数据库脚本不全;如有例子的源文件包则更好。
  • --cuy
  • 3. re: 使用Frails快速搭建Spring+Hibernate+JSF项目[未登录]
  • 使用Frails要怎样配置环境呀,下什么包
  • --lucia
  • 4. re: 使用Frails快速搭建Spring+Hibernate+JSF项目[未登录]
  • 好東西啊
  • --simon
  • 5. re: Frails使JSF成为主流!
  • 评论内容较长,点击标题查看
  • --HEDY

阅读排行榜

  • 1. 体验NetBeans Visual Web Package (一)……轻松实现JSF的GET请求(4104)
  • 2. 使用Frails快速搭建Spring+Hibernate+JSF项目(3364)
  • 3. Frails使JSF成为主流!(3054)
  • 4. 优秀软件开发人员的五个好习惯 —— 译自 java.net(2282)
  • 5. SUN技术开放日-武汉站(1959)

评论排行榜

  • 1. Frails使JSF成为主流!(8)
  • 2. 优秀软件开发人员的五个好习惯 —— 译自 java.net(6)
  • 3. 使用Frails快速搭建Spring+Hibernate+JSF项目(5)
  • 4. SUN技术开放日-武汉站(5)
  • 5. 体验NetBeans Visual Web Package (一)……轻松实现JSF的GET请求(3)

Powered by: 博客园
模板提供:沪江博客
Copyright ©2025 Coody Sk8er