<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    goldrain

    金色雨點(diǎn)

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      37 隨筆 :: 2 文章 :: 239 評論 :: 0 Trackbacks
    自從ror熱潮席卷web開發(fā)界以來,慣例優(yōu)于配置的快速開發(fā)理念便深入人心。

    struts2中對action name支持通配符配置,所以使其方便的實(shí)現(xiàn)零配置成為可能。

    實(shí)現(xiàn)零配置后的開發(fā)會是怎樣,開發(fā)員不用配置struts.xml,也不用在action代碼中寫annotation,是真正干凈的零配置。以下的代碼是我們希望達(dá)到的效果。
    action示例
    package net.jacker.ww.sys;

    public class UserAction extends BaseAction {


      
        
    public String execute() throws Exception {
             
             
    return "default"
             //
     default表示使用缺省頁面,路徑名和action所在包和類名相關(guān),為 /sys/User.jsp
        }

        
    public String roles(){
            
            
    return view("/sys/UserRoles"); // 指定展示頁面為 /sys/UserRoles.jsp 
        }


        
    public String xxxx(){
           
           
    return redirect("/sys/User.do"); // 重定向,url為 /sys/User.do
        
        }




    }


    以上action的三個(gè)方法無需配置,將可以分別用以下鏈接進(jìn)行訪問:
    http://localhost:8080/sys/User.do
    http://localhost:8080/sys/User!roles.do
    http://localhost:8080/sys/User!xxxx.do(將重定向到User.do)


    下面我們來看看以上零配置是如何做到的。
    首先,我們需要在struts.xml中做如下的配置。
    <struts>
        
    <constant name="struts.enable.SlashesInActionNames" value="true" /> <!-- action名可以有'/'字符 -->
        
    <constant name="struts.action.extension" value="do"/> <!-- .do為訪問擴(kuò)展名 -->

      
    <package name="default" extends="struts-default">
      
      
    <!-- 通配符配置,匹配所有的URL對action的訪問 -->
        
    <action name="*/*!*" class="net.jacker.ww.{1}.{2}Action" method="{3}"> 
          
    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>
          
    <result name="view" type="dispatcher">${viewpath}.jsp</result>
          
    <result name="redirect" type="redirect">${viewpath}</result>
        
    </action>
        
    <action name="*/*" class="net.jacker.ww.{1}.{2}Action">
          
    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>
          
    <result name="view" type="dispatcher">${viewpath}.jsp</result>
          
    <result name="redirect" type="redirect">${viewpath}</result>
        
    </action>
      
    </package>

    </struts>


    然后是寫一個(gè)Action基類,BaseAction.java
    package net.jacker.ww;

    import com.opensymphony.xwork2.Action;


    public abstract class BaseAction implements Action{

        

        String viewpath; 
    //該屬性會在struts.xml中用到

        
    public String view(String vpath){
            viewpath 
    = vpath;
            
    return "view";
        }

        
    public String redirect(String vpath){
            viewpath 
    = vpath;
            
    return "redirect";
        }


        
    public String getViewpath() {
            
    return viewpath;
        }

        

    }


    做好以上的基礎(chǔ)工作,你的action類只要繼承BaseAction,符合XxxAction的命名規(guī)則,放到對應(yīng)的包下,頁面也放到對應(yīng)的路徑,就可以無需配置而訪問了。

    如果要替換view層也很簡單,只要對struts.xml做簡單修改,比如:

    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>

    改為

     <result name="default" type="velocity">/{1}/{2}.vtl</result>

    修改后的struts將統(tǒng)一使用velocity模板取代jsp作為頁面展示層。

    注意:
    實(shí)測后發(fā)現(xiàn),以上零配置的做法只在struts2.0.11版本中可以使用,在struts2.0.XX的更高版本中卻未能獲通過,這不能不說是個(gè)遺憾。

    posted on 2009-04-07 14:13 goldrain 閱讀(9645) 評論(15)  編輯  收藏

    評論

    # re: struts2之完全零配置[未登錄] 2009-04-07 14:35 abc
    老大,攔截器怎么辦,驗(yàn)證怎么辦,能完全省略嗎!  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-04-07 14:53 goldrain
    @abc
    對,實(shí)際項(xiàng)目中要根據(jù)情況有很多的取舍。
    但并不是說你提到的攔截器,驗(yàn)證等就不能做了。

    比如你可以對通配符配置更多的支持;

    對特殊情況,你可以建其他命名空間package來做;

    或者對更特殊情況可以配置單獨(dú)的action;

    但在我實(shí)際項(xiàng)目開發(fā)中,多數(shù)情況都可以按文中描述的來做。
      回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-04-07 14:56 goldrain
    有時(shí)我們總是過度考慮靈活性,而忘記了效率和體驗(yàn)才是我們最需要的。  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-06-12 09:17 這是完全零配置嗎
    我靠,這是完全零配置嗎?struts.xml都還在,暈死.....................  回復(fù)  更多評論
      

    # re: struts2之完全零配置[未登錄] 2009-06-12 09:54 goldrain
    @這是完全零配置嗎
    那是初始配置而已,之后就不用配置了。
    咬文嚼字有意義么?  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-06-16 17:39 暈 死了 這樣的零配置誰敢用
    郁悶。。。  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-06-16 17:40 暈 死了 這樣的零配置誰敢用
    出發(fā)點(diǎn)是好的   回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-08-24 14:23 XLay
    這樣配置一個(gè)很大的缺陷就是如果要更改頁面指向,就要更改action的java代碼!!  回復(fù)  更多評論
      

    # re: struts2之完全零配置[未登錄] 2009-08-24 14:54 goldrain
    @XLay
    你說的很對,但這個(gè)基本不是問題,誰吃飽了撐著沒事去改頁面指向干嘛  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-11-06 09:41 Allen Yang
    這不是Struts2的零配置,Struts2的零配置是基于Convention插件來實(shí)現(xiàn)的,它里面體現(xiàn)的是“約定大于配置”的思想,而不是用通配符來配置  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2009-12-12 23:35 Mr Jiang
    零配置不是不用再配置struts.xml了么?
    這樣配置確實(shí)達(dá)到了動(dòng)態(tài)的配置,但是struts提供的MVC模式好像是不是有點(diǎn)混了,假如我在維護(hù)或是在利用階段是不是不好對其代碼修改啊?期待您的回答?  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2010-01-27 13:00 ddd
    不錯(cuò)  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2011-11-28 15:06 99134194
    零配置是不需要寫以下代碼的:
    <action name="*/*!*" class="net.jacker.ww.{1}.{2}Action" method="{3}">
    <result name="default" type="dispatcher">/{1}/{2}.jsp</result>
    <result name="view" type="dispatcher">${viewpath}.jsp</result>
    <result name="redirect" type="redirect">${viewpath}</result>
    </action>
      回復(fù)  更多評論
      

    # re: struts2之完全零配置 2012-06-14 21:47 O
    這也叫零配制???????fuck  回復(fù)  更多評論
      

    # re: struts2之完全零配置 2012-09-09 00:39 功夫風(fēng)光好
    很好,類似于spring mvc 的思想,很強(qiáng)大,只是struts2更高版本的零配置是基于“約定優(yōu)于配置”的思想用Convention插件來實(shí)現(xiàn)的。  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 四虎国产精品永免费| 99视频在线看观免费| 亚洲VA中文字幕无码一二三区| a在线免费观看视频| 亚洲午夜电影在线观看| 日韩免费视频播放| 国产线视频精品免费观看视频| 亚洲黄网站wwwwww| 免费国内精品久久久久影院| 在线观看免费无码视频| 亚洲不卡影院午夜在线观看| 亚洲综合国产一区二区三区| 国产福利在线免费| 中文字幕不卡免费视频| 亚洲成_人网站图片| 亚洲av无码乱码国产精品| 欧洲精品免费一区二区三区| 久久香蕉国产线看免费| 久久精品国产亚洲AV天海翼| 久久久久亚洲AV无码网站| 亚洲视频在线免费| 成人免费看吃奶视频网站| 国产在线精品免费aaa片| 老司机亚洲精品影院在线观看| 久久精品国产亚洲AV无码麻豆| 亚洲 另类 无码 在线| 大学生一级毛片免费看| 免费在线看黄网站| 一级白嫩美女毛片免费| 亚洲熟妇无码AV| 亚洲福利秒拍一区二区| 国产亚洲精品岁国产微拍精品| 免费国产在线观看老王影院| 亚洲成年人免费网站| 久久久久久久99精品免费观看| 全部在线播放免费毛片| 怡红院亚洲红怡院在线观看| 亚洲一级免费视频| 亚洲综合成人网在线观看| 国产亚洲综合久久系列| 久久亚洲中文字幕精品一区四|