毕业设计(论文)开题报告
论文题目:公司人力资源管理系统的设计与实现
开题日期: 2011 年 12 月 2 日
注:各项均可加附页
塔里木大学信息工程学院课程设计
《JSP+MYSQL单用户blog》
课程设计说明书
目 录
前
言 ??????????????????????????????????1
工程概
况 ????????????????????????????????1
正
文 ??????????????????????????????????1
1.1设计的目的和意
义 ????????????????????????1
1.2目标与总体方
案 ?????????????????????????1
1.3设计方法和内
容 ?????????????????????????2
1.4设计创新和关键技
术 ???????????????????????8
1.5结
论 ??????????????????????????????9
致
谢 ????????????????????????????
塔里木大学信息工程学院课程设计 ??????9
参考文
献????????????????????????????
????10
前言
Blog是继Email、BBS、IM之后出现的第四种网络交流方式,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。Blog 就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。而JSP由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件
(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。在此用JSP+MYSQL制作的单用户blog是个人blog的体现,它完成了一般blog的所有功能。
工程概况
此次设计是一个JSP+MYSQL单用户blog,其可以完成一般blog的所有功能,blog在人们的日常生活中起着十分重要的地位,尤其是在当今网络随着科技飞速发展的时代,blog的新颖和方便大家交流的功能也越来越吸引这我们这些新的一代,blog的出现集中体现了互联网时代媒体界所体现的商业化垄断与非商业化自由。Blog 全名Web log,中文意思是“网络日志”,后来缩写为Blog。它是继Email、BBS、IM之后出现的第四种网络交流方式,是网络时代的个人“读者文摘”,是以超级链接为武器的网络日记,是代表着新的生活方式和新的工作方式,更代表着新的学习方式。简言之,Blog 就是以网络作为载体,简易迅速便捷地发布自己的心得,及时有效轻松地与他人进行交流,再集丰富多彩的个性化展示于一体的综合性平台。
第1页 共 10页
塔里木大学信息工程学院课程设计
正文
1.1设计目的和意义
1.1.1设计目的:
blog的出现集中体现了互联网时代媒体博客比传统的静态网站更加吸引人,在你每次访问的时候都会提供可读、可视、可听到新内容,也会使在线联系更加方便和快捷。给人们在浏览时提供更加的方便。
1.1.2设计意义:
许多Blogs是个人心中所想之事情的发表,个别Blogs则是一群人基于某个特定主题或共同利益领域的集体创作。而博客(Blogger)就是写Blog的人。从理解上讲,博客是“一种表达个人思想、网络链接、内容,按照时间顺序排列,并且不断更新的出版方式”。简单的说博客是一类人,这类人习惯于在网上写日记。这样可以在网上把自己的心情、所得等等与大家一起分享。在当代,所有的核心在于时间。对于性急的人来说,时间如同缓慢的河流,对于从容的人来说,时间又是急流。互联网的力量的确还没有充分施展,因为互联网的商业化起始,到今天仅仅才10年;互联网作为一种新的媒体方式,从尝试到今天,也刚刚跨过10年。现在,全世界每天传播的媒体内容,有一半是由6大媒体巨头所控制。其利益驱动、意识形态以及传统的审查制度,使得这些经过严重加工处理的内容已经越来越不适应人们的需求。媒体的工业化,内容出口的工厂化,都在严重影响其发展。
1.2目标与总体方案
1.2.1目标:
实现一般blog的进入,用户登录,分类阅读文章,评价文章,友情连接到别处等所有功能。
1.2.2总体方案:
设计一个JSP+MYSQL单用户blog,在该blog中主要有main.jsp,category.jsp,show.jsp三个页面,每一个页面实现的功能不同。还设计了几个JavaBean,CategoryBean、OneCommentBean、OnePostBean等。有效的部署web.xml并建立servlet。完成数据库的连接。
1.3设计方法和内容
1.3.1 运行开发环境:
运行环境:windows操作系统、
开发环境:Eclipse3.4+tomcat6.0+MySQL
MySQL workbench (数据库建模)
VS2010 (UML建模)
第2页 共 10页
塔里木大学信息工程学院课程设计
1.3.2 数据库设计:总共有五张表:Jsp_category文章分类表
Jsp_comment用户留言表
Jsp_link 友情链接表
Jsp_psot文章表
Jsp_user用户表
1.3.3 JSP技术实现
1、获取数据库连接
采用设计模式中的代理模式,这样做的好处是降低耦合,以后可以很方便的进行升级。
首先定义一个接口DatabaseConnection,该接口包含了两个方法,一个是getConnection,一个是closd.
然后定义一个类MysqlDatabaseConnection,这个类实现了上面描述的DatabaseConnection接口中的方法。
最后,定义了一个工厂类DatabaseConnectionFactory,这个工厂类通过静态方法生成MysqlDatabaseConnection对象.这样做的好处的降低耦合,使用静态方法的目的是不需要实例化一个对象就可以获得MysqlDatabaseConnection对象.调用的时候只需要:
Return new MysqlDatabaseConnection()即可获得一个数据库连接对象实例.
第3页 共 10页
塔里木大学信息工程学院课程设计
图1.3.3.1
代码:
public class MySQLDatabaseConnection implements DatabaseConnection
{
private static String DBDRIVER = "com.mysql.jdbc.Driver";
private static String DBURI ="jdbc:mysql://localhost/jsp_blog"; private static String DBUSERNAME = "root";
private static String DBUSERPASSWD = "123456";
private Connection conn;
/**
* 这个方法用来获得一个数据库连接句柄
* @author 会跳舞的鞋子 withfaker@gmail.com
* @param 没有传入参数
* @return Connection对象
*/
public Connection getConnection()
{
第4页 共 10页
塔里木大学信息工程学院课程设计 try
{
Class.forName(DBDRIVER);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
try
{
this.conn=DriverManager.getConnection(DBURI,DBUSERNAME,DBUSERPASSWD);
}
catch (Exception e)
{
System.out.println(e.getMessage());
}
return this.conn;
}
/**
* 这个方法用来关闭mysql数据库的连接
* @author 会跳舞的鞋子 withfaker@gmail.com
* @param 没有传入参数
* @return 没有返回值
*/
public void close()
{
}
public static DatabaseConnection getDatabaseConnectionFactory() {
return new MySQLDatabaseConnection();
}
}
第5页 共 10页
塔里木大学信息工程学院课程设计
图1.3.3.2
2、部署web.xml、servlet、JavaBean
a) 首先根据系统需求,定义相关的JavaBean,比如有CategoryBean、OneCommentBean、OnePostBean。这些JavaBean在使用的时候,根据用户的不同请求实例化不同的JavaBean,然后再调用JavaBean的getXXX方法来显示数据.
OnePostBean:
package nobody.bean;
public class OnePostBean
{
private int postId ;
private int categoryId;
private String categoryName;
private String postTitle;
private int userId;
private String nickName;
private String userMail;
private String postContent;
private String postDate;
private int commentCount;
}
调用:
Main:
第6页 共 10页
塔里木大学信息工程学院课程设计
<jsp:useBean id="category" class="nobody.db.dao.action.ActionIPostDAO"></jsp:useBean> <jsp:include page="header.jsp" />
Show:
<jsp:useBean id="blog" class="nobody.db.dao.action.ActionIPostDAO"></jsp:useBean> <%
//获取传递过来的文章ID
int pid = 1;
if(request.getParameter("pid")!=null&&request.getParameter("pid")!="")
{
pid = Integer.parseInt(request.getParameter("pid"));
}
Category:
<jsp:useBean id="category" class="nobody.db.dao.action.ActionIPostDAO"></jsp:useBean> <jsp:include page="header.jsp" />
b) 部署web.xml、建立servlet
先在web.xml里面声明一个servlet,然后新建一个对应的servlet。IndexServetController类似于网站架构MVC模式中的控制器Controller.IndexServletController用来根据用户不同的请求,调用不同的JavaBean以及将用户定向到不同的URL。由于我们做的这个blog访问量小,所以将判断用户请求的方法写在了IndexServletController中,具体实现是通过if-else来判断用户的请求, 然后用request.getRequestDispatcher(“page.jsp”). forward(request.response)来将用户重定向到不同的URL。 web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="/xml/ns/j2ee"
xmlns:xsi="/2001/XMLSchema-instance" xsi:schemaLocation="/xml/ns/j2ee
/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>nobody</servlet-name>
<servlet-class>nobody.servlet.controller.IndexControllerServlet
第7页 共 10页
塔里木大学信息工程学院课程设计
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>nobody</servlet-name>
<url-pattern>/index</url-pattern>
</servlet-mapping>
</web-app>
c) 具体实现
总共有三个主要页面:main.jsp,category.jsp,show.jsp
i.main.jsp
当用户访问首页时,将用户定向到main.jsp.这个页面用来显示所有的文章列表.以及分类信息,还有用户留言信息等等。如果文章较多,可以通过传递一个参数p来进行分页。例如
,/index?p=2.
图1.3.3.3
ArrayList<OnePostBean> postByPage
ArrayList<OnePostBean>();
int p = 1;
第8页 共 10页 = new
塔里木大学信息工程学院课程设计
p = Integer.parseInt((null==request.getParameter("p")||""==request.getParameter("p"))?"1":request.getParameter("p"));
//下面方法的第一个参数-1是为了获取所有的文章
postByPage = category.getSomePostByPage(-1,p,3);
%>
<div id="wrapper">
<div id="page">
<div id="page-bgtop">
<div id="page-bgbtm">
<div id="content">
<%
for(int i = 0; i<postByPage.size(); i++) {
%>
<div class="post">
ii.Category.jsp
这个页面用来根据传递进来的cid,也就是分类ID的不同,显示不同的分类文章.l例如,category.jsp?cid=1,则显示分类ID为1的所有文章.当这个分类的文章较多时,可以传递一个参数p来进行分页.
第9页 共 10页
塔里木大学信息工程学院课程设计
图1.3.3.4
//确定分类ID
int cid = 1;
if(request.getParameter("cid")!=null&&request.getParameter("cid")!="")
{
cid = Integer.parseInt(request.getParameter("cid"));
}
int p = 1;
p = Integer.parseInt((null==request.getParameter("p")||""==request.getParameter("p"))?"1":request.getParameter("p"));
第10页 共 10页
塔里木大学信息工程学院课程设计
ArrayList<OnePostBean> postByPage = new ArrayList<OnePostBean>();
iii.show.jsp
这个页面用来根据用户传递进来的不同的pid(post id)来显示不同的文章.这个页面还可以显示用户对这篇文章的留言。例如:show.jsp?pid=3就显示文章ID为3的这篇文章。
图1.3.3.5
int pid = 1;
if(request.getParameter("pid")!=null&&request.getParameter("pid")!="") {
pid = Integer.parseInt(request.getParameter("pid"));
}
//根据传递过来的ID实例化文章对象
OnePostBean onePost = blog.getOnePostById(pid);
%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"
"/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="/1999/xhtml">
1.4设计创新与关键技术
主要难点集中在实现IPostDao的过程中.所有的页面都是调用实现这个接口的类的一个实例,然后调用这个实例的方法来输出文章。主要的方法有:
第11页 共 10页
塔里木大学信息工程学院课程设计
(1) int getTotalNum() 统计所有文章条数
(2) int getTotalNumByCategory(String categoryName) 根据分类名
称统计该分类的文 章总数
(3) ArrayList<OnePostBean> getSomePostByCategoryName(String
categoryName, int perPageLimit) 根据分类名称以及每页显示文章的大小来获取一些文章集合
(4) ArrayList<OneCommentBean> getTheComment(OnePostBean)
获取指定文章的评论集合
(5) ArrayList<OnePostBean> getAll() 用来获取所有的文章集合
(6) getOnePostById(int postId) 获取指定ID的文章内容
(7) int getTotalNumByCategoryId(int categoryId) 根据分类ID获取
该分类的文章总数
(8) ArrayList<OnePostBean> getSomePostByPage(int categoryId, int
pageId, int pageSize) 根据分类ID、具体第几页、每页文章数目来获取特定数目的文章集合。
(9) int getCommentCountByPost(OnePostBean ) 获取指定文章的评
论总数
(10) ArrayList<CategoryBean> getAllCategory() 获取所有的分类
集合
(11) ArrayList<OneCommentBean> getAllComments() 用来获取
所有的用户评论结合
1.5结论
优点:这个博客的设计需求是JSP+MYSQL单用户blog系统。整体采用三层架构MVC来设计。Model层用JavaBean实现,Controller层用servlet实现,View层用JSP页面实现。连接数据库用工厂类+代理模式实现,好处是低耦合。将所有的方法封装的接口中,然后根据不同的需求实现他们。这样做的好处是面向接口编程(OOA),以后升级更加容易。
缺点:由于时间紧迫,一些细节实现的不够好,比如接口没有进行详细的划分,而是将所有用到的接口放在一个interface中,再通过类来实现。由于时间紧迫,用户留言没有实现。在本地测试的时候,可以通过手写SQL语句进行留言和发表文章。
改进措施:系统架构还需要再详细划分,将所有接口再做详细划分,然后分别实现。
致谢
在这里我要非常感谢我们的李旭老师.师傅领进门,修行靠个人。
第12页 共 10页
塔里木大学信息工程学院课程设计 我认为李旭老师就是这样的一位老师。他总会鼓励你去做对的事情,把握着大的方向,而细枝末节之类的就靠我们自己来完成。我们也做过很多次课设,而李旭老师是带我们课设里面最负责的一位老师之
一。从平时的上课过程中我们也可以看出,李旭老师也在不断地提高自己的技术水平。授之以鱼不如授之以渔也是他常挂在嘴边的一句话。他也做到了。他鼓励我们多利用互联网去寻找有用的知识,推荐我们去阅读好的书籍,给我们介绍好的讲师的视频教程。我认为李旭老师是一位非常负责的老师。在这里,我想表达我对李旭老师的崇高的敬意:老师,您辛苦了!
总之,在以后的学习生活中我们将以加倍的努力学习好这门专业知识和掌握好这个软件,努力学习让老师在我们身上投入的辛勤没有白费,最终成功走入社会。
第13页 共 10页
塔里木大学信息工程学院课程设计
参考文献
[1]耿祥义,张跃平.JSP实用教程清华大学出版社(第二版).2007
[2]万峰科技.JSP网站开发四“酷”全书:新闻、论坛、电子商城、博客.北京:电子工业出版社.2010
[3]李兴华,王月清.Java Web开发实战经典.北京:清华大学出版社.2010
[4]曹刘阳.编写高质量代码,Web前端开发修炼之道.北京:机械工业出版社.2010
[5]飞思科技产品研发中心.JSP应用开发详解(第二版)[M].北京:电子工业出版社,2004
[6]吴以欣,陈小宁.JavaScript 脚本程序设计[M].北京:人民邮电出版社,2005
[7]萨师煊,王珊.数据库系统概论(第三版) [M].北京:高等教育出版社, 2000
[8]孙卫琴、李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2004
[9]程凯.JSP中文问题及一套整体解决方案[J].许昌学院学报,2006,25(5):77-80.
[10]曾云飞 ,基于Struts框架的电子政务研究和实现 [M].东北大学出版社 2005
[11]刘长生,谢强,丁秋林.Java应用中的汉字乱码问题分析[J].计算机技术与发展,2006,16(1):158-161
[12]乐秀潘,沈琴.structs1.1与struct1s.2的比较[J].电力系统通信.2000,20(5):35—39
[13]孙东卫,张冀红,李声利. 数据库访问技术研究[J].现代电子技术.2002,18(5).20-34.
[14]苟凌怡,魏生民. SQL Server 中索引的有效选取[J].计算机工程与应用, 1999,35(6): 70-71
第14页 共 10页
[1]毕业论文开题报告开题报告是指开题者对科研课题的一种文字说明材料。这是一种新的应用写作文体,这种文字体裁是随着现代科学研究活动…
1开题报告方法介绍开题报告是指开题者对科研课题的一种文字说明材料这是一种新的应用写作文体这种文字体裁是随着现代科学研究活动计划性的…
华中科技大学本科生毕业论文开题报告華中科技大学本科生毕业设计论文开题报告题目AES高级数据加密标准加解密电路的设计学号姓名指导教师…
毕业设计论文开题报告题目从网络游戏产业问题看信息业的新趋势姓名学号指导教师班级系部陕西科技大学镐京学院毕业设计论文开题报告陕西科技…
届学生毕业设计论文材料二学生毕业设计论文开题报告书课题名称姓名学号院系专业指导教师基于JSP的网上书店的设计与实现刘毅080640…
山东工商学院本科生毕业论文设计开题报告20xx届学生姓名院部专业指导教师签名教研室主任签名20xx年01月第1页第2页第3页
赣南师院数学与计算机科学学院20xx级20xx届本科毕业论文设计开题报告论文设计题目基于JSP社交网站的开发与实现专业计算机科学与…
大学本科毕业设计论文开题报告书题目企业办公自动化系统设计与实现学院专业指导教师职称报告人时间1表12345大学本科毕业设计论文学生…
毕业设计论文开题报告论文题目物流企业管理系统的设计与实现姓名学院专业指导教师开题报告一选题的背景目的和意义1背景物流管理信息系统是…