随笔 - 11  文章 - 37  trackbacks - 0
<2007年8月>
2930311234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜

     摘要: Extjs官方于8月4日下午宣布发布Ext2.2版本。今天把demo加到服务器上面了,让大家过来看看.  阅读全文
posted @ 2008-08-11 14:33 我为我狂 阅读(5588) | 评论 (2)编辑 收藏
     最近在开源人网站上面看到了一个javarebel,说可以使Java class文件重新加载速度更快,节省了开发时间,而且修改了配置文件和在class中加入任何的代码都不用重启服务器(Tomcat等等),我喜出望 外,赶快去google了一下,真的有这个玩意。从google上面看到了两篇文章:
在javaeye上面:
使用JavaRebel让Scala走向动态化:
http://www.javaeye.com/news/2331
了解了是什么东西?
在csdn上面:
Java开发生产力视频: 不重新部署 Web 模块热加载类(JavaRebel)
http://blog.csdn.net/myeclipse_java/archive/2008/07/24/2707080.aspx
明白了他们的用法.
我就到这个上面下载了
http://www.zeroturnaround.com/javarebel/
最新版本的. 上面说的还要收钱,俺就用使用期限的吧!
我直接就问开源人上面的冷雨是怎么用的啊? 直接他给他发过来了一个图
原来是JVM的一个插件.把这个热部署的类加入就可以了,如下
-noverify -javaagent:E:/codeSourse/J2EE-LIB/javarebel-1.2-M1/javarebel.jar
我按照他的思路配置好了,从eclipse中的Tomcat插件启动服务(tomcat),果然是有效的.首先就打印出来的javarebel 这个插件的信息.不错不错.安装好了. 就等着能够启动开来使用呢?为什么spring的类库不加载呢?好慢! 难道是我装错了吗?还是?
   我等了好大以后才启动开来.也总算是可以开发了.但是http://localhost:8080,
难道得不到请求吗?但是我看到浏览器上面的状态条再前进啊.我确定应经请求到了. 就可太慢了.
    难道真的像网上说的能够成为不重新部署 Web 模块热加载类吗? 我不知道大家是否有所怀疑,或者是我的配置出现了错误所导致的.


posted @ 2008-08-08 10:14 我为我狂 阅读(3675) | 评论 (6)编辑 收藏

  今天我遇到了一个Data too long for column 的问题,我找了很多都没有找到. 网上没有这些问题.  我的JPA建模是这样写的:

 

    @javax.persistence.Lob
    @javax.persistence.Basic(fetch 
= javax.persistence.FetchType.LAZY)
    @Field(name 
= "文章内容", validator = @Validator(name = "string"))
    
private String content;// 文章内容

 

       他们生成数据库中的字段对应的是Text类型的. 我在想还有什么比这个text类型更大的呢?  我一直在JPA的Lob上面下功夫. 有人是用@column  中的columnDefinition属性进行控制的,但是我真的是不知道如何给这个columnDefinition  付值.  最后置只好到开源人论坛上面问了. 

  上面的回答是在一个表中 text类型的只能有一个..   我看数据库中真的是有两个text类型的字段.  把另外的一个text类型修改了varchar的.  终于成功了. 

也不知道是mysql的问题,还是JPA映射的问题. 我别的数据库没有试. 希望给大家以后不要遇到这个问题.

posted @ 2008-08-07 17:13 我为我狂 阅读(4015) | 评论 (5)编辑 收藏
   最近想做一个开源技术的一个档案,想让大家过来说说都用到了什么开源项目?然后我就要对这些项目的教程进行整理,也许对大家以后也有用处,呵呵! 希望站长宽容。   
   我想做的就是对这些开源项目的作者、 svn、下载地址,和教程进行整理。  

  希望大家说说自己了解的开源项目技术。
  
  如果打开文章的朋友请雁过留声哈!  算是能帮个忙吧!
posted @ 2008-07-31 11:51 我为我狂 阅读(1591) | 评论 (14)编辑 收藏

ExtJS提供了一套强大的事件处理机制,通过这些事件处理机制来响应用户的动作、监控控件状态变化、更新控件视图信息、与服务器进行交互等等。事件统一由Ext.EventManager对象管理,与浏览器W3C标准事件对象Event相对应,Ext封装了一个Ext.EventObject事件对象。支持事件处理的类(或接口)Ext.util.Observable,凡是继承该类的组件或类都支持往对象中添加事件处理及事件响应功能。
全屏:
http://www.vifir.com/easyjf/videos/event/play.html

posted @ 2008-07-22 09:54 我为我狂 阅读(1560) | 评论 (0)编辑 收藏

组件可以直接通过new 关键子来创建,比如要创建一个窗口,使用new Ext.Window(),创建一个表格则使用new Ext.GridPanel()。当然,除了一些普通的组件以外,一般都会在构造函数中通过传递构造参数来指定组件的各种属性。

组件的构造函数中一般都可以包含一个对象,这个对象包含创建组件所需要的配置属性及值,创建组件的时候会根据构造函数中的参数的属性值来初始化组件,

全屏:http://www.vifir.com/easyjf/videos/usePanel/play.html

posted @ 2008-07-21 15:53 我为我狂 阅读(1233) | 评论 (0)编辑 收藏

我在网上看到好多的朋友问wlr单用户的博客安装失败, 在这里我就做出一个视频. 在安装成功的基础上我视图把Ajax的上传继承到extjs中,希望对大家有所帮助.

这个上传的组件演示:   http://www.dhtmlx.com/docs/products/dhtmlxVault/index.shtml.

全屏:http://www.vifir.com/easyjf/videos/upload/play.html


dhtmlxVault的具体安装:

http://www.vifir.com/portal.ejf?cmd=topicShow&id=2523169



posted @ 2008-07-21 10:14 我为我狂 阅读(1033) | 评论 (0)编辑 收藏
从下载源代码到如何让其弹出hello world, 不好也要发出来让大家批评
全屏:http://www.vifir.com/easyjf/videos/getstart/play.html

ExtJS发布包目录:

 adapter:负责将里面提供的第三方底层库(包括Ext自带的底层库)映射为Ext所支持        的底层库。

build:压缩后的ext全部源码(里面分类存放)

docsAPI帮助文档。

exmaples:提供使用ExtJS技术做出的小实例。

resourcesExt UI资源文件目录,如CSS、图片文件都存放在这里面。

source 没有经过压缩的Ext全部的源码(里面分类存放) ,遵从Lesser GNU LGPL 开源的协议。

Ext-all.js:压缩后的Ext全部源码。

ext-all-debug.js:未经压缩的Ext全部的源码(用于调试)

ext-core.js:压缩后的Ext的核心组件,包括sources/core下的所有类。

ext-core-debug.js:未经压缩的Ext核心组件,包括sources/core下的所有类。


posted @ 2008-07-14 16:43 我为我狂 阅读(1400) | 评论 (1)编辑 收藏
ExtJS是一个Ajax框架,是一个用javascript写的,用于在客户端创建丰富多彩的web应用程序界面。ExtJS可以用来开发 RIA(Rich Internet Application,富互联网应用系统)的 AJAX应用框架, 在这里我就对他做一点简单的介绍。
http://www.vifir.com/easyjf/videos/extintro/play.html
posted @ 2008-07-14 16:41 我为我狂 阅读(1431) | 评论 (4)编辑 收藏
 好久没有来这里了. 今天按照录制书上了一个视频,发过来让大家看看.我知道做的差,请不要骂我啊.. 也是第一次.
    我在网上找了点资料,就录制成视频,也算是锻炼一下.吧

全屏:http://www.vifir.com/easyjf/videos/spket/play.html

posted @ 2008-07-14 16:40 我为我狂| 编辑 收藏

           最近学习了easyjweb,发现easyjweb和struts较量了,虽然说都传统的基于请求的MVC思想,但是它竭尽所能是java代码和页面分开了,结果的确做到了这一点,在easyjweb项目的页面上面你是找不到有java代码的,你看看页面的后缀都成了html了,不是jsp了。除此之外,easyjweb中还有独特的一面,不仅实现了像struts一样的MVC(MVC是easyjweb的核心),还有下面的具体实现:

1、容器及通用业务逻辑封装。作为一个旨在让基于Java的Web应用程序开发变得直接、快速、简易的框架,EasyJWeb提供了一个IoC容器,并对企业级应用中的一些通用业务逻辑(如分页、查询、DAO等)进行了抽象及封装,提供了一套可以直接操作、应用企业资源的组件及API。

2、代码生成引擎及工具。仅仅依靠一个灵活、简易的MVC核心引擎还不能最大限度的提高开发速度,因此EasyJWeb还提供了一个灵活、易用的代码生成引擎及工具,通过使用代码生成引擎,可以快速完成基于JavaEE平台的企业级应用程序生成。如数据库添删改查(CRUD)代码生成、自动页面模版生成、自动配置文件管理等。

3、EasyJWeb插件体系,项目中的各种实用功能的扩展,可以灵活地通过基于插件的形式安装到EasyJWeb中,提供各种针对性的功能。如ajax实用插件、代码生成插件等

   别的我也是不太了解,就MVC这方面说吧!不过我对easyjweb和struts都不是特别精通,就我对他们的了解说说我的看法吧!
第一:先来看看他们的配置文件吧!他们都有web.xml,下面的配置easyjweb和struts必须有的。
easyjweb中的web.xml文件的配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>com.easyjf.web.CharsetFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value> 
</init-param>
<init-param>
<param-name>ignore</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharsetFilter</filter-name>
<servlet-name>easyjf</servlet-name>
</filter-mapping> 
  <servlet>
    <servlet-name>easyjf</servlet-name>
    <servlet-class>com.easyjf.web.ActionServlet</servlet-class>   
  </servlet>
  <servlet-mapping>
    <servlet-name>easyjf</servlet-name>
    <url-pattern>*.ejf</url-pattern>  
  </servlet-mapping> 
</web-app>


struts中的web.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

</web-app>

 

呵呵,你可以看到easyjweb和struts都是通过自己的servlet来处理逻辑和接受http的请求。
他们分别把请求交给了easyjf-web.xml和struts-config.xml来处理请求和控制页面的转向。不过我说的都是他们默认的配置文件,你也可以在他们的web.xml中配置相应的配置文件。
如在easyjwb中的web.xml中你可以添加这样的配置

 <context-param>
  <param-name>easyjwebConfigLocation</param-name>
  <param-value>/WEB-INF/mvc.xml,/WEB-INF/mvc-bbs.xml,/WEB-INF/mvc-ec.xml,/WEB-INF/easyjf-web.xml</param-value>
 </context-param>

在struts中我想就不用说了吧!呵呵,还是说说吧!添加就可以了。如:

  <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml,/WEB-INF/struts-config-zhangsan.xml,/WEB-INF/struts-config-lisi.xml</param-  value>
    </init-param>
如果你想详细了解的话,就看easyjweb和struts配置文件的说明吧!google.com就可以了。哈哈。。。


第二:我们来看看他们的分别的easyjf-web.xml和struts-config.xml吧!只他们中最简单的地方噢!

easyjf-web.xml中的配置

<?xml version="1.0" encoding="utf-8"?>
<easyjf-web>


<module path="/hello" form="" scope="request"
  action="com.easyjweb.action.MessageAction" defaultPage="hehe">
  <page name="hehe" url="/message.html" type="template" />

</module>
</easyjf-web>


sturts-config.xml中的配置:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
  <data-sources />
  <form-beans >
   <form-bean name="productForm" type="com.cclen.forms.ProductForm"/>
  </form-beans>
 <action path="/marketWeb"
     type="com.cclen.actions.MarketWebAction"
     name="marketWebForm"
     scope="request">
     <forward name="listmarkweb"           path="/administrator/proxy/proxy_Add.jsp"></forward>
     </action>
  </action-mappings>
</struts-config>


在以easyjweb中的配置文件中,我们需要有hello.ejf来请求com.easyjweb.action.MessageAction的处理。     
不过module这里还有比struts更牛比的东西配置呢,就是Module中也包含了Page对象,控制器,拦截器,注入的bean.
这里可以参考easyjweb的文档来具体的了解。。


在struts里面中的配置文件中,我们需要有marketWeb.do来请求com.cclen.actions.MarketWebAction的处理。
哦,他们的后缀名都可以随便的改变,在需要在web.xml中配置,你改一下试试就可以明白了。

第三:终于到了Action了,这个里面的东西我们来看看了,就我知道的说啊!在网上千万可别骂我。
1、easyjweb中三种的Action分别是IWebAction  AbstractCmdAction  AbstractPageCmdAction

 struts中有两种的Acton分别是Action,DispatchAction

他们要作为父类,你要实现他们中间的方法啊!

2、easyjweb中的IWebAction相当于struts中的Action了啊!他们分别要实现的方法是:

IWebAction中要实现的方法是:

public Page execute(WebForm form, Module module) throws Exception;

struts中的Action要实现的方法是:

public ActionForward execute(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception ;

从这里就可以看到easyjweb的简易,他只有两个参数,而struts中的Action方法要有四个参数,这给测试就带来了麻烦啊!

3、easyjweb中的AbstractCmdAction相当于struts中的DispatchAction了啊!即在一个Action中提供多个处理方法,比如说:
AbstractCmdAction中有这样的处理方法:
public Page doAdd(WebForm form, Module module) throws Exception;
public Page doDel(WebForm form, Module module) throws Exception;
public Page doUpdate(WebForm form, Module module) throws Exception;

在请求中使用easyJWebCommand或者cmd传递的参数直,会作为请求执行的方法名的构成。构成的规则为doXxxx()。
如:

xxx.ejf?easyJWebCommand=add,就会执行doAdd()方法了。
这个easyjwebCommand和cmd是不用配置的,不用问他们担心了。


那么struts中的DispatchAction中就应该有这样的方法了
public ActionForward add(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception;

public ActionForward del(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception;

public ActionForward update(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception;
在请求中要通过struts-config.xml中的Action配置的parameter参数来传递,
如:
<action path="/marketWeb"
     type="com.cclen.actions.MarketWebAction"
     name="marketWebForm"
     parameter="hahahaha"
     scope="request"/>
marketWeb.do?hahahaha=del,就会执行方法
public ActionForward del(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception;

 


不过easyjweb中的AbstractCmdAction有一个默认的方法是:
public Page doInit(WebForm form, Module module)
这个方法是当你没有传入具体参数时,要调用的方法了。
就是说用 执行xxx.ejf时,就是执行上面的方法了


4、easyjweb中的AbstractPageCmdAction是非常智能的啊!struts中真的没有了啊!easyjweb中特有的方法了。
在AbstractCmdAction的基础上,EasyJWeb提供了另外一个对视图具有自动识别能力的AbstractPageCmdAction。该类能通过应用“惯例代替配置”来智能判断程序中要使用的视图模板,甚至不需要书写方法签名也可以调用视图模板。如:
public void doEdit(){}
该方法中虽然没有一句代码,也没有明确的视图切换或转向。但AbstractPageCmdAction会根据惯例原则,自动选择edit.html文件作为视图模板。
这些牛牛人啊!还弄这么智能的东西出来啊。佩服佩服!

 

第四:来看看easyjweb和struts对表单数据的获取和返回吧! 分别用easyjweb中的IWebAction和struts中的Action来说明问题吧!
 1、用实现IwebAction就要实现方法
public Page execute(WebForm form, Module module) throws Exception;
看到了吧!其中只要两个参数,webForm就可以解决获取表单数据和返回页面数据(返回页面数据就是指在action中处理过的数据将添加到页面上)
 
在WebForm中可以直接使用WebForm.get("poropertyName")来得到文本参数,而对于二进制的内容,直接使用WebForm.getFileElement("poropertyName")来处理.
一般不会用到form的,<form>元素用来定义前台页面表单的信息,一个WebForm就可以做到了。
WebForm还提供了两个方法:WebForm.toPo(Object obj):传入一个对象,直接从WebForm中拷贝值到改对象中。

WebForm.toPo(Class clazz):传入一个类型,WebForm会初始化这个类型的实例再将WebForm中的值拷贝
具体这两个方法的有更多的用法,请参考easyjweb的文档:www.easyjf.com

 

而表示层返回数据的话,就要用new WebForm().addResult()把数据添加到Velocity上下文中。WebForm也提供了一个简便的WebForm.addPo(obj)来处理多属性的对象的值的添加

还要注意这点啊 !WebForm在将数据保存到Velocity上下文时,不光要保存使用addResult方法和addPo方法放入的值,还要向Velocity上下文中保存textElement中的数据,意味着重复的数据可以不用在Action中重复的添加,这在应用中需要特别注意。

 

2、用实现Action就要实现方法
public ActionForward execute(ActionMapping mapping,ActionForm form,
   HttpServletRequest request,
   HttpServletResponse response) throws Exception ;
MessageForm messageForm = (MessageForm) form;

你可以配置ActionForm来取得数据,也可以通过request.getParameter(arg0)来去的数据,但是这里存在了情况了,但我不知道struts里面没有没更好的解决方法。比如说,对于二进制的内容,如果用到了org.apache.struts.upload.FormFile的话,你就必须用到ActionForm来取的数据了。

返回到表示层的数据就request.setAttribute("",object);


第五:页面数据的输出:

1、easyjweb中用的是Velocity作为页面引擎的,Velocity的语法简单,易学,并且是美工最喜欢的html页面,在这里你是找不到java的代码的。
2、struts有自己的标签,或者用sun公司支持的jstl标签,你不得不在页面上引用对象的类型,因为你传送到页面上的对象他们是无法识别的。
你可以看看你的jsp页面的顶部有没有这样的代码 import="java.sql.*,java.lang.*"这就是java代码啊!


第六:页面的转向。
1、easyjweb中的处理控制器就交给了Module,其实一个Module是包含着IWebAction,而在IWebAction中,却是在调用Module的资源。
如果要返回一个Page模版页面,只需要调用module.findPage("pageName")就能得到了。因为在Module中给我们配置了资源:
如:
<module path="/hello" form="" scope="request"
   action="com.easyjweb.action.MessageAction" defaultPage="hehe">
   <page name="hehe" url="/message.html" type="template" />
  </module>

它<page name="hehe" url="/message.html" type="template" />就是给我们配置的模板资源,只要在com.easyjweb.action.MessageAction 中通过module.findPage("hehe")就可以调用message.html的模板了。也可以直接返回new Page(,,),如:return new Page("succ","/user/success.html","html")


2、在struts中是把页面控制交给了ActionMapping,ActionMapping通过调用findForward(),即ActionMapping.findForward("name")转向。

如:
 <action path="/product"
            type="com.cclen.actions.ProductAction"
            name="productForm"
            parameter="method"
            >
            <forward name="listproduct" path="/administrator/product/listproduct.jsp"></forward>
           </action>
  你需要在com.cclen.actions.ProductAction中这样来指定页面ActionMapping.findForward("listproduct");


第六:我再重申一下在easyjweb中struts没有的东西。

easyjweb之所以能实现快速开发,是因为里面给我们提供了更好的实现,提供了工具类,强大的超级容器等等,由于俺是初学者,等俺精通了以后将慢慢补充easyjweb精彩方面!

 

 

 

posted @ 2007-08-16 11:41 我为我狂 阅读(2381) | 评论 (5)编辑 收藏