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

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

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

    java之家

    開發心得

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      3 隨筆 :: 1 文章 :: 1 評論 :: 0 Trackbacks

       對于開發對于頁面連接尤如蜘蛛網一樣,經常會有一堆具有千頭萬緒的關聯頁面組成的大中型Web應用來說,如何組織及處理頁面的跳轉成為一個MVC框架非常關鍵因素。Struts1之所以能得到大家的認可,是因為他基本解決了數據與視圖分離的問題,之所以Struts升級一個版本到Struts2后不再“Struts”了,核心原因除了框架核心技術落后、很多地方受限制以外,一個原因是他無法很好地組織及處理頁面跳轉問題。當然盡管升級到了Struts2,但相對于Rails等新興MVC的框架來說,顯得死板了很多。
       而EasyJWeb在頁面組織及處理頁面跳轉等方面,提供了很多更加靈活的功能,很多思想來自于Spring MVC、Rails等一些新興Web框架的精髓,他能讓你用比較簡潔的代碼、甚至不用代碼來實現頁面的跳轉。
      在Web應用程序開發中,我們經常遇到如下的需求:
      1、從這個頁面連接到另外一個頁面;
      2、在服務器執行完某一段程序后,把輸出導向另外一個頁面;
      3、在服務器端執行完某一段程序后,把輸出導向到另外一段程序繼續執行;
      4、在服務器程序執行完后,選擇使用一個頁面呈現用戶輸出;
      5、頁面跳轉要具有較強的環境適應能力,比如部署在跟目錄下跟部署到其它Context目錄下都能執行正確的跳轉;
      6、還有更變態的,比如EasyJF官網,要求使用動態地址訪問的時候,看到的地址全是動態,當使用靜態地址訪問的時候,地址全是靜態的,Java Web服務器不能工作了,Apache或IIS也要保證網頁能正常訪問。
      7、有的人喜歡使用/user/edit/1這樣的url,有的人喜歡使用/user.ejf?cmd=edit&id=1這樣的url,我們要求不管使用哪一種url樣式訪問頁面,連接都會非常友好的變成用戶喜愛的形式。

       可以說,現在很少有框架能完全滿足或者為用戶考慮到如此復雜多變而對于我們國人來說應用性又非常廣泛的需求。一些框架即使提供上面一些功能也是以書寫復雜的代碼及配置文件為代價的。在EasyJWeb中,提供了上面所列的這些功能,并提供了非常簡潔的調用接口及方法。
       針對上面的幾點,EasyJWeb的解決方案:
      1,這個用<a>標簽,不用說了。
      2、在服務器執行完某一段程序后,把輸出導向另外一個頁面;
      返回html類型的Page對象。
      3、在服務器端執行完某一段程序后,把輸出導向到另外一段程序繼續執行;
       使用forward或者go方法。
      4、在服務器程序執行完后,選擇使用一個頁面呈現用戶輸出;
       使用page方法。
      5、頁面跳轉要具有較強的環境適應能力,比如部署在跟目錄下跟部署到其它Context目錄下都能執行正確的跳轉;
      在頁面模板中使用$html.url,比如:<a href="$html.url('user.list')">用戶列表</a>。
      6、不同地址樣式轉移
      在頁面模板中使用$html.forward,比如<a href="$html. forward'('news.technic')">技術前沿</a>。這樣動態的時候訪問到的是news.ejf?cmd= technic,靜態的時候訪問到的是/news/technic.html。
      7、傳統及現代的URL樣式轉換
       仍然是使用$html.url,或$html.forward標簽,他能感知你的url樣式。比如:<a href="$html.url('user.add')">添加用戶</a>。你使用user.ejf?cmd=lsit,訪問應用,則當點添加user.ejf?cmd=add。而如果你使用/ejf/user/list訪問應用,則編輯按鈕的連接變成ejf/user/add。
      
      在代碼中,除了可以使用最原始的return new Page()方式返回用戶的視圖模板以外,還可以使用一些快捷方法來實現靈活的視圖查詢及跳轉。比如,go、forward、page等方法。下面看一個用戶添刪改查的示例中的Action代碼如下:

    import com.easyjf.container.annonation.Inject;
    import com.easyjf.core.support.query.QueryObject;
    import com.easyjf.util.CommUtil;
    import com.easyjf.web.WebForm;
    import com.easyjf.web.core.AbstractPageCmdAction;
    import com.easyjf.web.tools.IPageList;

    public class UserAction extends AbstractPageCmdAction {
     
     @Inject
     
    private UserService service;
     
     
    public void setService(UserService service) {
      
    this.service = service;
     }

     
    /**
      * 顯示添加用戶的界面user/edit.html
      
    */

     
    public void add()
     
    {
      page(
    "edit");
     }

     
    public void edit(WebForm form)
     
    {
      String id
    =(String)form.get("id");
      User user
    =this.service.getUser(new Long(id));
      form.addPo(user);
     }

     
    public void save(WebForm form)
     
    {
      User user
    =form.toPo(User.class);
      
    if(hasErrors())
      
    {
       page(
    "edit");
       
    return;
      }

      service.saveUser(user);
      forward(
    "list");
     }

     
    public void update(WebForm form)
     
    {
      String id
    =(String)form.get("id");
      User user
    =this.service.getUser(new Long(id));
      form.toPo(user,
    true);
      
    if(hasErrors())
      
    {
       page(
    "edit");
       
    return;
      }

      service.updateUser(user);
      forward(
    "list");
     }

     
    public void delete(WebForm form)
     
    {
      String id
    =(String)form.get("id");
      User user
    =this.service.getUser(new Long(id));
      service.delUser(user);
      go(
    "list");
     }

     
    public void list(WebForm form)
     
    {
      QueryObject qo
    =form.toPo(QueryObject.class);
      IPageList pageList
    =service.queryUser(qo);
      CommUtil.saveIPageList2WebForm(pageList, form);  
     }

    }


    UserService接口:
    public interface UserService {
     
    /**
      * 根據id查詢用戶
      * 
      * 
    @param id
      * 
    @return
      
    */

     User getUser(Long id);

     
    /**
      * 保存用戶
      * 
      * 
    @param user
      
    */

     
    void saveUser(User user);

     
    /**
      * 修改用戶信息
      * 
      * 
    @param user
      
    */

     
    void updateUser(User user);

     
    /**
      * 刪除用戶
      * 
      * 
    @param user
      
    */

     
    void delUser(User user);

     
    /**
      * 查詢用戶信息
      * 
    @param query 
      * 
    @return 分頁信息及記錄集
      
    */

     IPageList queryUser(IQueryObject query);
    }


    posted on 2007-12-14 13:15 java fan nb 閱讀(749) 評論(0)  編輯  收藏 所屬分類: struts框架

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲av无码片在线观看| 亚洲人成综合网站7777香蕉| 最新国产精品亚洲| jizz在线免费播放| 免费精品国产自产拍在线观看图片 | 亚洲精品不卡视频| 国产亚洲精品第一综合| 三年片在线观看免费观看大全动漫| 成熟女人牲交片免费观看视频| 国产专区一va亚洲v天堂| 亚洲国产精品综合久久网各| 成人午夜影视全部免费看| 色影音免费色资源| 亚洲综合伊人久久综合| 亚洲欧美第一成人网站7777| 久久免费线看线看| 国产乱子影视频上线免费观看| 亚洲网站免费观看| 一个人看www免费高清字幕| 韩国免费一级成人毛片| 亚洲国产精品无码久久一区二区| 亚洲精品美女久久久久久久| 一级毛片免费不卡在线| 亚洲综合亚洲综合网成人| 亚洲成_人网站图片| 99久热只有精品视频免费观看17| 亚洲女同成人AⅤ人片在线观看 | 一级做a爰性色毛片免费| 最新猫咪www免费人成| 久久亚洲熟女cc98cm| 精品熟女少妇aⅴ免费久久| 日韩高清在线高清免费| 亚洲精品456在线播放| 伊人免费在线观看| 亚洲精品无码av天堂| 亚洲成av人片在www鸭子| 97热久久免费频精品99| 久久夜色精品国产嚕嚕亚洲av| 九九免费精品视频在这里| 精品免费久久久久久成人影院| 亚洲国产精品久久网午夜|