EasyJWeb入门手册.docx
- 文档编号:13917602
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:20
- 大小:178.04KB
EasyJWeb入门手册.docx
《EasyJWeb入门手册.docx》由会员分享,可在线阅读,更多相关《EasyJWeb入门手册.docx(20页珍藏版)》请在冰点文库上搜索。
EasyJWeb入门手册
EasyJWeb入门手册
简介
EasyJWeb是基于java技术,能实现企业级JavaWeb应用程序快速开发的MVC框架。
框架设计构思来源于国内众多项目实践,框架的设计及实现借鉴当前主要流行的开源Web框架(Rails、Struts、JSF、Tapestry),吸取其优点及精华,是一个完全由来自中国的开源爱好者开发、文档及注释全中文的开源框架。
EasyJWeb由四个部分组成:
1、核心MVC。
EasyJWeb的核心是一个基于模板技术实现的MVC框架;他能让你用非常简洁的代码写基于Java的Web应用。
2、容器及通用业务逻辑封装。
作为一个旨在让基于Java的Web应用程序开发变得直接、快速的框架,EasyJWeb提供了一个超级IoC容器,并对一些企业级应用中通用的业务逻辑如分页、查询、DAO等进行了封装,提供了一套可以直接操作、应用企业资源的组件及API。
3、代码生成引擎及工具。
仅仅依靠一个灵活、简易的MVC核心引擎还不能最大、限度的提高开发速度,因此EasyJWeb提供了一个非常灵活、易用的代码生成引擎及工具,通过使用代码生成引擎,可以快速完成基于JavaEE平台的企业级应用程序生成。
如数据库添删改查(CRUD)代码生成、自动页面模版生成、配置文件管理等。
4、EasyJWeb插件体系,EasyJWeb各种实用功能的扩展,可以灵活地通过基于插件的形式安装到EasyJWeb中,提供各种针对性的功能。
如ajax实用插件、代码生成插件等。
EasyJWeb的特点:
1、快速开发支持
EasyJWeb是首要目标即实现基于JavaEE的Web应用程序快速开发。
通过EasyJWeb的核心MVC、通用业务逻辑抽象、代码自动生成、插件体系等几个部分有机组合,能实现企业级的JavaWeb应用程序开发。
2、零配置及约定配置
通过配置可以让程序变得更加的灵活、易维护及扩展,配置的滥用会造成维护配置麻烦。
因些,EasyJWeb基于尽可能简化配置的原则,实现了零配置支持,同时为了保证系统的灵活性及可扩展性,还提供了很多的约定配置支持。
3、优雅的视图支持,页面及程序完全分离。
EasyJWeb提供了非常优雅的视图支持能力,不但实现了视图页面模板与程序逻辑的完全分离,克服了传统jsp页面难于维护的问题,而且还实现了对页面纯天然的支持能力,使得非常适用于企业级应用中的页面制作人员与程序的分工合作。
4、超级IoC容器
作为一个主要用于Java企业级应用程序开发的框架,EasyJWeb实现了IoC容器,提供非常灵活的注入方式,并能支持Spring、Guice等异构容器实现。
5、Ajax支持
EasyJWeb内置了对远程javascript脚本调用功能,可以使用javascript直接访问服务端的业务组件。
另外EasyJWeb通过使用prototype.js及其它一些来自开源社区ajax特效工具,提供了丰富的Ajax支持。
环境需求
安装配置EasyJWeb
获取EasyJWebSDK
EasyJWeb作为一个开源项目,我们首先来看看与其相关的资源:
官方网站:
EasyJWeb协同开发源码库SVN:
ttp:
//
EasyJWeb源码http下载:
快速安装
进入快速体验,步骤如下:
1、下载源码并解压;
2、在命令行执行bin\easyjwebcrudd:
\myppp
3、切换到d:
\mypp\bin目录,执行sample
4、通过http:
//localost:
82/ejf/account/list查看运行效果。
快速入门与示例
EasyJWeb版的HelloWorld!
下面,我们以一个老掉牙的示例"HelloWorld!
"来开始EasyJWeb的应用程序,我们这里把"HelloWorld!
"改成"喂,您好,EasyJWeb1.0发布了,请支持国产开源项目!
",另外还将显示一个系统当前的时间。
第一步,建立项目:
打开eclipse,新建一个tomcat项目(我使用的tomcat插件,如果是其它插件,通常是建立一个web项目),这里我们将context名称设为“/”,字符集设置为utf-8。
项目目录结构如下:
src目录为源码目录,存放源码文件,lib目录为jar包目录,存放需要用到的jar包。
接下来新建一个包com.easyjweb.action,然后将easyjweb-1.0.jar以及EasyJWeb的依赖包放到lib目录,并将它添加到buildpath中。
第二步,配置web.xml文件:
在web-inf目录下新建web.xml文件,输入一下内容:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" 第三步,写EasyJWebActionHelloAction.java: 在包com.easyjweb.action下建一个名为HelloAction.java的文件。 内容如下: packagecom.easyjweb.action; importjava.util.Date; importcom.easyjf.web.IWebAction; importcom.easyjf.web.Module; importcom.easyjf.web.Page; importcom.easyjf.web.WebForm; publicclassHelloActionimplementsIWebAction{ publicPageexecute(WebFormform,Modulemodule)throwsException{ form.addResult("msg","喂,您好,EasyJWeb1.0发布了,请支持国产开源项目! ");//设置VO对象msg的值。 form.addResult("time",newDate());//设置VO对象time的值为当前时间 returnnewPage("hello","/hello.html"); } } 第三步,建立EasyJWeb显示页面模板文件 在/web-inf目录下新建目录views,并在这个目录下新建一个名为hello.html的文件,注意保存的时候请选择utf-8编码,helllo.html文件的全部内容如下:
$!
msg
当前时间:
$!
time
至此,项目建立完毕,项目结构如下图:
最后一步:
启动Tomcat并运行HelloEasyJWeb应用程序
启动Tomcat,然后在地址栏中输入http:
//localhost:
8080/hello.ejf即可看到如下图所示的运行结果:
我们来简单介绍一下这个简单的EasyJWeb应用。
在上面这个应用中,我们可以看到,EasyJWeb应用主要包括两个部分:
用Java实现的Action以及业务逻辑和一个Html模板(这里并不是使用的单纯的Html,还有Velocity脚本)。
这里我们简单介绍一下Action部分,Velocity部分请参考《EasyJWeb-Velocity脚本简明教程》,你可以通过这个地址下载该教程:
在这个Action实现IWebAction接口,IWebAction接口只有一个方法execute。
这个方法有两个参数:
WebForm和Module,返回一个Page对象。
WebForm负责封装用于用户端显示的数据,程序对WebForm进行处理,并根据Module封装的该模块的配置信息返回一个Page对象(本例中使用的是手动创建一个Page对象,也可以通过使用module.findPage("")方法来获取一个配置好的Page对象),告诉框架返回哪个页面。
在程序中用到了WebForm的addResult方法,这个方法主要是用来添加要在客户端显示的数据。
以这个程序为例,在执行了form.addResult("time",newDate());这一句之后,就可以在模板中使用$!
time来调用这个Date对象。
一个简单的例子,相信大家对EasyJWeb有了大概了解。
好的,我们再稍微深入一点,将这个例子改造一下,实现稍微复杂一些的功能。
我们在客户端增加一个文本框,输入用户名,提交到后台处理。
我们先看看模板页:
userName"/> $! msg 当前时间: $! time 现在我们看看修改后的Action: publicclassHelloActionimplementsIWebAction{ publicPageexecute(WebFormform,Modulemodule)throwsException{ StringuserName=(String)form.get("userName"); if(userName! =null&&! ("".equals(userName))){ form.addResult("msg",""+userName+",您好,EasyJWeb1.0发布了,请支持国产开源项目! "); }else{ form.addResult("msg","喂,您好,EasyJWeb1.0发布了,请支持国产开源项目! "); } form.addResult("time",newDate()); returnnewPage("hello","/hello.html"); } } 这里多了一句“StringuserName=(String)form.get("userName");”,这里的form.get("userName")用来获取客户端表单域里的userName文本框的值。 现在我们来运行一下这个例子。 在客户端输入http: //localhost: 8080/hello.ejf,界面如下: 我们输入“friend”,然后提交,会出现下面的界面: 到这里,相信大家应该了解了在EasyJWeb应用中如何获取客户端数据和向客户端传递数据。 接下来我们再深入一点,将这个例子改为用户登录并显示用户的用户名和密码的例子,进一步的了解在EasyJWeb中是如何将对象数据传递给客户端并显示出来的。 在这个例子中我们首先创建一个domain——User.java,代码如下: publicclassUser{ privateStringname; privateStringpassword; publicStringgetName(){ return"tianyi"; } publicvoidsetName(Stringname){ this.name=name; } publicStringgetPassword(){ return"123"; } publicvoidsetPassword(Stringpassword){ this.password=password; } } 然后我们看看修改后的Action,代码如下: publicclassHelloActionimplementsIWebAction{ publicPageexecute(WebFormform,Modulemodule)throwsException{ StringuserName=(String)form.get("userName"); Stringpassword=(String)form.get("passsword"); Useruser=newUser(); if(userName! =null&&! (user.getName().equals(userName))&&password! =null&&user.getPassword().equals(password)){ form.addPo(user); form.addResult("msg","登录成功! "); }else{ form.addResult("msg","登录失败! "); } form.addResult("time",newDate()); returnnewPage("hello","/hello.html"); } } 这里有一条语句form.addPo(user),这天语句用来将对象user的每一个属性值都传递到客户端。 执行了这条语句之后在模板中可以直接使用$! name来显示user的name属性值。 这里还可以这样写form.addResult("user",user),然后在模板中这样调用: $! user.name,$! user.password。 具体的Velocity用法请参考EasyJF官方网站上的教程。 最后我们修改一下模板文件,代码如下:
您的用户名为:
$!
name
您的密码为:
$!
password
$!
msg
当前时间:
$!
time
在浏览器中输入http:
//localhost:
8080/hello.ejf访问,界面如下:
在输入框中分别输入tianyi和123,提交,返回界面如下:
到这里相信大家对EasyJWeb的基本使用方法已经了解了,下面我们将介绍EasyJWebTools的用法。
EasyJWebCrud
EasyJWebTools
前面我们创建了一个最简单的应用HelloWorld,现在我们来创建一个完整的EasyJWeb应用。
在这里我们将要用到EasyJWebTools这个包。
EasyJWebTools是EasyJWeb的一个重要部分。
通常在Action层我们需要对客户端提交的数据做判断,进行流程控制,因此会有大量的ifelse语句。
通过EasyJWebTools的业务引擎基本模型,只要编程者按照我们的模型规范进行编程,即可去除烦琐的ifelse语句。
下面我们用一个例子来做简要说明。
AbstractCmdAction、AbstractPageCmdAction、AbstractCrudAction这三个类是EasyJWebTools中最重要的三个抽象Action类,这三个类又以AbstractCmdAction为基础类。
AbstractCmdAction类对Action命令进行封装,用于为提供命令式WebAction的写法,用户直接调用,可以减少书写繁锁的if语句。
如果不使用AbstractCmdAction,那么就像struts一样每一个操作都要写一个Action,开发效率比较低。
如果使用AbstractCmdAction,就可以在一个Action中执行多个操作,只需要在客户端传递一个名为easyJWebCommand的参数即可,AbstractCmdAction会根据这个参数来选择执行哪个方法。
假设现在客户端传递来的参数值是save,那么将会执行doSave()方法,其它的以此类推。
AbstractPageCmdAction类继承自AbstractCmdAction类。
AbstractPageCmdAction对返回的Page对象进行了处理,用来支持更加灵活的参数调用。
使用这个类可以实现零配置,并且不用显示的返回Page对象,它会根据类名、命令参数值和配置好的view路径来自动创建一个Page对象。
AbstractCrudAction继承自AbstractPageCmdAction类,AbstractCrudAction类中对一些常用的、通用性比较强的业务逻辑方法如简单的添删改查操作进行了封装。
如doEdit()方法,这个方法通常用来指向一个编辑页面,通用性很高,因此做了封装,类似的还有很多,这里不一一列举。
下面我们将分别举例对这三个类的用法进行简要讲解。
这是一个数据字典的添删改查应用,这里我们对只对字典目录进行添删改查操作。
我们将分别使用这三个类来实现这个应用,比较这几个类的不同作用。
现在我们来看看使用AbstractCmdAction类时的Action,以下是Action的全部代码:
publicclassSystemDictionaryActionextendsAbstractCmdAction{
privateISystemDictionaryServiceservice;
publicvoidsetService(ISystemDictionaryServiceservice){
this.service=service;
}
publicPagedoList(WebFormform,Modulemodule){
QueryObjectquery=newQueryObject();
form.toPo(query);
IPageListpageList=service.getSystemDictionaryBy(query);
CommUtil.saveIPageList2WebForm(pageList,form);
returnnewPage("list","/news/dictionaryList.html");
}
publicPagedoAdd(WebFormform,Modulemodule){
returnnewPage("edit","/news/dictionaryEdit.html");
}
publicPagedoEdit(WebFormform,Modulemodule){
Longid=Long.parseLong(CommUtil.null2String(form.get("id")));
form.addPo(this.service.getSystemDictionary(id));
returnnewPage("edit","/news/dictionaryEdit.html");
}
publicPagedoSave(WebFormform,Modulemodule){
SystemDictionarydic=form.toPo(SystemDictionary.class);
this.service.addSystemDictionary(dic);
returnthis.doList(form,module);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EasyJWeb 入门 手册