温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

WebWork中xwork.xml文件是怎么样的

发布时间:2021-12-18 21:49:16 来源:亿速云 阅读:306 作者:柒染 栏目:编程语言

本篇文章给大家分享的是有关WebWork中xwork.xml文件是怎么样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

示例

﹤?xml version="1.0" encoding="ISO-8859-1"?﹥  ﹤!DOCTYPE xwork   PUBLIC   "-//OpenSymphony Group//XWork 1.0//EN"   "http://www.opensymphony.com/xwork/xwork-1.0.dtd"﹥  ﹤xwork﹥  ﹤include file="webwork-default.xml"/﹥  ﹤package name="default" extends="webwork-default"﹥  ﹤interceptors﹥  ﹤interceptor-stack name="defaultComponentStack"﹥  ﹤interceptor-ref name="component"/﹥  ﹤interceptor-ref name="defaultStack"/﹥  ﹤/interceptor-stack﹥  ﹤/interceptors﹥  ﹤default-interceptor-ref name="defaultStack"/﹥  ﹤action name="SimpleCounter" class="com.opensymphony.  webwork.example.counter.SimpleCounter"﹥  ﹤result name="success" type="dispatcher"﹥  /success.jsp﹤/result﹥  ﹤interceptor-ref name="defaultComponentStack"/﹥  ﹤/action﹥  ﹤!--  - Velocity implementation of the SimpleCounter.    Also demonstrate a more verbose version of result element  --﹥  ﹤action name="VelocityCounter" class="com.opensymphony.webwork.  example.counter.SimpleCounter"﹥  ﹤result name="success" type="velocity"﹥  ﹤param name="location"﹥/success.vm﹤/param﹥  ﹤/result﹥  ﹤interceptor-ref name="defaultComponentStack"/﹥  ﹤/action﹥  ﹤!--  - Different method can be used (processForm).   --﹥  ﹤action name="formTest" class="com.opensymphony.webwork.example.  FormAction" method="processForm" ﹥  ﹤result name="success" type="dispatcher"﹥/formSuccess.jsp﹤/result﹥  ﹤result name="invalid.token" type="dispatcher"﹥/form.jsp﹤/result﹥  ﹤interceptor-ref name="defaultStack"/﹥  ﹤interceptor-ref name="token"/﹥  ﹤/action﹥  ﹤/package﹥  ﹤/xwork﹥

活动

﹤action name="formTest"   class="com.opensymphony.webwork.example.FormAction"   method="processForm"﹥

活动是WebWork的基本工作单元, 它正是定义了活动. 活动通常有一个请求(通常是点击按钮, 或提交表单). 主要的action元素有两部分, 友好的名字(在URL中引用, 如saveForm.action)和对应的"处理(handler)"类.

可选的"method"属性告诉WebWork应当调用活动的哪个方法.

如果你不填写method属性, WebWork缺省调用execute(). 如果活动没有execute()方法, 也没有在xml中指定method属性, WebWork将抛出异常.

同样, 你也可以在表单中指定"actionName!something"来告诉WebWork调用"doSomething"方法. 例如, "formTest!save.action"将调用FormAction的"save"方法. 该方法必须是public且没有参数:

public String save() throws Exception  {  ...  return SUCCESS;  }

活动的所有配置都可以用在"actionName!something"中(截取器, 结果类型等)

〈result name="missing-data" type="dispatcher"〉  〈param name="location"〉/form.jsp〈/param〉  〈param name="parameterA"〉A〈/param〉  〈param name="parameterB"〉B〈/param〉  〈/result〉

Result元素告诉WebWork活动执行后下一步该做什么. "name"属性对应活动execute() 方法返回的结果代码. "type"属性表示使用哪个结果类型(参见结果类型). 可以使用"param"元素向视图传递参数:

〈result-types 〉  ....  〈result-type name="header" class="com.opensymphony.webwork.dispatcher.  HttpHeaderResult"/ 〉  〈/result-types 〉  〈result name="no-content" type="header" 〉  〈param name="status" 〉204〈/param 〉  〈param name="headers.customHeaderA" 〉A〈/param 〉  〈param name="headers.customHeaderB" 〉B〈/param 〉  〈/result 〉

下面是WebWork内置的标准结果代码(定义在Action接口中), 包括:

Action.SUCCESS = "success";

Action.NONE    = "none";

Action.ERROR   = "error";

Action.INPUT   = "input";

Action.LOGIN   = "login";

你可以扩充你认为适合的结果代码(如"missing-data"). 大多数情况下你只需使用SUCCESS和ERROR, SUCCESS将前进到下一个页面.

如果你只需要指定"location"属性, 可以使用简写形式:

﹤result name="missing-data"   type="dispatcher"﹥/form.jsp﹤/result﹥

参阅webwork-default.xml或Result Types以了解标准结果类型

截取器

截取器允许定义活动执行前后的代码. 截取器是编写Web应用的强大工具. 一些最常用的实现是:

安全检查(确保用户已登陆)

跟踪纪录 (记录每一个活动)

检查执行瓶颈 (在活动前后启动计时器, 以检查应用瓶颈)

也可以将截取器连接起来创建一个截取器栈. 如果你想完成登陆检查, 安全检查, 并记录每个活动调用, 使用截取器栈会十分容易.

必须先定义截取器(给它命名)然后才能联接成栈:

﹤interceptors﹥  ﹤interceptor name="security"   class="com.mycompany.security.SecurityInterceptor"/﹥  ﹤interceptor-stack name="defaultComponentStack"﹥  ﹤interceptor-ref name="component"/﹥  ﹤interceptor-ref name="defaultStack"/﹥   ﹤/interceptor-stack﹥  ﹤/interceptors﹥

要在活动中使用它们:

﹤action name="VelocityCounter"   class="com.opensymphony.webwork.example.  counter.SimpleCounter"﹥  ﹤result name="success"﹥...﹤/result﹥  ﹤interceptor-ref   name="defaultComponentStack"/﹥  ﹤/action﹥

注意: 可以引用拦截器或栈的名字

更多细节参见截取器.

视图

WebWork支持JSP和Velocity作为应用表示层. 本例使用JSP文件. Webwork附带了标签库(taglibs). 你可以在JSP中项组件一样使用标签库.下面是form.jsp的片断:

﹤%@ taglib prefix="ww" uri="webwork" %﹥  ﹤html﹥  ﹤head﹥﹤title﹥Webwork Form Example﹤/title﹥  ﹤/head﹥  ﹤body﹥  ﹤ww:form name="myForm" action="'formTest'"   namespace="/" method="POST"﹥  ﹤table﹥  ﹤ww:textfield label="First Name"   name="'formBean.firstName'"   value="formBean.firstName"/﹥  ﹤ww:textfield label="Last Name"  name="'formBean.lastName'"   value="formBean.lastName"/﹥  ﹤ww:submit value="Save Form"/﹥  ﹤/table﹥  ﹤/ww:form﹥  ﹤/body﹥

处理经过如下:

WebWork监控以.action结尾的URI(定义在web.xml中)

WebWork在活动定义中查找活动formTest.

WebWork创建formTest并调用com.opensymphony.webwork.example.FormAction的方法processForm(定义在xwork.xml中).

该方法处理成功并返回SUCCESS

WebWork将返回值SUCCESS转换成地址formSuccess.jsp(定义在b class="strong">xwork.xml中)并执行重定向.

包含

为了易于管理大规模开发活动(包含大量活动和配置), WebWork允许在xwork.xml中包含其他配置文件 :

﹤xwork﹥  ﹤include file="webwork-default.xml"/﹥  ﹤include file="user.xml"/﹥  ﹤include file="shoppingcart.xml"/﹥  ﹤include file="product.xml"/﹥  ....  ﹤/xwork﹥

被包含文件必须与xwork.xml的格式相同(具有相同的doctype及其它)并放置在类路径中(通常位于/WEB-INF/classes或/WEB-INF/lib的jar文件中).

以上就是WebWork中xwork.xml文件是怎么样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI