http://developers.sun.com.cn/blog/functionalca/date/20080819 星期二 2008年08月19日

体验 NetBeans 6.5 和 PHP

体验一把在 NetBeans 开发 PHP 的感觉。

[Read More]

发表于 jerry [NetBeans] ( 八月 19, 2008 11:01 上午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080714 星期一 2008年07月14日

NetBeans获InfoWorld最佳Rails开发IDE

作者:高昂

InfoWorld日前对主流的Rails开发IDE进行了评比,评选从功能性、易用性、集成性、性能表现等方面进行综合评分。NetBeans以其开源免费且跨平台等众多优秀特性,在评比中得到了最高的9.0分。[Read More]

发表于 Sun Functional 校园大使 [NetBeans] ( 七月 14, 2008 11:30 上午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080622 星期日 2008年06月22日

Developing JavaFX program in Netbeans6.1

JavaFX SDK添加了很多新的工具包,包括javafx.gui, javafx.sql, javafx.animation等,功能很强大,而openjfx项目已经提供了Netbeans6.1的插件,目前Netbeans 6.1的插件提供了代码编辑、编译、预览、调试的功能,本文将介绍如何在Netbeans 6.1中开发JavaFX程序。[Read More]

发表于 Sun Functional 校园大使 [NetBeans] ( 六月 22, 2008 08:33 下午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080615 星期日 2008年06月15日

用Dynamic Faces构建Ajax聊天室

本文将介绍如何使用Dynamic Faces在Netbeans 6.1中基于Visual Web JSF构建一个简单的Ajax聊天室。Dynamic Faces是JSF的一个扩展组件库,使用该组建库可以使得JSF容易地实现AJAX交互.由于Dynamic Faces还没兼容到Java EE 5标准中,因此,本例使用的是J2EE 1.4的代码级别,而且必须使用Visual Web JSF的UI组件库(注意,不是最新的webui组件库)。[Read More]

发表于 Sun Functional 校园大使 [NetBeans] ( 六月 15, 2008 05:17 下午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080611 星期三 2008年06月11日

NetBeans 多语言界面

NetBeans 国际化支持做的非常好。

安装好 NetBeans 多国语言版本之后,表面上看起来似乎只有简体中文,但其实只要稍加改动快捷方式的启动参数,不用额外安装任何文件,就可以轻松切换到英文、日文等界面。

[Read More]

发表于 jerry [NetBeans] ( 六月 11, 2008 11:01 下午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080609 星期一 2008年06月09日

JRuby on Rails 介绍讲稿

作者:Gao Ang
邮件:tomgaoang # gmail.com

JRuby是纯Java实现的Ruby解释器,在JRuby的支持下,可以是Ruby语言编写的应用直接运行在JVM之上,并且可以方便的调用Java的众多类库,同时以Ruby on Rails为代表的Web应用开发框架也可以在JRuby的帮助下迁移到JVM上运行,方便应用服务器的集群拓展。Oracle发布的名为Oracle Mix的社交网络,是已有基于JRuby on Rails大型应用实现的典型代表。

JRuby的最新版本为JRuby 1.1.2,与Ruby的1.8.6版本保持兼容。目前JRuby的创始人,Thomas Enebo和Charles Nutter已经加入Sun公司,专门进行JRuby的开发工作。JRuby on Rails介绍讲稿中包含Ruby、Rails、JRuby以及Netbeans对于JRuby支持的介绍以及相应的Demo示例。讲稿使用iWorks的Keynote制作,上传时转换为PPT格式,以方便大家使用。

演讲稿下载



发表于 Sun Functional 校园大使 [NetBeans] ( 六月 09, 2008 04:06 上午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080523 星期五 2008年05月23日

使用Netbeans创建、部署和测试Portlets

Portal是一个包含很多自定义的、可定制网页的Web应用。一个Portal应用里面包含有多个Portlets,而Porlets是一些web组 件,可以嵌入到Portal应用里面。在上一篇文章《SOA概念的一些个人见解》中,我提到过SOA的服务包含表示层服务,这些Portlets可以看作 是表示层的服务。

本文介绍了如何使用Netbeans创建、部署和测试Portlets

[Read More]

发表于 Sun Functional 校园大使 [NetBeans] ( 五月 23, 2008 09:24 下午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080508 星期四 2008年05月08日

VWP+JPA+AJAX实现自动完成(autocomplete)文本框

    Netbeans6.0里面的Visual Web Pack是一个基于JSF的可视化网页开发工具包,VWP使用的是Woodstock的JSF组件,这些组件使用起来非常方便,但通过大量的实践项目表 明,在VWP里面使用AJAX技术并不容易。虽然DynamicFaces组件库提供了AJAX Zone和AJAX Transaction 的组件,但是我发现,在Netbeans 6.0正式版以后的版本里面都无法正常使用这两个组件,原因是这些组件是基于一个旧版本的DOJO,而Netbeans6.0里面使用的是新版本的 DOJO,因此不再兼容。jMaki框架支持JSF,但Dojo的有些组件的某些用 于绑定manageBean的一些属性却不能再使用,例如dojo.combobox不再支持selected属性,使得JSF里面使用combobox 非常困难。在希望兼容性问题快点得到解决的同时,本文尝试使用另外一种方案来实现JSF,特别是VWP里面的AJAX。本文将实现一个 autocomplete文本框,其中数据通过JPA从数据库中获取,用户可以在文本框里输入某些关键字,从而快速地找出自己希望得到的结果。[Read More]

发表于 Sun Functional 校园大使 [NetBeans] ( 五月 08, 2008 10:24 上午 ) Permalink | 评论[0]
http://developers.sun.com.cn/blog/functionalca/date/20080423 星期三 2008年04月23日

在jMaki中对表格进行查询和删除

jMaki集成了Dojo,Yahoo,Google Web ToolKit等Ajax框架,使用jMaki框架可以使web应用程序用户体验迅速提升,本实验通过使用Dojo的Data Table,通过JPA(Java Persistence API)来实现与后台数据库进行交互。

 

软件需求

开始之前,需要在您的计算机中安装以下软件。

1、JavaSE 5以上版本
2、Netbeans IDE 6.0 beta 或以上的版本(自带JavaDB),注意选择完全安装版
3、Netbeans jMaki ajax support,该插件可以通过在Netbeans中选择“工具(Tools)”-“插件(plugin)”-“可用插件(available)”,在列表中可以找到该插件。

实验步骤

第一部分:查询功能(30分钟) 

1、构建数据库:在Netbeans里打开"服务(Runtime)"窗口,展开数据库节点,右键单击"jdbc:derby://localhost:1527/sample"这个连接,选择连接,注意用户名和密码都是app。再次右击该连接,选择"执行命令(Execute Command)",输入以下SQL脚本并执行:
create table BOOKS (title varchar(255),
                    author varchar(255),
                    isbn varchar(255),
                    description varchar(255),
                    PRIMARY KEY (isbn))

该SQL语句创建了BOOKS表格,以下SQL语句在表格中插入一些数据:
INSERT INTO BOOKS VALUES('Galloway Book of Running', 'Jeff Galloway', 'ABC001', 'The best book on running');
INSERT INTO BOOKS VALUES('The Complete Book of Running', 'James Fixx', 'ABC002', 'Oldest book of running');
INSERT INTO BOOKS VALUES('The Runners Handbook', 'Bob Glover', 'ABC003', 'Bestselling Guide for Beginning and Intermediate Runners');
INSERT INTO BOOKS VALUES('Daniel Running Formula', 'Jack Tupper Daniels', 'ABC004', 'Proven programs 800m to Marathon');
INSERT INTO BOOKS VALUES('Chi Running', 'Danny Drever', 'ABC005', 'Revolutionary approach to effortless, injury-free running');
INSERT INTO BOOKS VALUES('Running for Mortals', 'John Bingham', 'ABC006', 'A common sense plan for changing your life through running');
INSERT INTO BOOKS VALUES('Marathoning for Mortals', 'John Bingham', 'ABC007', 'Regular person guide to marathon');
INSERT INTO BOOKS VALUES('Marathon', 'Hal Higdon', 'ABC008', 'The Ultimate Training Guide');


2、创建项目:新建一个Web应用程序,命名为jmakijpademo:


选择jmaki框架:

点击完成,主窗口会自动打开index.jsp,在组件面板中拖一个Dojo的Table到标签:
<div id="content" style="height:400px">下面,如下图所示:

2、创建持久化单元。右键单击jmakijpademo项目结构,选择"新建"-"通过数据库生成实体类",首先选择新建数据源:

选择BOOKS:

 

点击下一步,再点击"创建持久化单元":

点击创建后,"包名"写上 server:

点击完成,持久性单元即被创建,在配置文件中我们就可以看到persistence.xml这个持久化单元的配置文件了。

3、添加NameQuery。打开源包中的server-Books.java,在
@NamedQueries({@NamedQuery(name = "Books.findByTitle",........
中的@NamedQuery前面添加一个NamedQuery:
@NamedQuery(name = "Books.findAll", query = "SELECT b FROM Books b"), 注意后面的逗号不要漏了。

4、创建数据读取服务data.jsp。右键单击项目结构,新建一个JSP页面,命名为data,将页面代码替换为以下代码:
<%@ page import="java.util.*" %>
<%@ page import="server.Books" %>
<%@ page import="javax.persistence.*" %>

<%
  EntityManagerFactory emf=Persistence.createEntityManagerFactory("jmakijpademoPU");
  EntityManager em = emf.createEntityManager();

  List<Books> list = em.createNamedQuery("Books.findAll").getResultList();

  out.println("{columns : [" +
    "{ label : 'Title', id : 'title'}," +
    "{ label :'Author', id : 'author'}," +
    "{ label :'ISBN', id : 'isbn'}," +
    "{ label :'Description', id : 'description'}" +
    "],");

    out.println("rows: [");
    for (int i=0; i<list.size(); i++) {
      Books b = list.get(i);
      out.print("{ id: '" + b.getIsbn() + "', " +
        "title: '" + b.getTitle() + "'," +
        "author: '" + b.getAuthor() + "'," +
        "isbn: '" + b.getIsbn() + "'," +
        "description: '" + b.getDescription() + "'}");
      if (i < list.size()-1)
        out.println(",");
      else
        out.println();
    }
    out.println("] }");
  %>

注意红色部分的代码是持久化单元的名称,这个名称对应于persistence.xml中的持久化单元名称,必须对应,否则程序将无法正常运行。这段代码事实上是通过持久化单元管理者读取出所有的记录,并构造一个JSON的数据结构

5、打开index.jsp,把widget标签替换为以下:
<a:widget name="dojo.table" service="data.jsp"/>

6、运行项目,我们可以看到数据表中的数据都是从数据库中读取的:

 

第二部分:删除功能(15分钟)

1、添加删除的NamedQuery:在NamedQueries集合里面添加:
@NamedQuery(name = "Books.deleteByIsbn", query = "DELETE FROM Books b WHERE b.isbn = :isbn")

2、创建删除服务delete.jsp。创建一个JSP文件,命名为delete,将代码替换为以下的代码:
<%@ page import="javax.persistence.*" %>

<%
  String isbn = request.getParameter("isbn");
  EntityManagerFactory emf = Persistence.createEntityManagerFactory("jmakijpademoPU");
  EntityManager em = emf.createEntityManager();

  em.getTransaction().begin();
  em.createNamedQuery("Books.deleteByIsbn").
    setParameter("isbn", isbn).
    executeUpdate();
  em.getTransaction().commit();
%>

注意持久化单元的名称一定要正确。

3、我们企图通过响应客户端的一个onSelected事件,在此事件触发后,我们就把选中的那条记录删掉。由于这是一个客户端事件,我们必须在客户端去处理这个事件。打开glue.js,找到
jmaki.subscribe("*onSelect", function(args) {
    jmaki.log("glue.js : onSelect request from: " + args.widgetId);
});
这段代码,在jmaki.log这行下面添加以下处理代码:
jmaki.doAjax({method: "POST",
  url: "delete.jsp?isbn=" + encodeURIComponent(args.value.isbn),
  callback: function(_req) {
    jmaki.publish('/jmaki/table/removeRow', { targetId: args.value.isbn });
  }
});

这里,首先获得选中的isbn号,传递给delete.jsp,在数据库中删除选中的记录,回调的时候再把最新的数据发布(在页面删除那行记录)。

4、打开index.jsp,在widget标签里面添加suscribe属性,变为:

<a:widget name="dojo.table" service="data.jsp" subscribe="/jmaki/table"/>

5、单击项目右键,选择"取消部署后再重新部署",刷新一下页面,点击某一行,这行就会被删掉。我们可以在HTTP监视器里面看到这一过程:

 当然,我们也可以使用Yahoo的Data Table,其原理都是一样的。

Demo的来源:http://blogs.sun.com/arungupta/entry/totd_15_delete_update_row



发表于 Sun Functional 校园大使 [NetBeans] ( 四月 23, 2008 04:38 下午 ) Permalink | 评论[0]