本站首页
管理页面
写新日志
退出
[QQ:172832876] [MSN:lanlanq@hotmail.com]
麒麟在天欢迎您
.:
日期
«
September 2025
»
日
一
二
三
四
五
六
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
.:
我的分类
首页(64)
J2EE(27)
架构设计(1)
休闲时刻(8)
C++/C#(DotNet)(9)
项目管理(8)
Lotus Notes(6)
.:
最新日志
继承ConfigurationSecti
做正确的事,正确的做事[续1]
c# 数据库连接管理类
做正确的事,正确的做事
摄像头控件(C#)选像,拍照,保存不同数
从网上找的 content-type 类
引发类型为“System.Windows
java.security 类 Acc
instanceof
计算日期
.:
显示信息
blog名称:
日志总数:64
评论数量:34
留言数量:3
访问次数:342789
建立时间:2006年3月10日
.:
留言板
签写新留言
我也向往美好的生活
.:
链接
奕友软件
宋传芳的Blog
公告
在属于自己的一片天空中,敲打着键盘,记录下自己感兴趣和认为自己因该回忆的碎片,可能是财富,也可能是不足,过后你会发现你的进步,这就足够。
[J2EE]
webwork的学习和使用
原创空间
,
软件技术
luckystar
发表于 2006/3/10 9:40:37
接触webwork是应为工作的需要,应为新的公司环境要求webwork而非struts,只好采用这个。 其实个人认为webwork和struts的架构思想比较类似。比如webwork采用xwork.xml配置文件管理Action的调用趋向,和struts的struts-config.xml比较类似,只是没有了struts的formbean的定义,在xwork中只需指定Action就可以,让后通过设定Model,我认为Model就是一个formbean,然后再view,freemark中获得Model的值。 值得一提的我认为webwork的优势应该是拦截器功能 下边我把xwork.xml的具体说明列出以便熟悉 <xwork> <include file="webwork-default.xml"></include> <!--通过include节点,我们可以将其他配置文件导入到默认配置文件xwork.xml中 从而实现良好的配置划分。 这里我们导入了webwork提供的默认配置webwork-default.xml位于webwork.jar的根路径。 --> <package name="default" extends="webwork-default" externalReferenceResolver="com.atlassian.xwork.ext.SpringServletContextReferenceResolver"> <interceptors> <interceptor name="reference-resolver" class="com.opensymphony.xwork.interceptor.ExternalReferencesIn terceptor" /> <interceptor-stack name="WSStack"> <interceptor-ref name="params" /> <interceptor-ref name="model-driven" /> <interceptor-ref name="reference-resolver" /> </interceptor-stack> </interceptors> <!-- xwork中,可以通过package对action进行分组。类似java中package和class的关系。 为可能出现的同名action提供了命名空间的隔离。 同时,package还支持继承关系。在这里我们定义的extends="webwork-default" "webwork-default"是webwork-default.xml文件中定义的package,这里通过继承 "default"package自动拥有"webwork-default" package中所有的定义关系. 此外,我们还可以在package节点中指定namespace,将我们的action分为若干个逻辑区间。 比如:<package name="default" namespace="/user" extends="webwork-default"> 就将此package中action定义划归为/user区间,之后在页面调用action的时候我们需要 用/user/login.action作为form action的属性值。其中的/user/就指定了次acion的namespace 通过这样的机制,我们可以将系统内的action进行逻辑分类。 --> <action name="login" class="net.xiaxin.webwork.action.LoginAction"> <!--Action 配置节点,这里可以设定Action的名称和对应的实现类--> <external-ref name="userDAO"> userDAOProxy </external-ref> <!--增加一个外部引用"userDAO",其值为userDAOProxy,这里spring中 userDAO Transaction Proxy 实例的引用名 --> <result name="success" type="dispatcher"> <param name="location">/main.jsp</param> </result> <!--通过result节点,可以定义action返回语义,即根据返回值,决定处理模式 及其响应界面。 这里,返回值"success"(action调用返回值为String类型)对应的处理模式dispatcher. 可选的处理模式: 1、dispatcher//本系统页面间转向。类似forward. 2、redirect//浏览器跳转。可转向其他系统页面。 3、velocity//将指定的velocity模版作为结果呈现界面。 4、chain//将处理结果转交给另外一个action处理,以实现action的链接处理。 5、xslt//将指定的xslt作为结果呈现界面。 --> <result name="loginfail" type="dispatcher"> <param name="location">/index.jsp</param> </result> <interceptor-ref name="WSStack" /> <!-- 设定了施加于此action的拦截器(interceptor). interceptor-ref定义的是一个拦截器的应用,具体的拦截器设定,实际上是 继承于webwork-default package,我们可以在webwork-default.xml中找到 对应的"params"和model-driven拦截器设置。 "params"大概是webwork中最重要,也最常用的一个interceptor。 将web页面中的输入元素封装在一个(请求)数据对象就是通过"params"拦截器 完成。interceptor将在action之前被调用,因而,interceptor也成为webwork 传来的map格式的数据转换为强类型java对象的最佳实现场所。 "model-driven"则是针对action的model驱动模式的Interceptor实现。 --> </action> </package> </xwork>
阅读全文(2491)
|
回复(0)
|
编辑
|
精华
发表评论:
昵称:
密码:
主页:
标题:
验证码:
(不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页
|
联系我们
|
博客注册
|
博客登陆
Sponsored By
W3CHINA
W3CHINA Blog 0.8 Processed in 0.183 second(s), page refreshed 144775986 times.
《全国人大常委会关于维护互联网安全的决定》
《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号