兩畝三分地

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

          1. 創(chuàng)建數(shù)據(jù)庫
          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  留言內(nèi)容
           iconId  留言使用的表情圖標編號
           font  內(nèi)容字體顏色
           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結束連接池的創(chuàng)建。
          • 同樣在Categories里面選擇GlassFish;File types項目下面,選擇JDBC Resource,按Next;
          • 在New JDBC Resource面板里,Using Existing JDBC Connection Pool里選擇GuestBookPool(與之前創(chuàng)建的連接池對應);
            JNDI Name輸入jdbc/bbs(隨意),按finish,完成JDBC Resource配置。
          3.中文亂碼處理 
            記得在做上一個Servlet的項目的時候,在每個servlet處理request的時候(processRequest()方法),都做過一個request.setCharacterEncoding("UTF-8")的操作;將request的內(nèi)容轉(zhuǎn)成UTF-8的內(nèi)碼,以解決中文亂碼問題。
            在Struts的項目里面,我們?nèi)匀粫龅街形膩y碼問題。而我們通過一個創(chuàng)建的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的面板中添加以下內(nèi)容
          中文亂碼的問題解決了!

          4. DbUtils
          在處理數(shù)據(jù)連接的問題上,還是使用DbUtils這個類,詳細請看Blog系統(tǒng)開發(fā) 5. JDBC的基本操作與DbUtils的使用 內(nèi)容
          這里還是寫一個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()中的數(shù)據(jù)源,要與之前的數(shù)據(jù)源匹配。

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


          posted on 2009-10-21 17:31 Chucky 閱讀(440) 評論(0)  編輯  收藏 所屬分類: BBS Struts項目
          主站蜘蛛池模板: 余江县| 克拉玛依市| 镇巴县| 南宫市| 进贤县| 杭锦旗| 林州市| 龙口市| 敦煌市| 陵川县| 海阳市| 晋江市| 新沂市| 沽源县| 四平市| 东乡| 青龙| 永济市| 鄂托克前旗| 绥中县| 新河县| 罗城| 水城县| 卢氏县| 龙井市| 乌兰浩特市| 翼城县| 驻马店市| 法库县| 宝鸡市| 广东省| 白玉县| 泌阳县| 攀枝花市| 东阳市| 三门峡市| 西和县| 怀仁县| 通辽市| 建平县| 永康市|