WebWork学习笔记

开发 后端
本文向您介绍作者进行WebWork学习的一个实例,包括WebWork重要组件的配置、代码编写和WebWork自带例子的讲解。

WebWork学习***步: 一个servlet :webwork.dispatcher.ServletDispatcher  

1.简介

webwork1.4所有自带例子中的action都提交到此servlet进行处理,重要性当然不言而喻.

打开webwork\WEB-INF下web.xml,可以看到以下配置

  1. ...  
  2. <servlet>  
  3. <servlet-name>action</servlet-name>  
  4. <servlet-class>webwork.dispatcher.ServletDispatcher  
  5. </servlet-class>  
  6. <load-on-startup>1</load-on-startup>  
  7. </servlet>  
  8. ...  
  9. <servlet-mapping>  
  10. <servlet-name>action</servlet-name>  
  11. <url-pattern>*.action</url-pattern>  
  12. </servlet-mapping>  
  13. ...  

2 功能: 1. 处理action请求

2. 查找相应action类,产生实例.

3. 执行doValidation()校验输入参数;

4. 如果3校验结果为合法, 执行doExecute();

5. 根据执行结果字符串("success","input","error")查找views配置转到相应view.

WebWork学习第二步:动手写一个简单例子

1. HelloAction.java 源代码

  1. import webwork.action.ActionSupport;  
  2. import webwork.action.Action;  
  3. public class HelloAction  
  4. extends ActionSupport {  
  5. private String name ;  
  6. public HelloAction() {  
  7. }  
  8. public void setName(String name) {  
  9. this.name = name;  
  10. }  
  11. public String getName() {  
  12. return this.name;  
  13. }  
  14. public void doValidation() {  
  15. else if(name==null||name.length()<1){  
  16. addError("Name","can't be null or empty!");  
  17. }  
  18. }  
  19. //如果不做其它处理,也可以不override此方法.  
  20. 缺省返回success  
  21. public String doExecute() {  
  22. return SUCCESS;  
  23. }  

编译完的class文件拷入webwork\WEB-INF\classes下.

2.配置

有两种配置方法可选:

(1) 配置views.properties(在webwork\WEB-INF\classes下)

hello.action=HelloAction

hello.input=helloinput.jsp

hello.success=hellosuccess.jsp

hello.error=helloerror.jsp

(2) 配置actions.xml(在webwork\WEB-INF\classes下)

在原有基础上增加下面一个action

  1. <action name="HelloAction" alias="hello">  
  2. <view name="success">hellosuccess.jspview>  
  3. <view name="error">helloerror.jspview>  
  4. <view name="input">helloinput.jspview>  
  5. action

3.相关jsp文件

 建立以下四个jsp文件,存放目录为:webwork下.

(1)index.jsp

  1. <html>  
  2.   <head>  
  3.     <title>test webwork</title>  
  4.   </head>  
  5.   <body>  
  6.     <A href="helloinput.jsp">example</a>  
  7.   </body>  
  8. </html> 

(2)hellosuccess.jsp

  1. <html>  
  2.   <head>  
  3.     <title>test webwork</title>  
  4.   </head>  
  5.   <body>  
  6.   <form action="hello.action" method="post">  
  7.     <input type="text" name="name" value=""/>  
  8.     <input type="submit" value="Submit"/>  
  9.   </form>  
  10.   </body>  
  11. </html>  

(3)hellosuccess.jsp

  1. <HTML>  
  2. <HEAD>  
  3. <TITLE>Test</TITLE>  
  4. </HEAD>  
  5. <BODY>  
  6. Hello world!  
  7. </BODY>  
  8. </HTML> 

 

(4)helloerror.jsp

同上,将字符串改掉即可.本例子中只是配置中用到,运行过程未用此页面.

4.运行

  (1)启动Tomcat

  (2)IE中输入:http://localhost:8080/webwork/index.jsp

  (3)不输入任何字符,提交,页面仍然在helloinput.jsp

     输入字符后提交,页面转至hellosuccess.jsp

5.流程说明

(1) 启动Tomcat后, 初始化servlet(ServletDispatcher)

(2) 在输入页面(helloinput.jsp), 输入字符提交(提交到hello.action)

(3) 根据web.xml中配置,此请求由ServletDispather处理.

(4) servlet根据actionName("hello")查找配置(配置内容:hello.action=HelloAction)

(5) 产生HelloAction实例

(6) servlet调用HelloAction的doValidation()校验输入参数.

(7) 校验通过, servlet调用HelloAction的doExecute(),返回成功("success").

(8) 根据views配置查找到:

hello.success=hellosuccess.jsp (actionaliasName.viewName=pagename)

(9) servlet中forward到hellosuccess.jsp

(10)输出hello world!, 完成.

如果不输入直接提交,以下几步略有不同

(7) 校验未通过,产生错误信息. 其它方法中检测到有错误信息,默认返回"input"

(8) 根据views配置查找到:hello.input=helloinput.jsp

(9) servlet中forward到helloinput.jsp

(10)完成.

6.补充HelloAction的调用步骤其实是:

ServletDispatcher->GenericDispatcher->

调用executeaction()->ActionSupport的execute()->

调用HelloAction的相应方法.

5中的说明只是为了简单而这样描述的.

如果你对这些有兴趣,可以看看ServletDispatcher,GenericDispatcher,ActionSupport,Action等源码.

WebWork学习第三步: webwork自带例子Bank app的简单介绍

1.环境

http://localhost:8080/webwork 中JSP下面的Bank app

相关class:webapps\webwork\WEB-INF\lib\webwork-examples.jar中的webwork.examples.bank.Transfe

相关jsp:  webapps\webwork\examples\bank\index.jsp,transfer.jsp,confirm.jsp

相关配置: webapps\webwork\-WEB-INF\classes\views.properties

# Bank example (Struts example adaptation)

bank.transfer.action=bank.Transfer (即webwork.examples.bank.Transfer)

bank.transfer.input=transfer.jsp

bank.transfer.success=confirm.jsp

bank.transfer.error=transfer.jsp

由于webwork.properties配有

webwork.action.packages=webwork.examples, webwork.examples.vxml

因此上面配置bank.transfer.action=bank.Transfer省略了webwork.examples.

2.index.jsp

  1. <jsp:forward page="bank.transfer!default.action"/> 

相当与

  1. <form action="bank.transfer!default.  
  2. action" method="post">  
  3. <input type="submit" />  
  4. </form>  

WebWork学习第四步:自动提交.

(1)提交到servlet, servlet处理bank.transfer!default.action(构成:actionAliasName+!commandName+.action)

由于action中有command(command为:default), 通过reflect查找doCommand即(doDefault),

执行doDefault()返回"input"

(2)input对应的view为transfer.jsp,转到此页面.

(3)输入参数后提交,执行bank.transfer.action, 其它流程与上面第二部分第5结类似.

【编辑推荐】

  1. WebWork框架原理与应用(1)
  2. 用WebWork注册页面建立过程
  3. WebWork注入Servlet方法详解
  4. WebWork中返回INPUT的原因
  5. WebWork如何实现文件上传配置过程
    责任编辑:冰荷 来源: csdn
    相关推荐

    2009-07-16 14:08:14

    webwork配置

    2009-07-14 15:52:00

    WebWork文件下载

    2009-07-14 17:34:53

    Webwork配置

    2009-07-16 16:51:56

    WebWork验证机制

    2009-07-16 16:08:30

    WebWork Act

    2009-07-08 10:30:57

    WebWork

    2009-07-08 10:11:30

    WebWork

    2009-07-16 16:01:54

    WebWork敏捷开发

    2009-07-08 09:55:51

    WebWork下载

    2009-07-14 14:04:36

    WebWork框架

    2009-07-16 17:42:47

    WebWork配置

    2009-07-09 15:55:18

    WebWork配置文件

    2009-07-14 17:53:11

    WebWork安装WebWork配置

    2009-07-14 01:00:43

    WebWorkActionConte

    2009-07-16 16:27:26

    Struts WebW

    2009-07-14 17:20:31

    Webwork文件上传

    2009-07-16 14:58:03

    WebWork安装WebWork配置

    2009-07-14 14:41:33

    Webwork与Spr

    2009-07-09 16:22:12

    WebWork配置

    2009-07-10 12:00:27

    点赞
    收藏

    51CTO技术栈公众号