webwork笔记之配置

  1. <package/>标签里,这几个标签是有严格顺序的,正确顺序如下:  
  2. <result-types>,必须有<result-type/>项;  
  3. <interceptors>,必须有<interceptor/>项;  
  4. 接下来是<default-interceptor-ref name="completeStack">default-interceptor-ref>;  
  5. 然后是<global-results>,必须有<result/>项;  
  6. 然后<global-exception-mappings>,子项如<exception-mapping result="errorPage" exception="java.lang.Exception"/>  
  7. 最后才是<action/>  
  8. =========================================================================  
  9. <action name="test">  
  10.     <interceptor-ref name="exception"/>  
  11.     <interceptor-ref name="basicStack"/>  
  12.     <exception-mapping exception="com.acme.CustomException" result="custom_error"/>  
  13.     <result name="custom_error">custom_error.ftlresult>  
  14.     <result name="success" type="freemarker">test.ftlresult>  
  15. action>  
  16. =========================================================================  
  17. webwork运行流程:  
  18. 默认执行execute()方法,该方法默认返回SUCCESS;  
  19. =====分页================================================================  
  20. <Script language="JavaScript" src="/js/pagenumber.js">Script>  
  21. <script Language="JavaScript">  
  22.     listNumUrl("courseInfoList.action?&pageNum=",${pageNum},${allPageNum});  
  23. script>  
  24. ======相关扩展===========================================================  
  25. Ognl工作原理:  
  26. OgnlValueStack stack=new OgnlValueStack();  
  27. stack.push(new User())://首先将打算赋值的对象压入栈中  
  28. stack.setValue("name","erica");//为栈顶对象User指定的属性名name赋值  
  29. =====额外收获===========================================================  
  30. HttpSession是一个接口,  
  31. Properties实现了继承了HashTable(实现了Map接口),也就是说它保存的也是值-键对象,它的setProperty("name","value")实质上就是保存到HashTable里了。  
  32. -------------------------------------------------------------------------------------------------  
  33. <ww:head theme="ajax" calendarcss="calendar-green"/>默认不是ajax  
  34. ======上传=============================================================  
  35. <action name="itemPersonalInput" class="cn.com.s520.course.ItemPersonalInputAction">  
  36.         <interceptor-ref name="fileUpload">  
  37.         <param name="allowedTypes">  
  38.     application/msword,image/gif,image/jpeg,image/pjpeg,application/x-shockwave-flash  
  39.     param>  
  40.     <param name="maximumSize">10485760param>  
  41.     interceptor-ref>  
  42.         <interceptor-ref name="basicStack"/>  
  43.     <result name="input" type="freemarker">/course/ItemPersonalInput.ftlresult>  
  44.     <result name="error" type="freemarker">/course/ItemPersonalInput.ftlresult>  
  45.     <result name="success" type="redirect">/itemPersonalList.actionresult>  
  46. action>  
  47. private File images;  
  48. private String imagesContentType;  
  49. private String imagesFileName;//得到不含路径的文件名,如test.jpg  
  50. ******文件下载=========================================================  
  51. <result name="success" type="stream">  
  52.     <param name="contentType">image/jpegparam>  
  53.     <param name="inputName">imageStreamparam>  
  54.     <param name="contentDisposition">filename="logo.png"param>  
  55.     <param name="bufferSize">4096param>  
  56. result>  
  57. 1,<param name="contentType">application/x-msdownloadparam>  
  58. contentType设成 application/x-msdownload 就可以。这样浏览器会保证弹出一个下载文件的对话框。  
  59. 2,inputName 这个比较重要,这个名字是输入流的名称, 以后要steam result的实现类中为根据OGNL的表达式去查找的。  
  60. contentDisposition 这个是下载之后,保存在用户端的文件名称  
  61. 3,另外一个参数:contentLength就是下载文件的大小,webwork的stream result似乎实现有问题,不能根据文件的大小动态进行设置,只能写死。  
  62. 这个参数的意义是告诉浏览下载的文件有多大,以便浏览器正确的显示进度条。如果这个功能很重要的话,可以重新写一个RESULT来实现。  
  63. ======================================================================  
  64. <result>/form.jspresult>如果不指明,默认为success  
  65. <action name="userReg" class="com.opensymphony.xwork.ActionSupport">  
  66.     <result name="input">/app/userreg.ftlresult>  
  67. action>  
  68. 这里将不会出现预期的页面,因为默认为success,不会转向我们指定的input页面  
  69. ======================================================================  
  70. <result name="no-content" type="header">  
  71.     <param name="status">204param>  
  72.     <param name="headers.customHeaderA">Aparam>  
  73.     <param name="headers.customHeaderB">Bparam>  
  74. result>  
  75. ======================================================================  
  76. chain视图:  
  77. 同一个包里,可设置type为chain,对应action的扩展名也可以不写,  
  78. <result name="error" type="chain">  
  79.       <param name="actionName">barparam>  
  80. result>  
  81. 不同包里  
  82. <result name="errorPage" type="chain">  
  83.     <param name="namespace">/param>  
  84.     <param name="actionName">barparam>  
  85. result>  
  86. 或者设置type为redirect,重定向过去  
  87. <action name="index" class="com.opensymphony.xwork.ActionSupport">  
  88.     <result name="success" type="redirect">/course/courseInfoList.actionresult>  
  89. action>  
  90. ======================================================================  
  91. <default-interceptor-ref name="defaultStack"/>  
  92. 这里只是在你没有设置拦截器时才用到,如果设置拦截器了,就不会调用这个了,我开始还以为设置没设置拦截器都调用这个呢  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值