etmvc框架介绍教学内容.doc
《etmvc框架介绍教学内容.doc》由会员分享,可在线阅读,更多相关《etmvc框架介绍教学内容.doc(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。etmvc框架介绍-etmvc框架介绍如今的JavaWeb开发对于需求来说已经变得过于复杂。当今众多Java领域的Web开发框架不仅使用复杂,而且并没有很好的遵循DontRepeatYourself(DRY)原则。一、什么是etmvc?etmvc是一套轻量级简易高效的WEB开发框架,严格遵循MVC的思想。et一词源于1982年斯皮尔伯格执导的一部温馨科幻片E.T.(外星人),意思就是来自外星人的,不受束缚的MVC,开发者可以快乐地做WEB开发,而不受传统的烦杂折磨。etmvc是基于Java技术,为WEB
2、开发提供的一套简易MVC框架。简易但不简单,其设计和实现借鉴业界众多的优秀框架,如struts,springmvc,ror,grails等,力图为Java开发人员提供一套高效的开发框架。 基于java技术开发,继承其强大、稳定、安全、高效、跨平台等多方面的优点 约定优于配置,免除开发过程中的配置之苦 具有良好的自我扩展能力 易于同spring等IOC框架进行集成 从实用的角度出发,精益求精,从实际开发经验中提取有用的模型 设计专门同EXTJS等框架进行整合的机制二、etmvc框架定位我们给这个框架的定位如下: 简易:代码要简单,开发要容易。约定优于配置,再也没有XML的配置之苦。 性能:在满足
3、功能的前提下尽量地提高性能。 实用:没有太多花哨的东西,一切从实用的角度考虑。三、授权协议etmvc框架采用LGPL授权。四、etmvc框架的组成etmvc框架包括mvc和一个可选的orm实现,可选的orm实现是一个ActiveRecord框架,独立于mvc,可以在非WEB的应用程序中使用。五、etmvc框架的安装1. 获取最新的框架:从本站获取最新的etmvc框架。2. 建立WEB项目,将下载的压缩文件解压至项目的/WEB-INF/lib目录中。3. 配置数据库,在/WEB-INF/classes目录中建立数据库连接配置文件activerecord.properties,配置示例:domai
4、n_base_class=com.et.ar.ActiveRecordBasecom.et.ar.ActiveRecordBase.driver_class=com.mysql.jdbc.Drivercom.et.ar.ActiveRecordBase.url=jdbc:mysql:/localhost/mydbcom.et.ar.ActiveRecordBase.username=rootcom.et.ar.ActiveRecordBase.password=soft123456com.et.ar.ActiveRecordBase.pool_size=24. 配置/WEB-INF/web.x
5、ml,添加一个过滤器,配置示例:etmvccom.et.mvc.DispatcherFiltercontrollerBasePackagecontrollersviewBasePath/viewsetmvc/*5. 建立保存视图模板的目录/views。六、etmvc框架的基本概念1. controller:控制器是属于请求范围的,用于处理请求,创建或者准备响应。每次请求都会创建一个控制器实例,控制器的类名必须以Controller结尾,一般整个应用程序会创建一个控制器的基类2. ApplicationController,然后具体的其它控制器再继承之。3. action:每个URL操作将映射到
6、一个action上,一个action是一个控制器的方法,一个控制器可以管理彼此相关的多个action。一个控制器中标准的action命名参考:o index:默认的动作o show:显示动作o create:新建动作o save:保存动作o edit:修改动作o update:更新动作o destroy:删除动作4. model:模型,是一个数据实体,将对应到具体的数据表中,这种映射关系是通过ActiveRecord实现的。所以数据表中的字段名就是模型对象中的属性名,不再需要用XML配置描述了。view:视图,etmvc支持多种视图,甚至一个action多视图,最常用的视图是JspView,在
7、AJAX应用中是JsonView,下载处理二进制数据时是BinaryView,等等。关于etmvc的配置etmvc遵循“约定优于配置”的原则,通过文件的命名及存放位置来代替显式的配置,避免编写烦杂的XML配置文件。etmvc的配置只有一处,即在web.xml中配置一个filter,如下所示:etmvccom.et.mvc.DispatcherFiltercontrollerBasePackagecontrollersviewBasePath/viewspluginplugin.OcrServeretmvc/*其中,filter的初始参数有三个:controllerBasePackage,vie
8、wBasePath,plugin,说明如下:1controllerBasePackage是控制器的基包名称,如controllers,所有的控制器类必须在controllers包中,或者在controllers的子包中。控制器类必须以Controller结尾,必须继承Controller,比如有如下的控制器类:packagecontrollers;publicclassArticleControllerextendsApplicationControllerpublicViewshowImage(intid)throwsException/.publicViewdownload(intid)t
9、hrowsException/.publicvoidcreate()控制器包名是controllers,控制器类名是ArticleController,有showImage等Action方法。2viewBasePath是存放视图模板的位置,如下所示:视图模板的目录结构有一定的规则,在viewBasePath目录下是控制器名称(小写),再往下是对应每个Action方法的视图文件。如ArticleController控制器中的方法create对应到/article/create.jsp视图文件,即执行控制器的create方法后,etmvc根据执行的结果找到对应的视图进行渲染。3plugin是插件的
10、配置,一般情况下无须用到,所以不用配置该项,关于插件的使用留到后面的章节再作介绍。Hello,World经典示例我们利用etmvc来建立一个Hello,World的WEB应用程序。一、首先,建立新的WEB项目,引入et-mvc.jar和paranamer-1.3.jar,配置web.xml,加入一个过滤器,如下所示:etmvccom.et.mvc.DispatcherFiltercontrollerBasePackagecontrollersviewBasePath/viewsetmvc/*我们看到,过滤器com.et.mvc.DispatcherFilter目前只有二个参数,controll
11、erBasePackage指的是控制器的包名,viewBasePath指的是视图模板的存放目录。二、接下来,我们开始编写控制器HelloController,一般我们会编写控制器基类ApplicationController,我们的HelloController会继承它。注意到,控制器的包名是controllers,这就是前面配置中的controllerBasePackage配置值。packagecontrollers;importcom.et.mvc.Controller;publicclassApplicationControllerextendsControllerpackagecont
12、rollers;importcom.et.mvc.TextView;publicclassHelloControllerextendsApplicationControllerpublicTextViewsay()returnnewTextView(hello,world);三、至些,我们的Hello,World程序编写完毕,部署后在浏览器地址栏输入http:/localhost:8080/helloworld/hello/say,将会输出hello,world字。controller理解并使用控制器UpdatedDec13,2009bystwor.我们举个简单的例子说明一下从浏览器发送请求到
13、服务器处理完请求返回信息给浏览器的过程。1、浏览器发出http:/localhost:8084/myweb/user/list这个请求,服务器将从这个URL分析出如下信息:myweb:上下文路径信息User:控制器信息list:动作信息2、服务器根据这个信息查找控制器UserController中的list方法,并执行之。3、服务器将查找名称是list.jsp的视图并将处理结果传递到视图,完成渲染过程。整个处理过程简单来说就是这样。每个请求都会创建新的控制器实例,控制器的类名必须以Controller结尾,必须继承Controller类,比如ApplicationController,Hell
14、oController等,控制器的Action方法允许继承,我们一般都会创建一个根控制器,然后让其他控制器统一继承这个根控制器。每个控制器允许有多个Action操作,这些操作将映射到相应的URL上。比如有如下的控制器:publicclassUserControllerextendsApplicationControllerpublicvoidcreate()publicViewsave(Useruser)throwsExceptionpublicvoidlogin(Stringname,Stringpassword)throwsExceptionpublicvoidlogout()throws
15、Exception将相应的URL映射到控制器的Action方法上:URLAction方法/user/createcreate/user/savesave/user/loginlogin/user/logoutlogout至此,我们看到编写控制器处理WEB请求就是这样简单。控制器的Action方法接受不同的参数,这些参数将自动绑定到Request的参数,方法可以返回不同的类型,比如void,String,JsonView,BinaryView等,etmvc将据此确定处理后以何种视图返回。下面我们以一个用户登录的例子来说明控制器的一般用法:1、建立控制器,如下所示:packagecontrolle
16、rs;publicclassUserControllerextendsApplicationControllerpublicvoidlogin()publicStringhandleLogin(Stringusername,Stringpassword)throwsExceptionreturn你输入的用户:+username+密码:+password;我们定义了二个Action方法,一个是login,该方法返回值是void,系统默认将寻找/views/user/login.jsp的视图进行显示,另一个是handleLogin,该方法将简单地将用户登录信息显示出来。2、我们来建立login.j
17、sp视图:formaction=method=POST用户名:密码:我们看到FORM中的action的URL指向,这个URL将映射到我们控制器中的handleLogin方法,而该方法将返回String类型,etmvc将其解释了文本视图,所以将会在浏览器上显示登录的信息。actionAction方法和控制器环境UpdatedDec13,2009bystwor.当请求到达时,etmvc将创建控制器对象,控制器对象会查找与“被请求的action”同名的public实例方法。如此看来,控制器的Action方法是允许被继承的。如果你希望某些方法不被作为action调用,可以将其声明为protected或
18、者private。比如有如下的控制器:publicclassBlogControllerextendsApplicationControllerpublicStringshow()returnshowmethod;protectedStringcreate()returncreatemethod;当访问/blog/show时将输入框“showmethod”,而访问/blog/create时将有“Therequestedresource(/test1/blog/create)isnotavailable”的信息。Action方法允许使用控制器环境提供的一些对象: request response
19、 session servletContext controllerPath controllerName actionPath flash exception他们的作用应该不言自明,其中flash对象的使用方法我们将分出一个主题专门作介绍。view关于etmvc的视图UpdatedDec13,2009bystwor.我们来探讨etmvc如何使用视图,前面关于“Action方法”的介绍中我们提到,每个请求将会映射到一个Action方法。etmvc将根据Action方法的返回类型来决定使用何种视图,大体有以下三种:1. 返回void时将使用JSP视图。2. 返回String时将字符串直接输出至浏
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- etmvc 框架 介绍 教学内容
限制150内