两亩三分地

  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 阅读(419) 评论(0)  编辑  收藏 所属分类: BBS Struts项目

只有注册用户登录后才能发表评论。


网站导航: