兩畝三分地

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            17 隨筆 :: 20 文章 :: 2 評論 :: 0 Trackbacks
          正如之前所說的,開發一個struts應用和一般的web應用并沒有什么兩樣。

          1. 創建數據庫
          create database guestbook;

          a. guestbook表:用于記錄留言的所有信息
          CREATE TABLE `guestbook` (
          `id`  
          int(11NOT NULL AUTO_INCREMENT ,
          `name`  
          varchar(40) ,
          `email`  
          varchar(60),
          `url`  
          varchar(60),
          `subject`  
          varchar(200),
          `content`  
          varchar(1024),
          `font`  
          varchar(100),
          `date`  
          datetime ,
          `replyId`  
          int(11)DEFAULT '-1' ,
          `iconId`  
          int(3),
          `lastReplyTime`  
          datetime ,
          `password`  
          varchar(16),
          PRIMARY KEY (`id`)
          );

           字段 說明
           id  留言編號
           name  留言人姓名
           email  email地址
           url  url地址
           subject  留言標題
           content  留言內容
           iconId  留言使用的表情圖標編號
           font  內容字體顏色
           date  留言時間
           replyId  回復留言ID,默認為-1表示不是回復
           lastReplyTime  最近回復時間
           password  留言所用的密碼(用于編輯)

          b. ICON表:用于記錄所有的圖標記錄
          CREATE TABLE `icon` (
          `id`  
          int(11NOT NULL AUTO_INCREMENT ,
          `name`  
          varchar(20),
          `src`  
          varchar(200),
          `alt`  
          varchar(100),
          PRIMARY KEY (`id`)
          );

           字段 說明
           id  圖標編號
           name  圖標名稱
           src  圖標的位置
           alt  圖標的說明

          2. JDBC Resource與鏈接池
          • 給剛剛建的database建立一個連接,Services標簽,點擊Databases的MySql Server at localhost:3306;
          • 選擇剛剛建的guestbook,按右鍵點擊connect;我們可以看到在databases的列表里多了jdbc:mysql://localhost:3306/guestbook的鏈接;
          • 回到projects標簽,點擊項目名稱BBS,按右鍵選擇New > Other... 在Categories里面選擇GlassFish;File types項目下面,選擇JDBC Connection Pool,按Next;
          • 在New JDBC Connection Pool面板里,JDBC Connection Pool Name里輸入GuestBookPool(隨意),Extract from Existiong Connection的下拉菜單里選擇剛剛建立的database連接jdbc:mysql://localhost:3306/guestbook,
            其他設置使用默認值即可,按finish結束連接池的創建。
          • 同樣在Categories里面選擇GlassFish;File types項目下面,選擇JDBC Resource,按Next;
          • 在New JDBC Resource面板里,Using Existing JDBC Connection Pool里選擇GuestBookPool(與之前創建的連接池對應);
            JNDI Name輸入jdbc/bbs(隨意),按finish,完成JDBC Resource配置。
          3.中文亂碼處理 
            記得在做上一個Servlet的項目的時候,在每個servlet處理request的時候(processRequest()方法),都做過一個request.setCharacterEncoding("UTF-8")的操作;將request的內容轉成UTF-8的內碼,以解決中文亂碼問題。
            在Struts的項目里面,我們仍然會遇到中文亂碼問題。而我們通過一個創建的CharacterEncodingFilter的輔助類來解決問題。
          •   CharacterEncodingFilter.java
            package com.bbs.struts.util;

            import java.io.IOException;
            import javax.servlet.Filter;
            import javax.servlet.FilterChain;
            import javax.servlet.FilterConfig;
            import javax.servlet.ServletException;
            import javax.servlet.ServletRequest;
            import javax.servlet.ServletResponse;

            /**
             *
             * 
            @author Chucky
             
            */
            public class CharacterEncodingFilter implements Filter {

                
            public void init(FilterConfig filterConfig) throws ServletException {
                }

                
            public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
                    request.setCharacterEncoding(
            "UTF-8");
                    chain.doFilter(request, response);
                }

                
            public void destroy() {

                }

            }
             
          • 打開web.xml,在Filters的面板中添加以下內容
          中文亂碼的問題解決了!

          4. DbUtils
          在處理數據連接的問題上,還是使用DbUtils這個類,詳細請看Blog系統開發 5. JDBC的基本操作與DbUtils的使用 內容
          這里還是寫一個DbHelper的輔助類,來簡化連接的操作。
          DbHelper.java
          package com.bbs.struts.util;

          import java.util.logging.Level;
          import java.util.logging.Logger;
          import javax.naming.Context;
          import javax.naming.InitialContext;
          import javax.naming.NamingException;
          import javax.sql.DataSource;
          import org.apache.commons.dbutils.QueryRunner;

          /**
           *
           * 
          @author Chucky
           
          */
          public class DbHelper {

              
          public static QueryRunner getQueryRunner() {
                  Context context 
          = null;
                  DataSource ds 
          = null;
                  
          try {
                      context 
          = new InitialContext();
                      ds 
          = (DataSource) context.lookup("jdbc/bbs");
                  } 
          catch (NamingException ex) {
                      Logger.getLogger(DbHelper.
          class.getName()).log(Level.SEVERE, null, ex);
                  }

                  QueryRunner qr 
          = new QueryRunner(ds);
                  
          return qr;
              }
          }
          注意context.lookup()中的數據源,要與之前的數據源匹配。

          因為這個bbs的網頁設計是按照日月星辰的留言板的頁面制作的,所以類似icon之類的數據,直接添加到數據庫(假設所有的icon都在
          img 目錄下,icon素材可以直接到星辰去抓的,sql的腳本)


          posted on 2009-10-21 17:31 Chucky 閱讀(441) 評論(0)  編輯  收藏 所屬分類: BBS Struts項目
          主站蜘蛛池模板: 兴仁县| 诏安县| 美姑县| 上饶市| 滁州市| 额尔古纳市| 新昌县| 岢岚县| 宝丰县| 周口市| 宁武县| 福鼎市| 江华| 太康县| 开鲁县| 南康市| 平远县| 宝鸡市| 柳江县| 涟源市| 九台市| 屏南县| 峨边| 昭通市| 光泽县| 治多县| 博兴县| 临泽县| 开封县| 旅游| 沂源县| 清水县| 五河县| 遵义县| 乳源| 辽阳市| 贵溪市| 章丘市| 礼泉县| 裕民县| 乌苏市|