东北石油大学本科生课程设计(论文)
目 录
第 1 章 概 述.................................................................................................................. 1
1.1 系统目的和意义.................................................................................................. 1
1.2 系统开发环境...................................................................................................... 1
1.3 系统基本功能...................................................................................................... 1
第 2 章 系统总体设计.................................................................................................... 2
2.1 系统的功能模块设计........................................................................................... 2
2.2 数据库设计........................................................................................................... 3
第 3 章 系统的详细设计及编码.................................................................................... 5
3.1 数据库底层访问类............................................................................................... 5
3.2 登录模块.............................................................................................................. 6
3.3 管理系统首页面导航.......................................................................................... 8
3.4 文章类别管理...................................................................................................... 9
3.5 文章管理............................................................................................................ 14
3.6 好友链接管理.................................................................................................... 18
3.7 博主信息管理模块............................................................................................ 22
3.8 前台浏览模块.................................................................... 错误!未定义书签。
结 论.............................................................................................................................. 35
参考文献.......................................................................................................................... 36
东北石油大学本科生课程设计(论文)
第 1 章 概 述
1.1 系统目的和意义
本次课程设计的题目是“基于 MVC 模式的个人博客系统”的设计与实现,该设
计是对本学期前八周所学的 JSP 程序设计课程的巩固和深入应用,同时结合 Java 语
言、JSP 技术进行 Web 程序设计,利用前面学过的知识来解决实际问题,锻炼解决
问题的能力和动手编程的能力。同时使用目前企业实际开发中比较成熟的 MVC 模式
进行系统的整体架构设计,有效分离模块、功能之间的代码耦合关系,并逐步理解
软件开发步骤和软件工程思想。
1.2 系统开发环境
1.本系统采用 Browser/Server 体系结构。
2.系统开发环境
1)开发平台:MyEclipse5.5.1 GA
2)开发语言: Java、HTML
3)数据库:Microsoft SQLServer2005
3.系统运行环境
客户端:浏览器:IE8.0
服务器端:数据库:Microsoft SQLServer2005 应用程序系统
1.3 系统基本功能
该课题设计过程中,主要实现前台和后台两部分功能设计,其中前台包括对个人
信息、文章信息、好友链接信息,类别信息,留言及留言列表,后台包括登录、文
章类别管理、文章管理和好友链接管理,留言管理,网站投票,个人信息管理,其
中每类信息管理包括基本的数据维护功能,如增删改等。
1
东北石油大学本科生课程设计(论文)
第 2 章 系统总体设计
2.1 系统的功能模块设计
博客是一种通常由个人管理、不定期发表、转载新文章的网站。博客上的文章通
常根据发表时间,以倒序方式由新到旧排列。个人博客系统包括以下几个模块:
1、博主登录模块
博主通过输入用户名和密码和验证码进入后台管理系统,管理界面有导航功能,
通过点击不同的链接,从而进入不同的管理模块。
2、文章类别管理模块
博主通过后台管理系统的导航页面进入文章类别管理模块,可以对文章类别进行
普通的数据库维护,对文章类别信息进行增删改查。
3、文章管理模块
博主通过后台管理系统的导航页面进入文章管理模块,可以对文章进行普通的数
据库维护,对文章信息进行增删改查。
4、好友链接管理模块
博主通过后台管理系统的导航页面进入好友管理模块,可以对好友进行普通的数
据库维护,对好友信息进行增删改查。
5、博主信息管理模块
博主通过后台管理系统的导航页面进入博主信息管理模块,可以对博主信息进行
普通的数据库维护,对博主信息进行修改。
6、前台浏览模块
进入前台主页可以对文章信息,文章类别信息,好友信息,和博主个人信息进行
浏览,并且能对博主投票和留言。
7、留言管理模块
进入前台主页可以对博主进行留言,博主通过后台管理系统的导航页面进入留言
管理模块,可以对留言进行普通的数据库维护,对留言进行删除。
8、网站投票模块
进入到前台页面可以对网站进行五个等级的投票,并显示投票结果。
系统功能模块图如图 2-1 所示。
2
东北石油大学本科生课程设计(论文)
个人博客系统
登
录
模
块
文
章
模
块
文
章
类
别
模
块
好
友
信
息
模
块
博
主
信
息
模
块
留
言
管
理
模
块
前
台
浏
览
模
块
网
站
投
票
模
块
图 2-1 系统功能模块图
2.2 数据库设计
根据 2.1 节中的分析,个人博客系统数据库中包括博主信息表(user_info)、文章
信息表(article)、文章类别信息表(type)、留言信息表(reply)、投票信息表(vote)、
好友信息表(Reply)……
表的结构、表字段的数据类型及相关说明如下:
列名
user_loginname
user_nickname
说明
登录名
昵称
user_password
用户密码
user_gender
user_qq
性别
QQ 号
表 2-1 博主信息表
数据类型
nvarchar(50)
nvarchar(50)
nvarchar(50)
nvarchar(50)
int
user_email
邮件地址
nvarchar(50)
约束
主键
列名
type_id
type_name
type_info
列名
article_id
article_type
说明
类别 ID
类别名称
类别描述
说明
文章 ID
文章类别
表 2-2 文章类别表
约束
主键、自增长标识
数据类型
int
nvarchar(50)
nvarchar(50)
表 2-3 文章信息表
3
数据类型
约束
int
int
主键、自增长标识
外键,引用 type_id
东北石油大学本科生课程设计(论文)
article_title
article_content
文章标题
文章内容
article_publishtime
文章发表时间
article_updatetime
文章修改时间
nvarchar(50)
text
varchar(50)
varchar(50)
列名
friend_id
friend_name
friend_href
列名
reply_id
reply_name
reply_content
reply_date
列名
vote_id
vote_type
vote_num
表 2-4 好友信息表
约束
主键、自增长标识
数据类型
int
nvarchar(50)
nvarchar(50)
约束
主键、自增长标识
表 2-5 留言信息表
数据类型
int
nvarchar(50)
text
nvarchar(50)
表 2-6 投票信息表
约束
主键、自增长标识
数据类型
int
nvarchar(50)
int
说明
好友 ID
好友姓名
好友链接
说明
留言 ID
留言者
留言内容
留言日期
说明
投票 ID
投票类别
投票数量
以上就是个人博客系统所需的数据表,按照这些表结构设计,在 Microsoft
SQLServer2005 中创建数据库 MyBlog,并创建相应的表。
4
东北石油大学本科生课程设计(论文)
第 3 章 系统的详细设计及编码
3.1 数据库底层访问类
本系统的设计使用基于 Servlet 的 MVC 架构模式,将系统的各个功能的实现过程
严格的划分为视图(View)、控制(Controller)、模型(Model),其中 View 负责界
面的显示,
Controller 负责请求的转发和响应,Model 负责逻辑业务对象实体和业务实体。
由于本系统是一种信息管理系统,在这三层之下,还要建立数据库访问层,该层完
成数据库的连接、SQL 语句的具体执行等操作。这一层由 MVC 模式中的 Model 层
里的业务实体进行调用,从而完成逻辑业务的信息维护操作。
3.1.1 添加 DBManager
首先创建包 nepu.hjc.utils,在该包下创建名为 DBManager 的类,该类得职责用于
提供访问、操作数据库的公共方法。
添加公共类的方法和步骤如下:
1、在工程中的包名上点右键,选择【New】->【Class】菜单项,将弹出【New Java
Class】对话框;
2、在【Name】填上 DBManager,然后单击【确定】即创建成功;
3.1.2 编写公共方法
3.1.1 小节为项目添加了一个 DBManager 类,该类用于存放连接、操作数据库的
公共方法,本小节介绍如何编写这些公共方法。
首先为 DBManager 类声明几个公共变量,其中 conn 为数据库连接对象,rs 为查
询数据库后得到的结果集,stmt 为 sql 语句对象,uri 为 JDBC 连接方式的数据库连
接字符串,user 和 password 分别为数据库连接时的用户名和密码。
private Connection conn = null;
private ResultSet rs = null;
private Statement stmt = null;
private PreparedStatement pstmt = null;
private String uri = "jdbc:sqlserver://localhost:1433;DatabaseName=MyBlog";
private String user = "sa";
private String password = "123456";
5
东北石油大学本科生课程设计(论文)
1、数据库连接方法 getConnection()
getConnection()方法使用 JDBC 技术连接数据库,首先要注册数据库的驱动到应
用程序中,然后使用 DriverManager 类得静态方法 getConnection()来获得数据库的连
接对象,getConnection()方法包括三个参数,第一个参数为数据库连接字符串,第二
个和第三个分别是连接时的用户名和密码,同时注意异常的处理。第一个异常就是
在注册驱动时有可能引发的异常 ClassNotFoundException,第二个异常是获取数据库
连接时引发的异常 SQLException。在相应的异常处理中,在后台分别打印不同的错
误信息。getConnection 方法的关键代码如下:
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(uri, user, password);
2、数据库查询方法 executeQuery()
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
3、数据库增删改的操作方法 executeUpdate()
stmt = conn.createStatement();
return stmt.executeUpdate(sql);
3.2 登录模块
登录是每一个成功项目中不可缺少的模块,好的登录模块可以保证系统的可靠性
和安全性。本节首先严格按照 MVC 架构模式为个人博客系统制作了一个简单的登录
模块,登录成功后,应当进入该系统的后台管理系统,因此本节还详细介绍了主窗
体的设计。
按照 MVC 模式进行构建登录功能的开发,对该模块的文件构建说明如下
1、Model 层:在 nepu.hjc.model 包中添加博主的实体 Javabean,类名为 UserBean。
在 nepu.hjc.DAO 包中添加业务 DAO,类名为 UserDAO。其中 UserBean 的代码如下:
public class UserBean {
private String name="";
private String nickname="";
private String password="";
private String gender="";
private int qq= 0;
private String email="";
…… 此处省略get/set方法
//博主登录名
//博主昵称
//博主密码
//博主性别
//博主QQ
//博主Email
}
在业务 JavaBean 类 UserDAO 中将数据库名以及数据库列名都声明为静态字段,
以方便代码的管理和维护。
2、Ctroller 层:在 nepu.hjc.servlet 中添加类 UserServlet。
在UserServlet中添加几个私有方法以简便代码管理和维护(其他Servlete添加相同
6
东北石油大学本科生课程设计(论文)
方法)。添加方法setAttributeBySession,方便在servlete中存数据到session,核心
代码如下:
HttpSession session = request.getSession();
session.setAttribute(key, object);
添加方法forward,方便在servlete中通过requestDispatcher跳转,核心代码如下:
RequestDispatcher rd = request.getRequestDispatcher(pageUrl);
rd.forward(request, response);
添加方法setAttributeBySession,方便在servlete中存数据到session,核心代码如下:
HttpSession session = request.getSession();
return session.getAttribute(key);
3、View 层:在 Webroot/admin 文件夹下添加名为 login.jsp 的 JSP 文件
3.2.1 View 层构建
首先在 MyEclipse 的项目的 WebRoot 目录中建立 admin 文件夹,在其下建立 JSP
页面,在该页面中编写表单代码,其中注意表单的 action 属性为该表单信息提交的
服务端 URL 地址,method 属性为提交方式。在这里由于是按照 MVC 模式,将信息
提交给 Servlet,因此 method 必须 post。同时为避免复杂的 URL 的路径逻辑关系,
统一使用绝对路径。图 3-1 所示为登录界面图:
图3-1 登录界面设计
3.2.2 Model 层构建
在业务 JavaBean 类 UserDAO 中建立方法 userExist(),实现过程中借助 DBManger
数据库底层操作类,实现用户登录的判断。此方法是通过用户名和密码判断某用户
是否存在的方式完成登录功能的。主要的实现过程是:首先根据传过来的登录名和
密码,将 sql 语句改为通过 WHERE 子句根据用户名和密码查询条数,如果条数不为
0 则用户名密码正确,否则用户名密码错误。
该方法的核心代码如下:
sql = "SELECT * FROM " + TABLE_NAME + " WHERE " + USER_NAME +
7