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

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

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

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks
    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的三個方法無需配置,將可以分別用以下鏈接進(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>


    然后是寫一個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的更高版本中卻未能獲通過,這不能不說是個遺憾。
    posted on 2009-08-20 17:21 brock 閱讀(1311) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 西西人体免费视频| 污网站免费在线观看| 国产在线观a免费观看| 国产精品成人无码免费| 亚洲中文字幕一二三四区| 妻子5免费完整高清电视| 亚洲短视频在线观看| 免费观看激色视频网站bd| 亚洲小说图片视频| 免费无码AV片在线观看软件| 亚洲一区免费在线观看| 无码专区永久免费AV网站| 亚洲中文字幕久久精品无码A| 成人免费777777| 亚洲AV电影天堂男人的天堂| 四虎精品亚洲一区二区三区| rh男男车车的车车免费网站| 亚洲国产精品无码久久一线| 99re免费99re在线视频手机版| 久久久久久亚洲AV无码专区| 在线视频观看免费视频18| 日韩国产欧美亚洲v片| 亚洲无码精品浪潮| 无码A级毛片免费视频内谢| 亚洲美女大bbbbbbbbb| 女人18毛片水真多免费看 | 亚洲无砖砖区免费| 中字幕视频在线永久在线观看免费 | 一区二区三区视频免费| 久久久久久久尹人综合网亚洲| 中文字幕免费在线| 亚洲av永久无码精品秋霞电影秋| 亚洲av高清在线观看一区二区| 久久精品私人影院免费看| 亚洲国产精品成人精品小说| 日韩亚洲国产二区| 91短视频免费在线观看| 特级毛片免费观看视频| 亚洲精品免费在线| 免费在线视频一区| 中文字幕成人免费视频|