<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      內(nèi)容管理項(xiàng)目小結(jié) 成功案例-公司官網(wǎng),游戲官網(wǎng)

      1,架構(gòu)

      wps_clip_image-17144

      2,技術(shù)架構(gòu)

      wps_clip_image-23633

      3,應(yīng)用的啟動(dòng)過程

      wps_clip_image-21212

      4,用戶的訪問過程(前端為靜態(tài)的html頁(yè)面,這里主要是后端)

      wps_clip_image-28646

      5,高級(jí)的地方,通過泛型,抽象了整個(gè)的MVC訪問過程,對(duì)增刪改查只寫了一份代碼,每一個(gè)新增的業(yè)務(wù)只需增加幾個(gè)類,繼承復(fù)用泛型類即可。

      wps_clip_image-32121

      <!-- 創(chuàng)建游戲產(chǎn)品 -->

      <action name="add" class="com.sz7road.web.action.admin.gameproduct.GameProductAction" method="modify">

      <param name="operation">add</param>

                  <result name="input" type="tiles">adminGameProductAdd</result>

                  <result name="success" type="redirectAction">list</result>

      <interceptor-ref name="globalInterceptorStack"></interceptor-ref>

      </action>

              <!-- 編輯游戲產(chǎn)品 -->

      <action name="edit" class="com.sz7road.web.action.admin.gameproduct.GameProductAction" method="modify">

      <param name="operation">edit</param>

      <result name="success" type="redirectAction">list</result>

      <result name="input" type="tiles">adminGameProductEdit</result>

      <interceptor-ref name="globalInterceptorStack"></interceptor-ref>

      </action>

              <!-- 刪除游戲產(chǎn)品 -->

      <action name="del" class="com.sz7road.web.action.admin.gameproduct.GameProductAction" method="modify">

      <param name="operation">del</param>

                  <result name="input" type="redirectAction">list</result>

                  <result name="success" type="redirectAction">list</result>

                  <interceptor-ref name="globalInterceptorStack"></interceptor-ref>

      </action>

              <!-- 查詢游戲產(chǎn)品 -->

              <action name="list" class="com.sz7road.web.action.admin.gameproduct.GameProductAction" method="list">

                  <param name="operation">list</param>

                  <result name="input" type="tiles">adminHomePage</result>

                  <result name="success" type="tiles">adminGameProductList</result>

                  <interceptor-ref name="globalInterceptorStack"></interceptor-ref>

              </action>

          public String modify() throws Exception {

              EditType editType = EditType.getEnumType(getOperation());

              if (null == editType) {

                  addActionError("operation參數(shù)非法");

                  return ActionSupport.INPUT;

              }

              boolean result = false;

              try {

                  result = getService().modifyItem(editType, getT(), getDeleteIdArray());

              } catch (Exception e) {

                  e.printStackTrace();

                  return ActionSupport.ERROR;

              }

              if (result) {

                  msg = getText("operation.success");

                  return ActionSupport.SUCCESS;

              } else {

                  return ActionSupport.ERROR;

              }

          }

          public String list() throws Exception {

              paginationResult = new PaginationResult<T>();

              dataList = getService().searchByPage(getPager());

              final int total = getService().getTotalCount();

              paginationResult.setTotal(total);

              paginationResult.setResultList(dataList);

              requestMap.put(AppConstant.PAGE_MAP_OBJECT, paginationResult);

              return ActionSupport.SUCCESS;

          }

       @Override

          public List<T> listByPage(Pager pager) {

              boolean result = false;

              final Session session = getCurrentSession();

              Transaction transaction = session.beginTransaction();

              List<T> list = null;

              try {

                  final int pageSize = pager.getPageSize();

                  final int startPage = (pager.getPageIndex() - 1) * pageSize;

                  final StringBuffer queryStringBuffer = new StringBuffer(" from " + domainObjectName + " as " + instanceName  );

                  if(!Strings.isNullOrEmpty(pager.getSearchField()))

                  {

                      queryStringBuffer.append(" where "+instanceName + "." + pager.getSearchField() + " ").append(pager.getSearchOperation()+ " '").append(pager.getSearchValue()+"'");

                  }

                  queryStringBuffer.append(" order by ").append(instanceName + "." + pager.getSortField() + " " + pager.getSortOrder());

      //            queryStringBuffer.append(" limit ").append(startPage).append(" , " + pageSize);

                  Query query = session.createQuery(queryStringBuffer.toString());

                  query.setFirstResult(startPage);

                  query.setMaxResults(pageSize);

                  list = query.list();

                  transaction.commit();

              } catch (Exception ex) {

                  ex.printStackTrace();

                  transaction.rollback();

              } finally {

                  return list;

              }

      }

          public boolean update(final T entity) {

              boolean result = false;

              final Session session = getCurrentSession();

              Transaction transaction = session.beginTransaction();

              try {

                  if(entity.getId()>0){

                      session.update(entity);

                      result=true;

                  }  else{

                      result = session.save(entity) != null;

                  }

                  transaction.commit();

              } catch (Exception ex) {

                  ex.printStackTrace();

                  transaction.rollback();

              } finally {

                  return result;

              }

          }

      6,tiles和基本展示控件包的使用

      指定好定義tiles的配置文件,對(duì)象工廠,以及監(jiān)聽器即可

      <context-param>

      <param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>

      <param-value>org.apache.struts2.tiles.StrutsTilesContainerFactory</param-value>

      </context-param>

      <context-param>

      <param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name><param-value>

      /WEB-INF/tiles/tiles.xml,

      /WEB-INF/tiles/tiles-adminlogin.xml,

      /WEB-INF/tiles/tiles-adminPermission.xml,

      /WEB-INF/tiles/tiles-adminUser.xml,

      /WEB-INF/tiles/tiles-adminEvent.xml,

                  /WEB-INF/tiles/tiles-adminAgent.xml,

                  /WEB-INF/tiles/tiles-adminRecruit.xml,

                  /WEB-INF/tiles/tiles-adminCompanyInfo.xml,

                  /WEB-INF/tiles/tiles-adminCategory.xml,

                  /WEB-INF/tiles/tiles-adminAt7road.xml,

                  /WEB-INF/tiles/tiles-adminGameProduct.xml,

                  /WEB-INF/tiles/tiles-adminCarousel.xml

      </param-value>

      </context-param>

      <listener>

      <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>

      </listener>

      <?xml version="1.0" encoding="UTF-8"?>

      <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">

      <tiles-definitions>

      <!--首頁(yè)-->

      <definition name="adminDefaultLayout" template="/WEB-INF/web/common/admin/admin_layout.jsp">

      <put-attribute name="titleKey" value="PageTitle" type="string"/>

      <put-attribute name="header" value="/WEB-INF/web/common/admin/admin_header.jsp"/>

      <put-attribute name="leftbar" value="/WEB-INF/web/common/admin/admin_left.jsp"/>

      <put-attribute name="content" value=""/>

              <put-attribute name="footer" value="/WEB-INF/web/common/admin/admin_footer.jsp"/>

      </definition>

      </tiles-definitions>模版定制

      <tiles-definitions>

          <definition name="adminCategoryAdd" extends="adminDefaultLayout">

          <put-attribute name="titleKey" value="admin.categoryManage.add"/>

          <put-attribute name="content" value="/WEB-INF/web/admin/category/admin_createCategory.jsp" />

      </definition>個(gè)性實(shí)例

      主要看展示數(shù)據(jù)的控件的使用:

      <pg:pager items="<%=paginationResult.getTotal()%>"

                        url='<%=request.getContextPath()+"/gameProduct/list.action"%>'

                        index="center"

                        maxPageItems='<%= Integer.parseInt(SystemConfig.getProperty("admin.search.page.size")) %>'

        maxIndexPages='<%= Integer.parseInt(SystemConfig.getProperty("admin.search.max.index.pages")) %>'

                        isOffset="true" export="offset,currentPageNumber=pageNumber" scope="request">

      <display:table name="requestScope.paginationResult.resultList" class="tablelist"

      defaultsort="0" cellpadding="0" cellspacing="0" style="width:99%"

      requestURI="" id="gameProduct">

                      <%--<display:column property="id"   titleKey="admin.id" style="width:30px;"/>--%>

                      <display:column property="orderNum"  titleKey="admin.orderNum"/> //序號(hào)

                      <display:column property="gameName"  maxLength="5" titleKey="admin.gameProduct.gameName"/> //游戲名稱

                      <display:column property="gameTitle"  maxLength="5" titleKey="admin.gameProduct.gameTitle"/> //游戲標(biāo)題

                      <display:column property="gameWebsiteUrl" maxLength="15"  titleKey="admin.gameProduct.gameWebsiteUrl"/>//官網(wǎng)地址

                      <display:column property="gamePlayUrl"  maxLength="15" titleKey="admin.gameProduct.gamePlayUrl"/>//選服頁(yè)地址

                      <display:column property="gameHtmlName" maxLength="5"  titleKey="admin.gameProduct.gameHtmlName"/>//html名稱

                      <display:column property="gameImgShowInProduct"  maxLength="20" titleKey="admin.gameProduct.gameImgShowInProduct"/>//產(chǎn)品圖片

                      <display:column property="gameShortDesc"  maxLength="5" titleKey="admin.gameProduct.gameShortDesc" escapeXml="true"/>//簡(jiǎn)介

                      <display:column property="gameDetailDesc" maxLength="5"  titleKey="admin.gameProduct.gameDetailDesc" escapeXml="true"/>//詳細(xì)

                      <display:column property="createTime" style="width:50px;"  titleKey="admin.createTime" format="{0,date,yyyy-MM-dd}"/>//創(chuàng)建日期

      <display:column style="width:60px;" titleKey="admin.common.operation"  href='${path}/gameProduct/edit.action'>

      <s:url id="editUrl" namespace="/gameProduct" action="editPage">

      <s:param name="gameProduct.id"><s:property value="#attr.gameProduct.id"/></s:param>

      </s:url>

      <s:a href="%{editUrl}"><s:text name="admin.common.edit"/></s:a>

      <a href="#"  onClick="deleteGameProduct('<s:property value="#attr.gameProduct.id"/>','<s:property value="#attr.gameProduct.gameName"/>')"><s:text name="admin.common.delete"/></a>

      </display:column>

      </display:table>

      <jsp:include page="/WEB-INF/web/common/pagination2.jsp" flush="true" />

      </pg:pager>

      <%@ page contentType="text/html; charset=UTF-8"%>

      <%@ page session="false" %>

      <%@ taglib uri="/WEB-INF/pager-taglib.tld" prefix="pg" %>

      <jsp:useBean id="currentPageNumber" type="java.lang.Integer" scope="request"/>

      <jsp:useBean id="totalItems" type="java.lang.Integer" scope="request"/>

      <jsp:useBean id="maxPageItems" type="java.lang.Integer" scope="request"/>

      <br>

      <span class="tabletitle">Result Page: </span>

      <span class="content">

      <%

      int totalItemCount = totalItems.intValue();

      int pageSise = maxPageItems.intValue();

      if(totalItemCount < 1){

      %>

      沒有查詢到任何記錄.  

      <%

      }else if(totalItemCount == 1){

      %>

      1 - <%= totalItemCount %> of <%= totalItemCount %> record. 

      <%

      }else if(totalItemCount <= pageSise){

      %>

      1 - <%= totalItemCount %> of <%= totalItemCount %> records. 

      <%

      }

      %>

      <pg:index export="total=itemCount">

      <pg:page export="first,last">

          <%= first %> - <%= last %> of <%= total %> records. 

      </pg:page>

      <pg:first export="firstPageUrl=pageUrl" unless="current">

        <a href="<%= firstPageUrl %>">第一頁(yè)</a>

      </pg:first>

      <pg:prev export="prevPageUrl=pageUrl">

        <a href="<%= prevPageUrl %>">前一頁(yè)</a>

      </pg:prev>

      <pg:pages><%

        if (pageNumber == currentPageNumber) {

          %> <b><%= pageNumber %></b> <%

        } else {

          %> <a href="<%= pageUrl %>"><%= pageNumber %></a> <%

        }

      %></pg:pages>

      <pg:next export="nextPageUrl=pageUrl">

        <a href="<%= nextPageUrl %>">后一頁(yè)</a>

      </pg:next>

      <pg:last export="lastPageUrl=pageUrl" unless="current">

        <a href="<%= lastPageUrl %>">末頁(yè)</a>

      </pg:last>

      </pg:index>

      </span>

      <br>

      7,小結(jié)

      這是一個(gè)簡(jiǎn)單卻經(jīng)典的內(nèi)容管理系統(tǒng),在后臺(tái)管理數(shù)據(jù),對(duì)數(shù)據(jù)進(jìn)行增刪改查,數(shù)據(jù)管理好之后,使用freemarker生成靜態(tài)的html頁(yè)面,同時(shí)靜態(tài)資源分域,加快了站點(diǎn)的顯示速度;

      后臺(tái)使用泛型和抽象類,大大的減少了重復(fù)代碼的數(shù)量,引入Guice容器,減少了對(duì)象的實(shí)例的互相依賴,同時(shí)使得程序的結(jié)構(gòu)更加的清晰,hibernate簡(jiǎn)化了持久層代碼的編寫,tiles和數(shù)據(jù)展示控件的使用使得后端的數(shù)據(jù)展示比較美觀,簡(jiǎn)單卻使用的站點(diǎn)發(fā)布系統(tǒng),通過這個(gè)項(xiàng)目,我熟悉了struts2,guice,hibernate,tiles技術(shù),唯一一個(gè)覺得比較不妥的地方就是雖然大大的減少了重復(fù)代碼,但是新增模塊的話需要增加很多的類,如果可以定義一個(gè)公共的動(dòng)態(tài)定位的類來頂替這些大量的只是簡(jiǎn)單繼承的類我覺得后端的代碼會(huì)更加整潔。

      posted @ 2014-03-13 17:02  李福春  閱讀(1048)  評(píng)論(1)    收藏  舉報(bào)
      主站蜘蛛池模板: 欧美人与zoxxxx另类| 男人猛躁进女人免费播放| 国产精品视频全国免费观看| 亚洲an日韩专区在线| 亚洲 日韩 国产 制服 在线| 亚洲中文字幕精品一区二区三区| 色综合一本到久久亚洲91| 国产精品多p对白交换绿帽| 日韩精品 在线 国产 丝袜| 国产网曝门亚洲综合在线| 国产福利在线观看免费第一福利| 国产99久久精品一区二区| 天天躁日日躁狠狠躁中文字幕| 中文字幕乱码中文乱码毛片| 成年女人免费v片| 国产欧美精品一区二区三区-老狼| 九九热视频在线观看精品| 国产绿帽在线视频看| 国产福利永久在线视频无毒不卡| 色综合一本到久久亚洲91| 潮喷失禁大喷水无码| 久久精品夜色噜噜亚洲aa| 久久日韩在线观看视频| 色欲综合久久中文字幕网| 国产日产欧产系列| 九九热久久只有精品2| 亚洲精品动漫免费二区| 天全县| 亚洲中文字幕综合小综合| 亚洲另类无码一区二区三区| 91久久偷偷做嫩草影院免费看| 亚洲一区二区日韩综合久久| 中文无码av一区二区三区| 亚洲五月丁香综合视频| 亚洲一区中文字幕人妻| 91精品国产91热久久久久福利| 最新的国产成人精品2020| 任我爽精品视频在线播放| 少妇高潮激情一区二区三| 亚洲 a v无 码免 费 成 人 a v| 欧洲精品色在线观看|