ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:46.75KB ,
资源ID:24516847      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24516847.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(WebWork手册.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

WebWork手册.docx

1、WebWork手册 WebWork 使用指南引言WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的拉出式MVC模式J2EE Web框架。WebWork已经被拆分成了Xwork1和WebWork2两个项目。 Xwork简洁、灵活功能强大,它是一个标准的Command模式实现,并且完全从web层脱离出来。 Xwork提供了很多核心功能:前端拦截机(interceptor),运行时表单属性验证,类型转换,强大的表达式语言(OGNL the Object Graph Notation Language),IoC(Inversion of Control倒置控制)容器等。We

2、bWork2建立在Xwork之上,处理HTTP的响应和请求。WebWork2使用ServletDispatcher将HTTP请求的变成Action(业务层Action类), session(会话)application(应用程序)范围的映射,request请求参数映射。WebWork2支持多视图表示,视图部分可以使用JSP, Velocity, FreeMarker, JasperReports,XML等。在WebWork2.2中添加了对AJAX的支持,这支持是构建在DWR与Dojo这两个框架的基础之上.用于WebWork辅助开发的一个Eclipse插件: EclipseWork文件目录web

3、work下载一般包含的目录有:webwork-2.x.jar:WebWrok最新发布的Jar包webwork-example.war :WebWrok自带的很有代表性的功能演示例webwork-migration.jar :提供快速将1.x版本移植到2.x版本所用的类文件docs:WebWrok的使用文档;包括api文档、clover文档、单元测试(Junit)文档等lib:WebWork在运行或编译时所用到的所有.jar包src: 源程序目录xwork运行当URL发生请求到动作action,将由ServletDispatcher调度,从配置文件xwork.xml里查找与提交动作匹配的Acti

4、on名字,通过这个名字XWork框架找到对应Action的类;然后 XWork框架会负责去创建这个Action类的对象并调用execute()方法进行用户注册操作。正确执行execute()方法返回String类型数据后,它会请求再派遣到用户所配置指定好的页面。 当然在action执行之前会先执行配置好的拦截器。webwork.xml中用来配置拦截器。其中params是在webwork-default.xml定义好的,可以是chain、model-driven等等。引用的是com.opensymphony.xwork.interceptor.ParametersInterceptor。拦截器将

5、作用是将request请求的参数值通过表达式语言设置到相应Action的模型里。例如:某jsp里的,它输入的值会由Action类的getUser()和User类的setUserName(“”)设置到这个User模型里。拦截器的使用,使得Action类和Web实现了完全的解耦开发步骤描述一个WEB项目使用xwork的开发过程创建WEB工程1、 新建一个WEB工程将webwork的jar包放到web应用的WEB-INFlib目录里2、 将xwork.xml、webwork.properties等webwork配置文件放到WEB-INFclasses目录配置文件Web框架都是通过web.xml配置一

6、个JavaServlet控制器提供统一的请求入口,解析请求的url,再去调用相应的Action进行业务处理。WebWork也是如此,它是在web.xml文件里配置一个派遣器ServletDispatcher,ServletDispatcher初始化WebWrok的一些配置信息,解析XWork的Action配置信息,根据请求去组装和调用执行相应的拦截器(Interceptor)、Action、Action Result(Action执行结果的输出)等。另外与Struts类似,Webwork也需要配置本身xml。这个文件是xwork.xml,也是设置action及其转向web.xml webwor

7、kcom.opensymphony.webwork.dispatcher.ServletDispatcher webwork*.action/如果使用WebWork自带的标签库则必须载入WebWorkVelocityServlet,并配置webwork.tldvelocitycom.opensymphony.webwork.views.velocity.WebWorkVelocityServletvelocity*.vm webwork /WEB-INF/webwork.tldxwork.xml /main.jsp /index.jsp /login.jsp /error.jsp 下面是job

8、.xml login.jsp system/register.jsp 说明:1、 设置全局跳转global-results允许定义全局的输出目地,只要继承它所在的package,这些全局定义都是可用的。比如某个package下有多个action配置,那么这些action都可以使用全局的跳转,调用方式与action局部跳转一致。2、 必须包括webwork-default.xml3、 定义一个package,这个包可以继承其它package。继承后则拥有此package中所有action配置4、 namespace命名空间:用于指定一个action调用路径 ,假如此应用项目名为SchdulerC

9、enter,那么要调用此例的注册action(job.xml),页面中提交的路径应为/job/ register.action。当成功时返回页面路径为/job/login.jsp因为:result目的地没有/出现,表示目标页面的路径与action请求的命名空间路径一致,故将跳转到/job/ login.jsp当失败时返回页面路径为/system/register.jsp因为:result目的地出现/,表示目标页面的路径是自定义,并非默认与命名空间一致,故将跳转到自定义的目的地/system/register.jsp5、 通过include节点可将其它配置文件导入至默认配置文件xwork.xml

10、中,此例将job.xml导入。为了业务逻辑更加清晰,建议xwork.xml不设置package,而全部用include导入每个业务块的配置文件。比如关于登陆与注册的action可以创建一个login.xml,login.xml设置好action;有关作业的业务可以创建一个job.xml并设置好action。最后xwork.xml只需要引入这两个xml即可。6、 通过result定义action返回的跳转的名字,跳转的处理模式有:dispatcher:类似struts的forward,本系统页面间转向,能传递request,session数据redirect:浏览器跳转,可转向其它系统页面,无法

11、将request,session数据传送velocity:将指定的velocity模板作为结果呈现页面xslt:将指定的xslt作为结果呈现页面、chain:将处理结果交给另一个Action处理,以实现Action的链式处理7、 通过param设定action跳转相应的资源名称8、 action拦截器设定,webwork拦截器有name=params与name=model-driven两种方式,在webwork-default包都有定义。拦截器是在action运行之前执行。model-driven是针对action的Modle驱动模式的拦截器实现9、 上面的配置文件在拦截器设定方面还可修改为如

12、下: /通过interceptors组合params与model-driven拦截器,以减少interceptor-ref声明 . /启用组合后的指定拦截器, 模型通常所指的JavaBean。主要是一些属性及其set/get方法Actionaction操作有两种驱动模式Property-Driven模式:implements Action或extends ActionSupportModel-Driven模式:implements Action注:建议采用Model-Driven模式使得业务逻辑更加清晰Property-Driven模式public class InfoAction imple

13、ments Action /*直接将页面要用的数据封到InfoAction,将InfoAction同时当成Bean*/ public String company; /*重写Action的execute方法,指定返回跳转*/ public String execute() throws Exception company = ultrapower; return SUCCESS; public String getCompany() return company; public void setCompany(String company) pany = company; 说明:采用此模式,在

14、页面中可以直接使用action属性命名表单控件,如上例中,对于页面有一个文本框,其中company是Action的属性.在提交页面时company的值自动映射到InfoAction的company属性。此模式建议不采用。Model-Driven模式/*此模式将页面要用的数据单独作成Bean类*/public class Message public String address; public String getAddress() return address; public void setAddress(String address) this.address = address; 然后

15、actionpublic class MessageAction implements Action /*将页面要用的数据Bean作为属性*/ public Message message; /*重写Action的execute方法,指定返回跳转*/ public String execute() throws Exception / TODO Auto-generated method stub return null; public Message getMessage() return message; public void setMessage(Message message) th

16、is.message = message; 说明:采用此模式,在页面中可以直接使用模式属性命名表单控件,如上例中,对于页面有一个文本框,其中message是Action的属性,即模型类对象Message。address又是模型对象Message的属性,在提交页面时message.address的值自动映射到InfoAction的message属性对象。采用Model-Driven模式使用webwork标签比较简洁。建议采用ModelDriven接口在webwork中提到com.opensymphony.xwork.ModelDriven接口是做什么的呢? 它是将Object getModel(

17、)取得的Model放到ValueStack中。这样在页面就可能使用webwork标签将值输出。 Property-Driven模式与Model-Driven模式都可以实现这个接口来将Model放入ValueStack注意: Model-Driven(模型驱动)的Action与com.opensymphony.xwork.ModelDriven接口是二回事。 Model-Driven只是action处理页面的一种方式Action动态请求通常情况下提交请求是转到Action的execute方法,webwork允许灵活的配置请求并转到相应的处理方法。如下:假如LoginAction有execute(

18、)方法和view()方法,请求名为login,那么请求名为login.action时,进入execute()方法。请求名为login!view.action时,进入view()方法。ActionContext由于Xwork与Web无关性,我们的Action不用去依赖于任何Web容器,不用和那些JavaServlet复杂的请求(Request)、响应(Response)关联在一起。对请求(Request)的参数(Param),可以使用拦截器框架自动调用一些get()和set()方法设置到对应的Action的字段中。但是,仅仅取得请求参数的值就能完全满足我们的功能要求吗?不,在Web应用程序开发中

19、,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息,甚至需要直接对JavaServlet Http的请求(HttpServletRequest)、响应(HttpServletResponse)操作。ActionContext简介ActionContext(com.opensymphony.xwork.ActionContext)是Action执行时的上下文,上下文可以看作是一个容器(其实我们这里的容器就是一个Map而已),它存放放的是Action在执行时需要用到的对象,比如:在使用WebWork时,我们

20、的上下文放有请求的参数(Parameter)、会话(Session)、Servlet上下文(ServletContext)、本地化(Locale)信息等。在每次执行Action之前都会创建新的ActionContext,ActionContext是线程安全的,也就是说在同一个线程里ActionContext里的属性是唯一的,这样我的Action就可以在多线程中使用。ActionContext获取通过ActionContext的静态方法:ActionContext.getContext()来取得当前的ActionContext对象,如下代码:public static ActionContext

21、 getContext() ActionContext context = (ActionContext) actionContext.get(); if (context = null) OgnlValueStack vs = new OgnlValueStack(); context = new ActionContext(vs.getContext(); setContext(context); return context;其中actionContext对象的创建为:static ThreadLocal actionContext = new ActionContextThreadLo

22、cal();ActionContextThreadLocal是实现ThreadLocal的一个内部类。ThreadLocal可以命名为“线程局部变量”,它为每一个使用该变量的线程都提供一个变量值的副本,使每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。这样,我们ActionContext里的属性只会在对应的当前请求线程中可见,从而保证它是线程安全的。ActionContext运用接获取HttpServletRequest、HttpServletResponse、HttpSession信息,如下例例一:获取所有参数中某个参数的值/取得我们当前的ActionContext对象co

23、ntextActionContext context = ActionContext.getContext();/从context对象里获取我们所有的请求参数,取得的却是一个Map对象Map params = context.getParameters();/得到的Map对象有许多参数值,这举例取request请求的“username”参数值String username = (String) params.get(“username”);例二:获取HttpSessionMap session = ActionContext.getContext().getSession();此例取得的ses

24、sion却是Map类型的对象,这是为什么?原来, WebWork框架将与Web相关的很多对象重新进行了包装,比如这里就将HttpSession对象重新包装成了一个Map对象,供我们的Action使用,而不用直接和底层的HttpSession打交道。也正是框架的包装,让我们的Actoion可以完全的和Web层解藕。ServletActionContext如果Action需要直接与JavaServlet的HttpSession、HttpServletRequest等一些对象进行操作,则需要利用 ServletActionContext。ServletActionContext简介ServletActionContext(com.opensymphony.webwork. ServletActionContext),这个类直接继承了我们上面介绍的ActionContext,它提供了直接与JavaServlet相关对象访问的功能,它可以取得的对象有:1、 javax.servlet.http.HttpServletRequest:HTTPservlet请求对象2、 javax.servlet.http.HttpServletResponse;:HTTPservlet相应对象3、

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1