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

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

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

    菜鳥手記

    Posted on 2012-07-19 23:10 YangSuN 閱讀(155) 評論(0)  編輯  收藏

    From now on,開始我的菜鳥手記,記錄一名菜鳥程序媛的成長過程。
    Today,公司昆哥給我的任務是看epp項目的數據流向,先起個blog頭,晚上go on

    Here we go !
    今天學習了SSH struts+spring+hibernate )框架的基本業務流程,帶教人曾在我剛進部門的時候就給了我一個miniweb的項目,讓我研究,對于一個僅培訓過幾天Java的我來說,左看右看上看下看也看不出什么感覺,直到今天,在一位同事的針對我們正著手做的項目的一個小模塊,帶著我將流程又細細走了一遍之后才有了初步的體會。我把研究了一整天的流程貼出來。
    首先,整個流程總體來說是
    ,在表示層中,通過JSP頁面實現交互界面,負責傳送請求(Request)和接收響應(Response),然后Struts根據配置文件(struts-config.xml)ActionServlet接收到的Request委派給Web層的相應Action處理,接著,在業務層中,管理服務組件的Spring IoC容器負責向Action提供業務模型(Model)組件和該組件的協作對象數據處理(DAO)組件完成業務邏輯,并提供事務處理、緩沖池等容器組件以提升系統性能和保證數據的完整性,最后,在持久層中,則依賴于Hibernate的對象化映射和數據庫交互,處理DAO組件請求的數據,并返回處理結果。
    假設以在頁面上顯示一個下拉菜單為例子。
    1.
    表示層的jsp頁面

    <td class="tdName">下拉菜單:</td>

        <td>

           <s:select  name="refundXiaLaId"   id="refundXiaLaId" cssClass="inputSelt"  list="xiaLaDtoList" headerKey="" headerValue="請選擇" listKey="id" listValue="xiaLaName"  value="%{XiaLaId}" theme="simple"/>

        </td>

    客戶端:http://localhost:8888/my-project/mypack/myFile/my-test-file!myfunc.action

     

     

    2WEB(要依據瀏覽器URL中的類和方法尋找相應的類和方法)

    MyTestFileAction.java

    @Namespace("/pm/myFile")

            public String myfunc() throws Exception {

            initMyList();

            setDefaultNamedTemplate(MYFILE_MYFUNC);

            return SUCCESS;

    }

     

        private void initMyList() {

            myList = new ArrayList<KeyValue>();

            Map<String, String> myMap = XXX.MY_MAP2;

            Set<String> keyList = myMap.keySet();

            for (Iterator<String> it = keyList.iterator(); it.hasNext();) {

                String key = it.next();

                String value = myMap.get(key);

                myList.add(new KeyValue(key, value));

            }

            xiaLaDtoList myRuleExtBiz.queryXiaLaInfo().getXiaLaDtoList();

    }

    或者

     

     public String queryXiaLasInfo() throws Exception {

            com.my.myproject.web.Page page1 = new com.my.myproject.web.Page ();

            page1.setPageSize(1000);

            page1.setCurrentPage(1);

            System.out.println("queryXiaLasInfo()");

            //保存結果返回

          

            List<XiaLaDto> xiaLasInfoList = myRuleExtBiz.queryXiaLaInfo().getXiaLaDtoList();

            setDefaultNamedTemplate(MYFILE_MYFUN);

            rootJson.put("xiaLasInfoList", xiaLasInfoList);

            return JSON;

    }

     

    3BIZ(需要依據上一層的myRuleExtBiz.queryXiaLaInfo().getXiaLaDtoList())

     

    3.1 biz接口 (在MyRuleExtBiz.java中)

    /**

         * 查詢所有信息

         */   
    public MyResult queryXiaLaInfo();

    3.2 biz實現 (在MyRuleExtBizImpl.java中)

    @ServiceAnnotation

        public MyResult queryXiaLaInfo() {

            MyResult myResult = new MyResult();

            List<XiaLaDto> dtoList = new ArrayList<XiaLaDto>();

            List<XiaLa> list = null;

            try {

                list = xiaLaService.queryAllXiaLa();

            } catch (Exception e) {

                logger.debug("查詢所有-調用查詢服務異常,錯誤信息:{}", e.getMessage());

                logger.error("查詢所有-調用查詢服務異常", e);

                myResult.fail("query all XiaLas had exception""調用查詢所有服務異常");

                return myResult;

            }

            if (CollectionUtils.isNotEmpty(list)) {

                for (XiaLa xiaLa : list) {

                    dtoList.add(changeXiaLaToXiaLaDto(xiaLa));

                }

            }

            myResult.setCompanyChangeDate(DateUtil.getDefinableDateStr(companyChangeDate));

            myResult.setXiaLaDtoList(dtoList);

            return myResult;

    }

     
    3.3 Service(根據上面的 xiaLaService.queryAllXiaLa() 


    3.3.1 
    聲明(在MyRuleExtBizImpl.java中)

    public class MyRuleExtBizImpl implements MyRuleExtBiz {

    @Autowired

     private XiaLaService     xiaLaService;

    }

    3.3.2 實現( XiaLaService.java中)

    @Service("xiaLaService")

    public class XiaLaService {

     

        @Autowired

        XiaLaDao xiaLaDao;

        public List<XiaLa> findAllOnlineXiaLa() {

            return this.xiaLaDao.queryAllOnlineXiaLa();

    }

     

    (4)DAO(根據上一層的 xiaLaDao.queryAllOnlineXiaLa() 


    4.1
    接口 (在XiaLaDao.java中)

    public interface XiaLaDao extends GenericDao<XiaLa> {

        List<XiaLa> queryAllOnlineXiaLa();

    }

     

    4.2 實現 (在XiaLaDaoHibernate.java

    @SuppressWarnings("unchecked")

        public List<XiaLa> queryAllOnlineXiaLa() {

            String hql = this.queryBuilder.getQueryString("hqlQueryAllXiaLa"null);

            return super.queryListByHql(hql);

    }

     

    5.xml文件中看(ctrl+H)找hqlQueryAllXiaLa.xml

     <bean id="hqlQueryAllXiaLa" class="java.lang.String">  ,即 beans-pp-hql.xml文件

           <constructor-arg>

               <value><![CDATA[

             from XiaLa xiaLa where xiaLa.parentId=50 and xiaLa.my='1' order by xiaLa.sortId asc

            ]]></value>

           </constructor-arg>

        </bean>

    6.4.2中的return super.queryListByHql(hql); 處操作完依次返回 


    注:找數據庫的表名字可以再在DMO,如myproject-my-dmoXiaLa.java中開頭有注解

    @Entity

    @Table(name = "T_CHANNEL")



     


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品一区二区三区四区乱码| 99久久久精品免费观看国产| 免费毛片毛片网址| 亚洲成AV人片在WWW| 国产亚洲中文日本不卡二区| 狠狠色伊人亚洲综合网站色| 亚洲爆乳大丰满无码专区| 国产成人高清亚洲一区久久| 黄色免费网址大全| 国产福利电影一区二区三区,免费久久久久久久精| 黄色a级片免费看| 老司机精品免费视频| 最近免费中文字幕MV在线视频3 | 亚洲一区二区免费视频| 亚洲乱码一区二区三区国产精品| 最新亚洲精品国偷自产在线| 另类小说亚洲色图| 九九热久久免费视频| 免费观看91视频| 久久www免费人成看片| 免费的一级片网站| 一区国严二区亚洲三区| 亚洲精品V欧洲精品V日韩精品 | 国产成人免费ā片在线观看| 亚洲国产av一区二区三区| 亚洲尤码不卡AV麻豆| 亚洲无线电影官网| 自拍偷区亚洲国内自拍| 国产精品成人亚洲| a级毛片免费播放| 国产精品久久免费| 四虎影视在线永久免费观看| 亚洲男同帅GAY片在线观看| 亚洲第一成年人网站| 男人的天堂av亚洲一区2区| 国产特黄特色的大片观看免费视频| 精品国产免费一区二区三区香蕉| 免费三级毛片电影片| 免费少妇a级毛片人成网| 亚洲AV无码成人精品区天堂 | 亚洲av午夜成人片精品网站|