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

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

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

    Rising Sun

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      148 隨筆 :: 0 文章 :: 22 評論 :: 0 Trackbacks
    struts2中對action name支持通配符配置,所以使其方便的實現零配置成為可能。

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

    public class UserAction extends BaseAction {


      
        
    public String execute() throws Exception {
             
             
    return "default"
             //
     default表示使用缺省頁面,路徑名和action所在包和類名相關,為 /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的三個方法無需配置,將可以分別用以下鏈接進行訪問:
    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為訪問擴展名 -->

      
    <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;
        }

        

    }


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

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

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

    改為

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

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

    注意:
    實測后發現,以上零配置的做法只在struts2.0.11版本中可以使用,在struts2.0.XX的更高版本中卻未能獲通過,這不能不說是個遺憾。
    posted on 2009-08-20 17:21 brock 閱讀(1311) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 香蕉免费在线视频| 人妻巨大乳hd免费看| 免费看又黄又无码的网站| 亚洲伊人久久综合中文成人网| 国产精品亚洲专区无码牛牛| 日日夜夜精品免费视频| 亚洲AV永久无码精品放毛片| 国产成人精品免费视频软件| 国产成人综合亚洲绿色| 亚洲精品国产高清嫩草影院| 国产V片在线播放免费无码| 奇米影视亚洲春色| 久久这里只精品99re免费| 亚洲日本国产精华液| 拍拍拍又黄又爽无挡视频免费| 亚洲乱亚洲乱妇无码| 国产传媒在线观看视频免费观看| 狠狠入ady亚洲精品| 中文字幕日韩亚洲| 久久这里只精品国产免费10| 亚洲ts人妖网站| 免费h成人黄漫画嘿咻破解版| 一区二区三区免费电影| 亚洲国产精品无码专区影院| 亚欧在线精品免费观看一区| 亚洲成av人片在www鸭子| 久久精品国产亚洲Aⅴ蜜臀色欲| 免费无码又爽又刺激网站直播 | 免费久久精品国产片香蕉| 一区二区免费在线观看| 久久夜色精品国产嚕嚕亚洲av| 久久狠狠躁免费观看| 77777午夜亚洲| 区三区激情福利综合中文字幕在线一区亚洲视频1| 国产区在线免费观看| 亚洲国产精品综合久久久| 亚洲国产成人精品无码久久久久久综合| 182tv免费视频在线观看| 亚洲国产成人无码AV在线| 日本红怡院亚洲红怡院最新| 一个人看www在线高清免费看|