目 录
一 项目简介..............................................................................3 1.1项目的意义........................................................................3 1.2 项目说明...........................................................................3 1.3 关键技术...........................................................................3 二 总体设计...............................................................................3 2.1 布局设计......................................................................................3
2.2 具体设计....................................................................................4
三 详细设计与实现...................................................................6 3.1注册界面......................................................................................6
3.2 登录主界面.................................................................................7 3.3 系统主页界面............................................................................7
3.4 发表界面.....................................................................................8 3.5帖子内容及其回复....................................................................8 3.6 个人信息管理...........................................................................9 3.7 他人帖子页面...........................................................................10 3.8 管理员管理页面.......................................................................10
四 代码设计(主要)........................................................................11
4.1 登陆代码...................................................................................11 4.2 注册代码...................................................................................12 4.3首页代码.....................................................................................12 4.4 回复代码...................................................................................13
4.5 分页代码.................................................................................14 4.6 更新的Serlet代码...................................................................15 4.7 乱码处理..................................................................................15
五 总结........................................................................................16
BBS系统
一、 项目简介
1.1项目的意义
论坛系统BBS(Bulletin Board System电子公告牌系统)是互联网上一种人与
人之间交流的必备工具。论坛系统是互联网上的一种应用服务模式,通过这种服务,互联网用户可以在上面浏览到其他用户发表的各种主题、文章、问题等内容,并且用户可以在上面针对某个具体的内容即时地发表自己的观点、看法、议论等,或者直接发表自己的文章、问题或其它内容。
1.2项目的说明
一个简单的BBS论坛,大致分为以下流程:
(1)用户登陆进入论坛(游客只能查看论坛首页的少许信息,查看帖子或其它的功能需注册、登录,会跳转到登录页面。
(2)就某个话题(贴子的主题)展开讨论。 (3)通过发帖功能发布新的话题。 (4)通过回帖功能恢复已有的话题。 (5)通过搜索功能查找已有的话题。
(6)在个人信息页面可以查看个人信息、自己所有的帖子以及对自己信息的修改,和对个人帖子的修改和删除。
(7)管理员对所有信息的管理。
1.3 关键技术
Jsp、html、javaScript、css叠层样式、数据库MySQL
二 、总体设计 2.1布局设计
系统总体功能需求框架图如下:
1
BBS论坛系统 前台基本业务模块 后台管理模块
前台基本业务模块 游客注册 会员登录 会员浏览帖子 会员发表帖子 个人信息管理 个人帖子管理 退出
后台管理摸快 管理员登录 分类信息查询 对应信息的修改 信息 的删除 退出
2
2.2具体设计
(1)数据库
Posts表
Reply表
User表
(2) 相关类的编写
connDb.java 数据库连接
获取相关数据:
3
Filter.Java 乱码处理
user的相关操作实现:
帖子的操作类和相关Servlet:
回复的相关类:
(3)前台的布局和相关参数的传递
三、详细设计与实现
3.1 用户注册界面
Registered.jsp注册用户名和密码有相关的校验,错误会跳出警告
4
3.2 用户登陆界面
Login.jsp已注册人员登录
3.3系统主界面
…BBS/hone登入系统首页后,可以选择操作项:查看帖子,热点帖子,点
击发帖人查看别人所发帖子(自己的就进入个人页面),发帖,刷新,返回顶部,退出
5
3.4 发表界面
点击发帖按钮或者右下角的发帖图标由home#fabiao(div的id)跳转到发帖框,如果未登录会有无法发表,有相关的登录链接,当前为已登录。
3.5 帖子查看及其回复页面
Reply.jsp帖子内容及其回复
6
3.6个人信息管理界面
7
个人信息修改:
帖子内容修改:
3.7他人帖子界面
-
3.8管理员管理界面
对相关信息的修改
8
搜索结果诸如此类:然后可以进行相关操作。
四、代码设计 4.1 登陆代码
//登录 public userGetSet login(String userName, String userPassword){
PreparedStatement ps=null; Connection conn=null;
conn = connDb.getDBconnection(); ResultSet rs=null;
String sql = \"select * from user where user_name= ? and password
userGetSet user = null;
= ?\";
9
try { ps = conn.prepareStatement(sql); ps.setString(1, userName); ps.setString(2, userPassword); rs = ps.executeQuery(); if(rs.next()){ user = new userGetSet();
user.setUser_id(rs.getInt(\"user_id\"));
user.setUser_name(rs.getString(\"user_name\")); user.setSex(rs.getString(\"sex\"));
user.setPassword(rs.getString(\"password\")); user.setEmail(rs.getString(\"email\")); user.setMobil(rs.getString(\"mobil\"));
}
rs.close(); ps.close();
} catch (Exception e) { e.printStackTrace(); }finally{
connDb.closeDB(conn, ps,rs);
}
return user;
}
4.2 注册代码
public class addUser {
//实现向数据库中添加记录的方法 public void userCreate(userGetSet users) throws Exception{
String INSERT_SQL=\"insert into user(user_name,password,sex,email,mobil) values(?,?,?,?,?)\";
Connection con=null;
PreparedStatement prepStmt=null; ResultSet rs=null; try{
con=(Connection) connDb.getDBconnection(); prepStmt = (PreparedStatement) con.prepareStatement(INSERT_SQL);
prepStmt.setString(1, users.getUser_name());
10
}
prepStmt.setString(2,users.getPassword()); prepStmt.setString(3,users.getSex()); prepStmt.setString(4,users.getEmail()); prepStmt.setString(5,users.getMobil()); prepStmt.executeUpdate(); } catch(Exception e){ } finally{
connDb.closeDB(con, prepStmt, rs); } }
4.3首页代码
public List } return list; conn.close(); e.printStackTrace(); } catch (SQLException e) { while(rs.next()){ postsMethod posts = new postsMethod(); List String sql = \"select * from r_posts order by topic_id desc try { PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, (page - 1) * postsMethod.PAGE_SIZE); ps.setInt(2, postsMethod.PAGE_SIZE); ResultSet rs = ps.executeQuery(); limit ?,?\"; posts.setCount_reply(rs.getInt(\"count_reply\")); posts.setTopic_id(rs.getInt(\"topic_id\")); posts.setTopic_name(rs.getString(\"topic_name\")); posts.setAuthor(rs.getString(\"author\")); posts.setTopic_content(rs.getString(\"topic_content\")); posts.setAuthor_id(rs.getInt(\"author_id\")); posts.setPosts_time(rs.getTimestamp(\"posts_time\")); } rs.close(); ps.close(); list.add(posts); 11 } 4.4 回复代码 public void saveReply(replyGetSet reply){ Connection conn = connDb .getDBconnection(); PreparedStatement ps=null; String sql = \"insert into reply (topic_id,reply_content,reply_name) values(?,?,?)\"; try { ps = conn.prepareStatement(sql); ps.setInt(1,reply.getTopic_id()); ps.setString(2, reply.getReply_content()); ps.setString(3, reply.getReply_name()); ps.executeUpdate(); ps.close(); } catch (Exception e) { e.printStackTrace(); }finally{ connDb.closeDB(conn, ps, null); } } } 4.5 分页代码 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(\"text/html\"); PrintWriter out = response.getWriter(); int currPage = 1; if(request.getParameter(\"page\") != null){ currPage = Integer.parseInt(request.getParameter(\"page\")); } selectPosts dao = new selectPosts(); List int count = dao.findCount(); if(count % postsMethod.PAGE_SIZE == 0){ 12 } pages = count / postsMethod.PAGE_SIZE; pages = count / postsMethod.PAGE_SIZE + 1; }else{ StringBuffer sb = new StringBuffer(); for(int i=1; i <= pages; i++){ } request.setAttribute(\"bar\", sb.toString()); request.getRequestDispatcher(\"home.jsp\").forward(request, response); if(i == currPage){ sb.append(\"『\" + i + \"』\"); }else{ } sb.append(\" \"); sb.append(\"\" + i + \"\"); 4.6 更新的Servlet代码 public void doPost(HttpServletRequest request, HttpServletResponse response) response.setContentType(\"text/html\"); PrintWriter out = response.getWriter(); int topic_id= String topic_content=request.getParameter(\"topic_content\"); postsMethod posts =new postsMethod(); posts.setTopic_id(topic_id); posts.setTopic_content(topic_content); updateMyPosts update=new updateMyPosts(); throws ServletException, IOException { Integer.parseInt(request.getParameter(\"topic_id\")); try { update.upadposts(posts); } } catch (Exception e) { } request.getRequestDispatcher(\"home\").forward(request, out.flush(); out.close(); e.printStackTrace(); response); 4.7 乱码处理代码 13 public class filter implements Filter { } } public void init(FilterConfig arg0) throws ServletException { } // TODO Auto-generated method stub } public void doFilter(ServletRequest request, ServletResponse FilterChain filterchain) throws IOException, public void destroy() { // TODO Auto-generated method stub response, ServletException { request.setCharacterEncoding(\"UTF-8\"); response.setCharacterEncoding(\"UTF-8\"); filterchain.doFilter(request, response); 以上为部分相关代码,不分其他页面的类类似,页面布局和其他代码请看电子版BBS的制作文件 五、总结 本系统为简单的BBS论坛系统,系统在设计过程中不可避免地遇到了很多技术问题,有关页面设计的许多细节都要靠自己去摸索,加之本人水平有限,还未能够考虑到论坛系统的各种需求,所以在功能上仍存在着许多不足之处: (1) 浏览器地址栏会显示登录人员的信息 (2) 退出存在缺陷 (3) 操作后的跳转等等 14 受开发条件和开发时间的限制,好多在系统实现的过程中想增加的功能还未能实现。如: (1)论坛精华区这个功能还没有完成。 (2)目前论坛访问人数等数据没有实现。 (3)论坛积分制,各个用户的头衔还没有设置。 (4)如何实现一定时间内的帖子,如何过滤帖子里的不良语句。 (5)论坛版主设置还没能实现。 (6)上传和下载功能未实现。 同时界面还有待再加以美化。 这些都是需要完善的地方,该系统离实际使用也还有相当的距离,需要我进行不断地补充和完善。 15 因篇幅问题不能全部显示,请点此查看更多更全内容