原创  Click FrameWork框架初体验 收藏

 Click一个高性能的J2EE Web应用程序框架适用商业Java开发者。它具有:
 ◆ 简单易学,
 ◆ 面向页面与组件设计,
 ◆ 基于事件编程模型,
 ◆ 自动表单验证,
 ◆ 使用Velocity模板作为页面视图,
 ◆ 漂亮的错误报告功能,
 ◆ 使用Rico(一个开源的JavaScript库,它提供对AJAX完全支持并可让Web应用程序支持拖放操作等其它功能)来对AJAX的支持等。
(摘自JAVA开源大全)
官方网站:
http://click.sourceforge.net/
最近帮朋友写了个毕业设计,由于时间比较紧迫于是选择了这个简单快速的框架作为Web层的实现。
Click框架对Spring的支持也是比较好的,只需要在WEB配置中配置:
<servlet>
        <servlet-name>click-servlet</servlet-name>
        <servlet-class>net.sf.click.extras.spring.SpringClickServlet</servlet-class>
        <init-param>
            <param-name>spring-path</param-name>
            <param-value>/applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>0</load-on-startup>
    </servlet>

而且使用的是Velocity模板作为页面的试图,并有一套比较完善的组件,组件提供了方便的数据绑定功能。
而且通过母版页面可以很方便的实现像ASP.NET的Masterpage一样的功能。
例如:
package page;

import java.util.List;
import net.sf.click.control.*;
import dao.HibernateCarbrankDAO;

public class Index extends BorderPage {
    
public Table table=new Table();
    
public Index() {
        
// TODO 自动生成构造函数存根
        table.setClass(Table.CLASS_ITS);
        table.setPageSize(
10);
        table.setShowBanner(
true);
        table.setSortable(
true);

        table.addColumn(
new Column("id"));
        table.addColumn(
new Column("brankName"));
    }

    
public void onRender() {
        HibernateCarbrankDAO dao
=(HibernateCarbrankDAO)this.getBean("HibernateCarbrankDAO");
        List list 
=(List)dao.list();
        table.setRowList(list);
    }


}
该类又BorderPage继承而来,BorderPage重写了getTemplate() 的方法。
此时,前台页面只需要一个:
$table
就可以显示
BorderPage模板的内容以及该页面的数据内容。

在WEBWORK框架的官网上有个视频演示叫WhyClick,演示了如何快捷的使用Click开发。当我第一次看这个视频的时候,我感到很惊讶:“原来可以这样做网页!”在几分钟之类你已经完成了一个比较完美的页面。

最后总结一下开发过程中的一些问题:
1、Click中文显示问题。
Click显示中文时候,按默认的配置会显示乱码,你可以在Click.xml中配置编码:
<click-app charset="GBK">
<pages package="page" automapping="true">
   
</pages>
<headers>
   
<header name="Content-Type" value="text/html;charset=GBK"/>
 
</headers>
<mode value="debug">
</mode>
</click-app> 

也可以使用UTF-8编码,并在velocity.properties文件中配置:
input.encoding=GBK
注意编码要统一,如果用UTF-8就要全部配置为UTF-8。
2、在Click中使用FCKEditor控件。
FCKEditor控件的JAVA版本可以有三种使用方式,在Click中大约只能是JAVASCRIPT方式。
至于FCKEditor的配置方式网上文章不少就不重复了。
在Click中使用时候首先需要在Page类中申明一个TextArea控件:
package page.admin;

import pojo.*;
import dao.*;
import net.sf.click.control.*;
public class CompanyBusEdit extends SecurePage {

    
public CompanyPro compro=null;
    
public String staticcontent;
    
public Form form = new Form();
    
public TextArea FCKeditor1;
    
public CompanyBusEdit() {
        
// TODO Auto-generated constructor stub
        FCKeditor1=new TextArea("联系我们");
        FCKeditor1.setId(
"FCKeditor1");
        FCKeditor1.setWidth(
"800px");
        form.add(FCKeditor1);
        form.add(
new Submit("ok""提交"));
    }

public void onRender(){
        
        HibernateCompanyProDAO comdao
=(HibernateCompanyProDAO)getBean("HibernateCompanyProDAO");    
        compro
=(CompanyPro)comdao.load(1);
        staticcontent
=compro.getBusinessLinks();
    }

     
public void onPost(){
         HibernateCompanyProDAO comdao
=(HibernateCompanyProDAO)getBean("HibernateCompanyProDAO");
         compro
=(CompanyPro)comdao.load(1);
         compro.setBusinessLinks(FCKeditor1.getValue());
         comdao.saveOrUpdate(compro,
1);
     }


}

这里我申明了一个叫FCKEditor1的TextArea,在页面中:
<style>
table
{
width
:100%;
height
:auto;
}

textarea
{
height
:400px;
}

</style>
<script type="text/javascript" src="/CarSale/fckeditor.js"></script>
<script type="text/javascript" src="/CarSale/fckconfig.js"></script>
<script type="text/javascript">
 
var oFCKeditor = new FCKeditor('FCKeditor1');
 window.onload 
= function(){
 
// var oFCKeditor = new FCKeditor('FCKeditor1');
  oFCKeditor.BasePath = "/CarSale/";
  oFCKeditor.Config[
"LinkBrowserURL"]="/CarSale/editor/filemanager/browser/default/browser.html?Connector=connectors/jsp/connector";
  oFCKeditor.Config[
"FlashBrowserURL"]="/CarSale/editor/filemanager/browser/default/browser.html?Type=Flash&Connector=connectors/jsp/connector";
  oFCKeditor.Config[
"ImageUploadURL"]="/CarSale/editor/filemanager/upload/simpleuploader?Type=Image";
  oFCKeditor.Config[
"LinkUploadURL"]="/CarSale/editor/filemanager/upload/simpleuploader?Type=File";
  oFCKeditor.Config[
"FlashUploadURL"]="/CarSale/editor/filemanager/upload/simpleuploader?Type=Flash";
  oFCKeditor.Config[
"ImageUpload"]=true;
  oFCKeditor.ReplaceTextarea();
  }

</script>
$form
#if($form.getContext().isPost() && $form.isValid())
修改成功!
#end
3、使用Click的页面权限验证:
Click的整个Page周期中有个onSecurityCheck()事件,你可以通过重写这个函数定义你的权限验证,如:
public boolean onSecurityCheck() {
         
if (getContext().getSessionAttribute("user")!=null{
             
return true;
         }
else{
             setRedirect(Login.
class);
             
return false;
         }

     }

这个框架并没有花费我多少时间去学习他,正如作者所说的,它很简单易学。你也可以研读它的源文件开发自己的控件。而且这个框架很小,代码非常的简洁。目前最新的版本是1.2。
不过,目前使用这个框架的人并不多。国内流行的还是struct,spring,webwork等。可以供学习的资料不多。
不过作者提供了一个比较完整的演示和文档说明。如果有人感兴趣可以一起学习。

发表于 @ 2007年05月20日 03:27:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:MasterPage的BUG | 新一篇:(ActionScript 3.0 Cookbook笔记兼翻译)第一章 Action Script基础(上)

  • 发表评论
  • 评论内容:
  •  
Copyright © lulustray
Powered by CSDN Blog