需要注意的地方就是form的action属性的写法了; 2、在xwork.xml中增加相应的处理action的节点
这里需要注意的是action节点中name的值要与index.jsp中定义的action的名字要严格匹配,对于大小写是敏感的。在action节点中还包含了节点,以说明处理action之后会可能出现的不同结果(name)和相应的处理方式(type)。譬如说,如果Login的这个action处理success了,则使用dispatcher将结果分(dispatch)到相应的页面。而在WAF框架中并没有这样的定义,因为在默认情况下如果不成功则会返回当前页面,不过可以定义FlowHandler,并拥有类似的功能且更加灵活; 3、实现类Login的代码:
在代码中,你会发现有两个继承变量ERROR与SUCCESS。这两个变量是定义在Action这个接口的,而ActionSupport则实现了Action接口。在接口Action的代码中,我们可以看到ERROR = "error"、SUCCESS = "success"。我们可以发现这两个变量的值与xwork.xml中result子节点中的name的值是相匹配。除此之外,在代码中,我也找不到了原来在开发中经常要用到的一个API:getParameter。事实上,将表单中数据析取出来的工作是由webwork这个唯一定义的servlet去完成的,而这个类会调用Login类中set的方法将用户输入的数据赋给Login类的属性:loginId和loginPassword。在这里,我们也要跟前面index.jsp中的包含的标签联系起来。当数据被dispatch回index.jsp的时候,在index.jsp页面render的过程中是调用了get的方法去获取相应的数据的。 最后,我们可以总结一下,整个Web应用程序的处理流程了: 首先,当用户提交了表单(form)至Login.action后,由web.xml中定义的唯一的一个servlet:webwork去处理这个请求。webwork会以action的name:Login到xwork.xml中寻找相应的处理action的类,于是就找到了fantasysoft.webwork包中的Login类,由Login类中的execute方法来处理提交的form的数据了; 然后,根据execute方法的返回值,再到xwork.xml中对应的action节点中去找匹配的result子节点; 最后,根据result子节点的定义,将处理结果分发(dispatch)或者重定向(redirect)至下一个页面[3]。 [1] 准备工作可以参考 WebWork Getting Started; [2] web.xml文件的具体内容,可以参考 WebWork Tutorial Lesson 2 ; [3] 对于result的Type的更多介绍,可以参考 WebWork Tutorial Lesson 3
Copyright @ 只牵这只狗 Powered by: .Text and ASP.NET Theme by: .NET Monster