精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

WebWork配置最簡方案

開發 后端
本文向您介紹WebWork配置的最簡單方式,作者通過自己的時間,得出結論,action的配置應該拋棄,xwork.xml中應該只存放一些common的配置.

一直以來我都有一個想法,想要找一個比較好的web框架,不用jsp,不用繁瑣的WebWork配置,比如說struts1.x的action的配置,webwork2的action的配置,其他框架我沒有用過,但是類似的,都有很多這樣的配置,一個很大的項目,struts的配置文件都是上w,上十幾w行,當然我早已放棄struts,投向webwork2.2的懷抱,雖然沒有了form的配置,action的配置也比struts的簡化了很多。

但是我還是不滿足,我想要的框架應該比這個還要簡單,而action的配置應該拋棄,xwork.xml中應該只存放一些common的配置,比如說interceptor,自定義的result等等。

也許你要說你也可以擴展struts1.x啊,而且他的用戶更多,但是struts給我感覺是他馬上就要退出歷史的舞臺了,這都是由于他本身的缺點導致的,比如說ActionForm,他把我們綁定到jsp上,如果用模板,那么我們就要自己組裝pojo了,這一點,有了攔截器的webwork2做得很好,這也是我選他的原因。

那么你也許要問,我action中返回頁面如何指定呢,我怎么知道我要返回到那個頁面呢,我的想法是coc,使用固定的規則能夠使我們省去不少繁瑣的配置,雖然說配置能夠給我們帶來巨大的靈活性,但是配置也給我們帶來了巨大的不可維護性(這里是指維護起來很繁瑣)。

以下是我想象中的做法(我強烈建議在view層使用模板技術,velocity或者freemarker):

1, 每個action的頁面都單獨放置,路徑和Action的package類似,只是在Action的那一級目錄創建一個和Action同名的目錄用來放這個Action中方法所返回的頁面。比如說有一個UserAction,package:org.easywebwork.action.UserAction,那么就在這個package下創建一個UserAction目錄,這個目錄下存放所有的UserAction返回的頁面。

2, Action的方法返回的字符串在annotation中指定,比如:@result name=”success” template=”editUser.htm” type=”redirect”,

editUser.html就是UserAction目錄下的一個頁面模板

說到底還是得用規則和注釋來實現這個功能,這樣做的一個優點是方法的返回頁面一眼就能看出來,根本不用去xml中找了,尤其在Action類很多的情況下,這樣做優點更是明確了。

那最終的效果我想應該是這樣的,http://localhost:8080/test/userAction!editUser,就能觸發上面這個方法,之后根據editUser的注釋就能返回對應的模板頁面了。

思路定下來了,那么就是實現了,要實現這個方案的第一步就是自定義annotation,關于annotation,已經屬于java基初知識了;

java engineer遲早都需要學習的,任何一本關于jdk5.0的書上都有詳細的解釋,而且論壇上也能搜出一堆,固不作重復的解釋,讓我們來直接定義我們需要的annotation吧。

既然我們定義的是result,那么我們的annotation元素的個數和類型就應該和xwork.xml中的result的元素的個數和類型是一樣的:

Java代碼 

  1. /**  
  2. *@author張榮華(aaron)  
  3. *@since2007-6-17  
  4. *@version$Id$  
  5. */  
  6. //這個annotation是用在方法級別的  
  7. @Target(ElementType.METHOD)  
  8. @Retention(RetentionPolicy.RUNTIME)  
  9. public@interfaceResult{  
  10. //action方法的返回名稱  
  11. Stringname();  
  12. //result類型,如果沒有就是默認值,  
  13. 如果使用模板那么就是velocity或者freemarker  
  14. Stringresult()default"velocity";  
  15. //默認值使用velocity,正如前面所說,  
  16. 我強烈推薦在view層使用模板引擎  
  17. //模板的名字  
  18. Stringtemplate();  
  19. //是哪些返回類型,比如說redirect,chain等等  
  20. Stringtype()default"dispatcher";  
  21. }  

那么接下來就是定義一個ResultList的annotation了,因為action中的每一個方法都可以有多個返回的result:

Java代碼 

  1. /**  
  2. *@author張榮華(aaron)  
  3. *@since2007-6-17  
  4. *@version$Id$  
  5. */  
  6. //這個annotation是用在方法級別的  
  7. @Target(ElementType.METHOD)  
  8. @Retention(RetentionPolicy.RUNTIME)  
  9. public@interfaceResultList{  
  10. //這里存放的是每個方法可能擁有的多個result  
  11. Result[]results();  
  12. }  

接下來查看一下這個annotation的定義是否是正確的,讓我們來創建一個Action和對應的ActionTest:

Java代碼 

  1. /**  
  2. *@author張榮華(aaron)  
  3. *@since2007-6-17  
  4. *@version$Id$  
  5. */  
  6. publicclassUserAction{  
  7. /* 

*注意:這里有一個復合annotation,當然,如果你理解了annotation的用法,及如何自定義annotation,

*那么復合annotation對你來說也是小菜一碟了

  1. */  
  2. @ResultList(results={  
  3. @Result(name="SUCCESS",template="editUser.htm"),  
  4. @Result(name="ERROR",template="error.htm")})  
  5. //這個uploadInterceptor是在xwork.xml文件中聲明的,  
  6. 我還是堅持把common的東西放到xml中去  
  7. @Interceptor(interceptors={"uploadInterceptor"})  
  8. publicStringeditUser(){  
  9. System.out.println("edituserinfo");  
  10. return"SUCCESS";  
  11. }  
  12. @ResultList(results={  
  13. @Result(name="SUCCESS",template="success.htm"),  
  14. @Result(name="CANCEL",template="editUser.htm")})  
  15. publicStringsaveUser(){  
  16. System.out.println("saveuserinfo");  
  17. return"SUCCESS";  
  18. }  

這個類就代表一個webwork2的action,再讓我們來寫一個測試類:

Java代碼 

  1. public class UserActionTest {     
  2. public static void main(String args[])   
  3. throws ClassNotFoundException {     
  4. UserAction action = new UserAction();     
  5. Method[] methods = action.getClass().  
  6. getDeclaredMethods();     
  7. Set set = new HashSet();     
  8. for (int i = 0; i < methods.length; i++)   
  9. {     
  10. if (methods[i].isAnnotationPresent  
  11. (ResultList.class)) {     
  12. set.add(methods[i]);     
  13. }     
  14. }     
  15. for (Method m : set) {     
  16. ResultList list = m.getAnnotation  
  17. (ResultList.class);     
  18. for (Result s : list.results()) {     
  19. System.out.println(s.name() +"   
  20. "+ s.template() +" "+ s.result() +" "+ s.type());     
  21. }     
  22. }     
  23. }     
  24. }    

Run一下這個test類的main方法,我們可以看到輸出的內容為

Java代碼 

  1. SUCCESS editUser.htm velocity dispatcher     
  2. ERROR error.htm velocity dispatcher     
  3. SUCCESS success.htm velocity dispatcher     
  4. CANCEL editUser.htm velocity dispatcher   

這說明我們定義的復合annotation是正確的,那么我們完成了擴展webwork2的第一步,接下來就要涉及到webwork2的源代碼了,第一篇文章這么長夠了,大家討論一下,這個思路有哪些地方還需要改進吧。

我們已經邁出了擴展webwork2的第一步,接下來就是在webwork2中讀取這些Result,并且放到原來放這些result的地方,思路很明確了,我會在這個系列的下面的文章中再作論述。

我用的JDK是6.0, 5.0應該也是沒有問題的。

更改:在討論之后,我發現我把

Java代碼 

  1. /**  
  2. *@author張榮華(aaron)  
  3. *@since2007-6-19  
  4. *@version$Id$  
  5. */  
  6. //這個annotation是用在方法級別的  
  7. @Target(ElementType.METHOD)  
  8. @Retention(RetentionPolicy.RUNTIME)  
  9. public@interfaceInterceptor{  
  10. //在這里設置的interceptor就是相當于  
  11. 元素  
  12. String[]interceptors();  
  13. }  

如果要實現downpour所提出的那個用法也是可以的,但是還要定義一個action:

Java代碼 

  1. **  
  2. *@author張榮華(aaron)  
  3. *@since2007-6-19  
  4. *@version$Id$  
  5. */  
  6. //這個annotation是用在方法級別的  
  7. @Target(ElementType.METHOD)  
  8. @Retention(RetentionPolicy.RUNTIME)  
  9. public@interfaceAction{  
  10. /*  
  11. *這樣一來,配置就想xwork.xml中的配置了,  
  12. 如果要實現downpour所說的用法,  
  13. *就可以用這個annotation實現了。  
  14. */  
  15. ResultListresultList();  
  16. Interceptorinterceptors();  
  17. }  

這樣就可以在action的方法上加多個Action注釋了,實現它的定義是簡單的,但是接下到來擴展webwork2的源碼的時候會給我們帶來更多的工作量及負擔。

按照我昨天的想法:一個方法只定義一組result,這樣實現起來也簡單,使用起來也簡單

【編輯推薦】

  1. WebWork框架原理與應用(1)
  2. 用WebWork注冊頁面建立過程
  3. WebWork注入Servlet方法詳解
  4. WebWork中返回INPUT的原因
  5. WebWork如何實現文件上傳配置過程
責任編輯:冰荷 來源: javaeye
相關推薦

2009-07-14 17:34:53

Webwork配置

2009-07-16 14:08:14

webwork配置

2009-07-14 17:53:11

WebWork安裝WebWork配置

2009-07-09 15:55:18

WebWork配置文件

2009-07-16 14:58:03

WebWork安裝WebWork配置

2009-07-09 16:22:12

WebWork配置

2011-11-25 14:01:05

VPNVPN設置IPsec VPN

2009-07-10 11:02:17

WebWork參數配置

2009-07-08 09:29:58

WebWork

2009-07-14 16:08:41

WebWork學習

2009-07-14 15:52:00

WebWork文件下載

2009-07-16 16:08:30

WebWork Act

2009-07-16 16:51:56

WebWork驗證機制

2024-02-23 18:43:41

RPC代碼開發

2010-05-10 17:15:36

負載平衡方案

2009-07-08 09:55:51

WebWork下載

2009-07-08 10:30:57

WebWork

2009-07-08 10:11:30

WebWork

2009-07-16 16:01:54

WebWork敏捷開發

2009-07-14 14:04:36

WebWork框架
點贊
收藏

51CTO技術棧公眾號

福利小视频在线观看| 国产精品18在线| 1024在线看片你懂得| 99国产精品99久久久久久| 日本一区二区在线免费播放| 超碰人人人人人人人| youjizz亚洲| 日本丶国产丶欧美色综合| 91制片厂免费观看| 四虎永久在线观看| 另类成人小视频在线| 欧美国产乱视频| 人妻少妇无码精品视频区| 国产色99精品9i| 欧美性猛交xxxx乱大交3| 热这里只有精品| 男女av在线| 粉嫩绯色av一区二区在线观看| 国产999精品久久久| 久久97人妻无码一区二区三区| 经典一区二区| 亚洲成人中文字幕| 奇米影视四色在线| 亚洲啊v在线| 一二三四区精品视频| 久久艳妇乳肉豪妇荡乳av| 国产尤物在线观看| 久久久久99| 久久天天躁日日躁| 人妻精品久久久久中文| 粉嫩的18在线观看极品精品| 9191久久久久久久久久久| 欧美 国产 日本| 羞羞的网站在线观看| 国产精品美女久久久久aⅴ| 久久精品国产精品国产精品污| 国产伦一区二区| 日本91福利区| 国产精品678| 伦av综合一区| 国产精品毛片一区二区三区| 欧美高清第一页| 黑人巨大精品一区二区在线| 天天色综合色| y97精品国产97久久久久久| 老熟妇精品一区二区三区| 激情小说亚洲| 欧美在线免费播放| 国产一级片黄色| 成人美女视频| 91国内精品野花午夜精品| 无码人妻丰满熟妇区毛片18| 亚洲精品一区| 欧美在线播放高清精品| 嫩草av久久伊人妇女超级a| 成人教育av| 91传媒视频在线播放| 熟妇人妻va精品中文字幕| 欧美黑人巨大xxxxx| 欧美性精品220| 黄色片久久久久| 美女100%一区| 欧美日韩在线观看视频| 久久久999免费视频| 在线观看涩涩| 一道本成人在线| 好男人www社区| 婷婷成人av| 日韩精品中午字幕| 丝袜熟女一区二区三区 | 国产综合在线观看视频| 中文字幕在线观看欧美| 韩国v欧美v亚洲v日本v| 98国产高清一区| 人妻无码一区二区三区久久99 | 不卡视频一区| 亚洲av成人精品日韩在线播放| 91丝袜美腿高跟国产极品老师| 欧美日韩另类丝袜其他| av每日在线更新| 亚洲欧美日韩一区二区| 成人网站免费观看入口| sis001欧美| 在线播放中文一区| 苍井空张开腿实干12次| 欧洲vs亚洲vs国产| 在线亚洲国产精品网| 5566中文字幕| 亚洲国内欧美| 国产精品海角社区在线观看| 国产欧美综合视频| 久久久国产精华| 玖玖精品在线视频| 亚洲美女炮图| 欧美一级日韩不卡播放免费| 大尺度做爰床戏呻吟舒畅| 国产伦精品一区二区三区千人斩| 美女精品久久久| 日韩免费视频一区二区视频在线观看| 日韩avvvv在线播放| 91亚洲精品在线观看| 日本私人网站在线观看| 亚洲男人天堂av| 国产精品69页| 波多野结衣一区二区三区免费视频| 一区二区在线免费视频| 国产主播在线播放| 精品一区二区三区香蕉蜜桃| 动漫精品视频| 毛片av在线| 欧美性猛交xxxx偷拍洗澡| 色婷婷综合在线观看| 九色精品国产蝌蚪| 97人人做人人爱| 国产视频手机在线观看| 国产偷v国产偷v亚洲高清| www.日本三级| 一区二区三区无毛| 亚洲女人天堂色在线7777| 91在线播放观看| 蜜臀精品久久久久久蜜臀| 精品视频一区二区三区四区| gogogogo高清视频在线| 欧美亚洲愉拍一区二区| 蜜桃传媒一区二区亚洲av| 国产精品99免费看| 成人精品久久久| 91精品大全| 91国偷自产一区二区使用方法| www.88av| 激情久久久久久| 成人h在线播放| 国产福利在线播放麻豆| 欧美日韩一区不卡| 色无极影院亚洲| 国产免费成人| 久久久精品动漫| 91白丝在线| 亚洲国产精品国自产拍av秋霞| 五月天婷婷色综合| 国精品**一区二区三区在线蜜桃| 亚洲国产一区二区三区在线| 日韩免费小视频| 亚洲欧美日韩网| 无码人妻一区二区三区线| 91色|porny| 青青草原av在线播放| 亚洲精华一区二区三区| 55夜色66夜色国产精品视频| 蜜桃视频污在线观看| 亚洲自拍欧美精品| 91精品又粗又猛又爽| 在线视频精品| 免费中文日韩| 欧美成人精品三级网站| 亚洲深夜福利在线| 夜夜躁日日躁狠狠久久av| 欧美国产日本韩| 青青草原国产在线视频| 我不卡影院28| 91在线看网站| 免费h视频在线观看| 亚洲精品综合久久中文字幕| 羞羞色院91蜜桃| 自拍偷拍欧美激情| 韩国三级在线看| 亚洲综合社区| 亚洲精品一区二区三区av| 中文字幕日本一区| 久久久久成人网| 欧美老女人性开放| 4438x亚洲最大成人网| 男女免费视频网站| 91美女视频网站| 国产免费又粗又猛又爽| 综合精品一区| 久久久久久a亚洲欧洲aⅴ| 成人av集中营| 久99久在线视频| 日夜干在线视频| 欧美日韩精品电影| 久久综合久久鬼| 国产午夜精品一区二区 | 在线观看污污网站| 一区在线中文字幕| 国产精品麻豆入口| 欧美aaa在线| 国产肉体ⅹxxx137大胆| 宅男在线一区| 91文字幕巨乱亚洲香蕉| 唐人社导航福利精品| 九九久久久久99精品| 麻豆导航在线观看| 日韩免费在线观看| 中文文字幕一区二区三三| 一区二区三区精密机械公司| 干b视频在线观看| 丰满岳乱妇一区二区三区| 黄色片在线免费| 精品成人免费| 中文字幕一区二区三区在线乱码| 欧美一级一片| 99久久国产免费免费| 福利一区二区三区视频在线观看| 午夜美女久久久久爽久久| 午夜在线观看视频| 精品亚洲va在线va天堂资源站| 国产丝袜在线视频| 在线观看日韩精品| 日韩黄色三级视频| 亚洲精品免费电影| 潮喷失禁大喷水aⅴ无码| 91在线免费播放| 欧洲成人午夜精品无码区久久| 日本亚洲免费观看| 人妻少妇被粗大爽9797pw| 欧美激情偷拍| 中文字幕一区二区三区四区五区| 欧洲杯足球赛直播| 九九九久久久| 黄色欧美网站| 96久久精品| 国产成人免费av一区二区午夜 | 波多野结衣电影在线播放| 五月激情六月综合| 国产一级淫片免费| 亚洲精品成人精品456| 韩国一级黄色录像| 亚洲国产激情av| 18禁裸乳无遮挡啪啪无码免费| 99久久伊人精品| av免费观看不卡| 成人综合婷婷国产精品久久免费| 99久久99精品| 韩国精品在线观看| 天堂av2020| 九色porny丨国产精品| 久久婷五月综合| 麻豆精品一区二区av白丝在线| 午夜视频在线瓜伦| 日本亚洲最大的色成网站www| 成年人视频在线免费| 久久久国产精品一区二区中文| 久久精品午夜福利| 久热精品在线| 日韩av片网站| 久久国产精品第一页| 中文字幕 日韩 欧美| 九色porny丨国产精品| 日韩av影视大全| 国产成人精品三级| 五月天丁香社区| kk眼镜猥琐国模调教系列一区二区| 伦理片一区二区| 26uuu欧美日本| 久久久免费看片| 国产精品成人免费| 玖玖爱这里只有精品| 亚洲影视在线观看| 日韩女同强女同hd| 日本电影亚洲天堂一区| 在线播放成人av| 欧美一级生活片| 五月天久久久久久| 亚洲色图狂野欧美| 免费日本一区二区三区视频| 久久成年人免费电影| av日韩国产| 国产成人精品一区二区| 欧美视频免费看| av成人午夜| 久久av综合| 强伦女教师2:伦理在线观看| 国产综合色产| 成人亚洲视频在线观看| 国产在线乱码一区二区三区| 国产a√精品区二区三区四区| 99久久精品国产麻豆演员表| 黄色片网站免费| 亚洲六月丁香色婷婷综合久久| 国产无码精品视频| 欧美三日本三级三级在线播放| 国产色片在线观看| 亚洲欧美资源在线| av免费网站在线| 国产mv久久久| 亚洲国产中文在线| 日韩av影视| 激情丁香综合| 中文字幕免费高清在线| a在线播放不卡| 制服丨自拍丨欧美丨动漫丨| 亚洲高清一区二区三区| 一区二区自拍偷拍| 亚洲第一区在线| 国产在线看片| 日韩av不卡电影| 婷婷综合国产| 亚洲欧美影院| 99riav1国产精品视频| 亚洲一区二区福利视频| 91免费看`日韩一区二区| 91日韩中文字幕| 欧美在线视频日韩| 午夜视频在线播放| 九九九久久国产免费| 国产黄色一区| 欧美精品一区二区三区久久| 亚洲影视一区| 美女在线视频一区二区| 久久久久综合网| 国产手机在线视频| 日韩无一区二区| 欧洲日本在线| 国产国语videosex另类| 神马久久av| av女优在线播放| 国产一区二区三区蝌蚪| 999久久久国产| 欧美日韩一卡二卡| 粉嫩av一区| 国产成人精品a视频一区www| 欧美黑人巨大videos精品| 亚洲爆乳无码精品aaa片蜜桃| 日韩电影在线免费| 在线国产视频一区| 疯狂欧美牲乱大交777| 欧洲精品久久一区二区| 久久91亚洲精品中文字幕| 精品一区二区三区四区五区| 一区二区三区在线观看www| 日本美女一区二区| 久久婷婷五月综合| 一本久久综合亚洲鲁鲁五月天| 日韩在线视频第一页| 久久久久久久久久久av| 视频精品一区| 黄色一级视频播放| 国产综合久久久久久久久久久久| 午夜激情视频在线播放| 欧美美女网站色| 黄av在线免费观看| 亚洲一区二区免费在线| 欧美freesex交免费视频| 无套内谢丰满少妇中文字幕| 亚洲欧美在线观看| 国产农村妇女毛片精品| 美女少妇精品视频| 涩涩屋成人免费视频软件| 国产aaa免费视频| 91小视频在线观看| 久久久精品视频网站| 国产一区二区欧美日韩| 欧洲亚洲精品久久久久| 精品国产三级a∨在线| 国产成人精品午夜视频免费| 日韩免费一二三区| 日韩精品在线免费| 国产精品毛片久久久久久久久久99999999| 日韩精品资源| 狠狠网亚洲精品| 国产真实的和子乱拍在线观看| 日韩高清中文字幕| av高清一区| 看一级黄色录像| 成人av在线资源网站| 成年人视频在线免费看| 中文一区二区视频| 日韩精品视频一区二区三区| 妞干网在线观看视频| 国产午夜亚洲精品不卡| 99久久久无码国产精品免费| 性色av香蕉一区二区| 欧洲杯半决赛直播| 好吊操视频这里只有精品| 精品久久久久久久久久| 国产在线视频你懂得| 91久久国产婷婷一区二区| 99精品视频免费| 无码人中文字幕| 亚洲第一在线视频| 91精品店在线| 加勒比成人在线| 一区精品在线播放| 天天躁日日躁狠狠躁伊人| 国产一区私人高清影院| 在线日韩av| 性色国产成人久久久精品| 亚洲大胆人体在线| 欧美国产视频| 日本精品一区在线观看| 亚洲欧美电影一区二区| 欧美色综合一区二区三区| 91亚洲精品久久久久久久久久久久| 香蕉久久久久久久av网站| 麻豆天美蜜桃91| 亚洲午夜精品视频| gogo久久日韩裸体艺术| 91看片破解版| 色8久久人人97超碰香蕉987|