菜鳥手記

          Posted on 2012-07-19 23:10 YangSuN 閱讀(158) 評論(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")



           


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


          網站導航:
           
          主站蜘蛛池模板: 太保市| 扶绥县| 温泉县| 武义县| 和平区| 中牟县| 五莲县| 淮南市| 夏津县| 嘉定区| 长葛市| 南昌县| 松原市| 牟定县| 慈溪市| 尉氏县| 大足县| 鄄城县| 岢岚县| 同德县| 抚州市| 光山县| 横峰县| 珲春市| 东乌珠穆沁旗| 安徽省| 内江市| 五原县| 虎林市| 屏山县| 平果县| 榆树市| 金堂县| 阿合奇县| 曲麻莱县| 长寿区| 连城县| 伊金霍洛旗| 吐鲁番市| 北碚区| 达孜县|