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

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

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

    lizongbo 的 編程學習

    http://618119.com

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      23 Posts :: 1 Stories :: 78 Comments :: 0 Trackbacks


    前言:discuz是一個很流行的 php論壇,一時好奇,打算學習并將其功能用java實現。
    但是個人精力有限,只試著做了很小的一點功能。
    但是在此過程中總結了一些經驗:

    需要轉換實現機制的模塊



    1.計劃任務
    由于php受語言限制,必須靠外界的訪問去觸發計劃任務,而java則可以通過qutarz來做定時任務.
    因此可以采取spring配置 qutarz的方式去設置定時任務.

    2.風格機制
    使用.jsp,使用jstl語法,允許用戶寫jstl
    依然按目錄存放到templates目錄下,每個風格為一個文件夾.

    3.緩存機制
    使用oscache 標簽 來緩存頁面的方式.

    4.特殊標簽的解析 hidden標簽,reply標簽
    采取在顯示的時候,進行 jsp:include page="/tag/hidden.jsp" 這樣的方式來實現.

    5.日歷選擇框: 使用jscalendar

    6.頁面gzip壓縮,使用專門的gzip過濾器.

    7.全文檢索,使用compass.

    8.視圖層的模板.
    discuz 已經使用了 mvc的模式,只是使用自己開發的模板技術,
     D:\xampp\htdocs\bbs\templates每個文件夾為一個主題,每個主題內對應的是各種視圖的htm.
    因此在用java實現的時候,使用spring mvc ,
    視圖層使用jsp來展示.
    其中頁面的布局分為三段
    {template header} 是最上面的導航部分
    {template footer} 是最下方的版權申明等部分.
    中間部分為各具體模塊的視圖.
    后臺則是使用的固定框架,然后來合成內容的.

    9.國際化支持
    discuz使用的是 .lang.php定義數組的方式實現的,而且一次只支持一種語言
    而java開發則使用I18N方式.多種語言均使用同一個系統.

     

     1.php的array功能非常強大,而java中只能用map和list結合起來處理.
    2.在一個http請求中php的變量幾乎都是全局生效,而jstl中,則可以放到requestScope中.

    1.discuz的有些表的主鍵不是自動增長的,因此不能夠生成@GeneratedValue(strategy = GenerationType.AUTO)的注釋.
    這些表有: new String[] {
          "validating", "trades", "relatedthreads", "pushedthreads", "polls",
          "onlinetime", "memberspaces", "memberfields", "forumfields",
          "admingroups", "adminactions", "activities"}

    2.mysql的hibernate dao單元測試中,insert是無法回滾的,而delete卻可以不操作數據庫,
    因此crud單元測試的時候,導致不停的插入數據卻沒有刪除數據.
    解決辦法,在 crud 測試方法的最后加上一行代碼:  this.setComplete();

    3.mysql的jdbc需要幾個特殊設置
    a.字符編碼集必須指定.
    b.對于"0000-00-00" 這樣的默認日期,在轉化成java.sql.Date的時候會出錯,因此需要加上個zeroDateTimeBehavior屬性.

    datasource.url=jdbc:mysql://localhost:3306/discuz?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull

    4.mysql的jdbc驅動存在bug :  http://bugs.mysql.com/bug.php?id=22215

    在usergroups 表中, readaccess字段是 tinyint(3)類型,而有值為200的,mysql的jdbc就會報錯,說數字越界了.

    java.sql.SQLException: '200' in column '1' is outside valid range for the
    datatype TINYINT.

    暫時無解決辦法,采取修改200為20回避之.
    (update:后來使用Short代替byte類型)
    discuz 已經使用了 mvc的模式,只是使用自己開發的模板技術,
     D:\xampp\htdocs\bbs\templates每個文件夾為一個主題,每個主題內對應的是各種視圖的htm.

    因此在用java實現的時候,使用spring mvc ,

    視圖層使用jspx來展示.


    其中頁面的布局分為三段

    {template header} 是最上面的導航部分

    {template footer} 是最下方的版權申明等部分.

    中間部分為各具體模塊的視圖.

     

    后臺則是使用的固定框架,然后來合成內容的.



     

    posted on 2007-08-29 09:41 lizongbo 的編程學習 閱讀(1645) 評論(5)  編輯  收藏 所屬分類: java discuz
    主站蜘蛛池模板: 青青青视频免费观看| 亚洲中文字幕无码久久2020| xxxx日本在线播放免费不卡| 免费乱码中文字幕网站| www亚洲精品久久久乳| 免费A级毛片无码久久版| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国产精品免费看久久久久| 亚洲欧美国产国产综合一区 | 精品国产污污免费网站入口| 在线精品亚洲一区二区小说| 国偷自产一区二区免费视频| 亚洲视频一区二区在线观看| 日韩免费精品视频| 日韩国产精品亚洲а∨天堂免| 免费在线黄色网址| 国产在线观看无码免费视频| 亚洲第一福利网站| 最近2019中文字幕免费看最新| 亚洲精品无码国产片| 久久精品国产精品亚洲下载| 可以免费观看的国产视频| 一级毛片免费不卡直观看| 亚洲中文字幕无码久久综合网| a在线免费观看视频| 亚洲色成人网一二三区| 性感美女视频免费网站午夜 | 免费鲁丝片一级在线观看| 深夜福利在线免费观看| 国产精品亚洲片在线观看不卡| 巨波霸乳在线永久免费视频| 亚洲欧美乱色情图片| 亚洲情综合五月天| 色se01短视频永久免费| 日韩在线视频播放免费视频完整版| 国产亚洲精品国产| 爽爽日本在线视频免费| 在线免费播放一级毛片| 亚洲高清一区二区三区| 亚洲精品无码成人AAA片| 女人18毛片水真多免费看|