1、(word完整版)JSP程序设计基于jsp新闻发布系统Web课程设计报告题目:基于JSP新闻发布系统- 1 -摘要:IAbstract:II引言- 1 1需求分析 1 1.1 安全需求 1 -1.2 性能需求- 1 -1.3 功能需求 1 -2系统开发模式及技术 2 2。1 JSP简介 2 -2。2 JSP的特点 3 2。3 JSP技术 3 -2.4 访问WEB数据库常见技术 3 2。5 本系统采用的数据库访问技术 4 2。6 B/S开发模式- 5 3总体设计 5 3.1 系统功能描述 6 3.2 ER模型 6 -3。3 系统流程图 9 -3.4 数据流图- 9 3。5 系统功能模块划分 11
2、 3。6 数据库设计- 12 -4详细设计 13 4。1 前台系统 13 4。2 后台管理系统的设计 18 总结 22 -致谢 22 基于JSP新闻发布系统曾友洪(重庆三峡学院数学与计算机科学学院软件工程专业2007级 重庆万州 404000)摘要:随着Internet的迅速发展,社会已经进入了网络时代,人们越来越倾向于从Internet获取信息.而网站则是Internet网上进行信息传播的主要载体,为了使网站的管理者方便的进行新闻的动态发布和管理,将杂乱无章的信息(包括文字、图片和影音)经过组织,合理而且有序地通过网页呈现给人们,开发了本新闻发布系统.本系统利用jsp动态网页技术和MySql
3、数据库,以B/S模式开发,实现新闻的动态发布和管理。前台为用户提供了新闻分类显示、新闻搜索、点击排行、留言评论和滚动显示等功能;管理用户可以通过Web浏览器登陆后台实现新闻的发布、管理、实时的进行行为统计和记录等操作。关键词:JSP;新闻发布;MYSQL数据库;B/S模式引言在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用.Internet上发布信息主要是通过网站来实现的,获取信息也是要在Internet“海洋”中按照一定的检索方式将所需要的信息从网站上下载下来。因此网站建设在Internet应用上的地位显而
4、易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。本网上新闻发布系统利用jsp技术开发,其目的在于使新闻的发布和管理更加方便、实时、高效,从而提高工作效率。由于时间有限,加之信息系统开发经验的缺少和编程能力的匮乏,所以本系统难免存在各种各样的缺点.敬请老师能够提出宝贵意见,进行批评指正,谢谢!1需求分析随着网络的飞速发展和普及,越来越多的 用户习惯上网浏览新闻.本系统的主要目的就是为用户提供一个方便、及时的网上新闻发布、浏览平台。利用本系统,用户可以直接在网上发布新闻信息并根据自己的需要对新闻进行浏览、检索、增加、或修改。本系统遵循软件工程标准,并按照软件工程规定的
5、流程进行项目的开发。1.1 安全需求由于使用JSP编写的程序代码隐蔽,在客户端仅可以看到由JSP输出的动态HTML文件,因此只要编写程序时注意严谨性,防止SQL注入和cookies欺骗,整个系统的安全就能得到保障,同时也能防止别人抄袭源代码.本系统的管理员可以有多名,为防止暴力猜解密码,在设计后台登陆模块时需考虑验证码的设计。使用Tomacat6。0为系统地发布平台,发布方便,安全可靠性比较高。1。2 性能需求Tomacat可以免安装,体积小,运行效率高。能很方便的在Windows和Linux系统下发布。同时使用MySql5。0数据库,安装方便,而且免费使用,MySql在Windows XP以
6、及Linux下都能被良好的支持。而JSP不但可以用Eclipse,也可以用Dreamweaver编辑,甚至记事本等文本编辑工具即可编写,因此对系统运行环境非常低,小型服务器和家用电脑均可作为本系统运行环境。1.3 功能需求本新闻发布系统将实现以下几个功能(1) 查看新闻功能:任何用户均可以使用查看新闻功能。查看新闻功能在首页显示最新新闻,用户可点击文章标题查看新闻的详细内容,可以点击新闻的类别进入分类列表。(2) 站内新闻检索功能:任何用户均可以使用新闻搜索功能。在新闻查看页面上,用户可以通过在单选按钮中选择检索方式,如新闻标题,关键字,或者正文,然后输入检索条件搜索符合新闻。这里提供的是模糊
7、搜索功能,即只要在查询字段只能感包含用户输入的关键内容就认为是符合查询条件的记录.查询结果同样以分页的方式显示。(3) 新闻点击率统计: 通过计数器对用户对新闻的点击进行统计,实时显示新闻的点击率.(4) 管理员登录功能:当用户需要使用新闻管理功能时,需要先以管理员身份登录系统。在地址栏中输入管理员登录页面的地址,进入管理员登录页面。用户在登录页面输入用户名和密码以及随机产生的验证码,若登录失败,则清空输入,并简要显示错误原因,管理员登录页面等待下一次登录。(5) 新闻类别管理:管理员登录后,可以对新闻的类别进行添加修改删除操作。(6) 新闻发布功能:获得权限的用户可以使用发布新闻功能。用户通
8、过在系统菜单栏上单击“添加新闻”项可以进入发布新闻页面。发布新闻时,需要填写新闻的标题和内容,发布时间取当前系统时间,不需要用户填写。(7) 新闻管理功能:当用户作为管理员登录系统后,可以进行新闻管理操作,包括对现有新闻的修改和删除。在管理页面上,用户可以通过单击每条记录右侧的“编辑”和“删除”超链接来进行操作。当管理员的本次维护工作结束后,可通过单击“退出”超链接来注销管理员身份。(8) 评论功能:任何用户在输入标题和个人名称后可对新闻进行评论,用户可以查看所有评论,管理员可以查看和删除评论。2系统开发模式及技术2。1 JSP简介 JSP(Java Server Pages)是一种建立在Se
9、rvlet规范提供的功能之上的动态网页技术,和ASP类似,他们都是在通常的网页中嵌入脚本代码,JSP文件中嵌入的是Java代码和JSP标记。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。2。2 JSP的特点 JSP技术在多个方面加速了动态Web页面的开发,具有以下特点。(1) 将内容的生成和显示进行分离使用JSP技术,Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的,例如请求帐户信息或者特定的一瓶酒的价格)。(2) 强调可重用的组件绝大多数JSP页面依赖于可重
10、用的,跨平台的组件(JavaBeans或者EnterpriseJavaBeansTM组件)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者或者客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。(3) 采用标识简化页面开发Web页面开发人员不会都是熟悉脚本语言的编程人员。JavaServerPage技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载A
11、pplet,以及执行用其他方法更难于编码和耗时的功能。 (4) 健壮性与安全性由于JSP页面的内置脚本语言是基于Java编程语言的,而且所有的JSP页面都被编译为JavaServlet,JSP页面就具有Java技术的所有好处,包括健壮的存储管理与安全性.(5) 良好的移植性:作为Java平台的一部分,JSP拥有Java编程语言”一次编写,隋处运行的特点。(6) 企业级的扩展性和性能:当与Java2平台、企业版(J2ee)和EnterpriseJavaBeans技术整合时,JSP页面将服务器JSP页面中的程序代码的识别就是依靠一些基本指令完成。2。3 JSP技术JSP技术使用Java编程语言编写
12、类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易.2。4 访问WEB数据库常见技术目前在WINDOWS环境下有多种访问WEB数据库的技术,主要有:(1) 公共网关接口CGI(Common Gateway Interface)CGI是较早实现的技术。适用于多种服务器平台,如UNIX、WINDOWS等,但CGI的开发成本高、维护困难、功能有限、不具备事务处理功能、占用服务器资源较多。(2) I
13、NTERNET数据库连接器IDC(Internet Database Connector)。IDC集成在ISAPI(Internet Server API)中,充分利用了DLL技术,易扩充,但编程较CGI更为复杂,只适用于小型数据库系统。(3) 先进数据库连接器ADC(Advance Database Connector)ADC提供了ActiveX Control来访问数据库,它的主要特点是数据查询由用户端浏览器执行,因而需将服务器端数据库中的部分记录下载到用户端,系统开销较大、响应慢,只适用于特别频繁的数据库查询操作.(4) JAVA/JDBC语言编程JAVA语言是一种面向对象、易移植、多线
14、程控制的语言,可通过JDBC去连接数据库。用JAVA/JDBC编写的软件可移植性强,适用于多种操作系统,但其执行效率和执行速度还不理想,目前无法建立高效、高速的应用.(5) 动态服务器页面JSP(Active Server Page)JSP是微软公司推出的WEB应用开发技术,着重于处理动态网页和WEB数据库的开发,编程灵活、简洁,具有较高的性能,是目前访问WEB数据库的非常好的选择。2。5 本系统采用的数据库访问技术 本新闻发布系统使用JDBC访问MySql数据库,JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,
15、可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC为工具/数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,使数据库开发人员能够用纯 Java API 编写数据库应用程序,同时,JDBC也是个商标名。 有了JDBC,向各种关系数据发送SQL语句就是一件很容易的事。换言之,有了JDBC API,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,或为访问Informix数据库又编写另一个程序等等,程序员只需用JDBC API写一个程序就够了,它可向相应数据库发送SQL调用。同时,将Java语言和JDBC结合
16、起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是Java语言“编写一次,处处运行的优势。 Java数据库连接体系结构是用于Java应用程序连接数据库的标准方法.JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型.作为API,JDBC为程序开发提供标准的接口,并为数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法.JDBC使用已有的SQL标准并支持与其它数据库连接标准,如ODBC之间的桥接.JDBC实现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口.访问并操纵数据库服务器中的数据。JD
17、BC由JSP技术支持,其数据库访问模型如下图所示。图21 采用JDBC技术实现数据库访问模型2。6 B/S开发模式 B/S结构,即Browser/Server-浏览器服务器结构,浏览器发送请求而服务器应答请求.其工作原理如下浏览器WEB服务器数据库服务器SQL数据请求返回结果Web请求返回HTML 图22 B/S结构的三层模型 前台通过IE、Firefox等浏览器向Web服务器发送HTTP请求,web服务器通过JSP和一些中间件访问后台数据库,并将操作的结果以HTML页面的形式返回给前端的浏览器。比与C/S模式,采用B/S模式用户的操作更加简单,不像C/S需要在客户端进行客户端程序,只需要一个
18、通用浏览器即可完成数据的请求与接收,大幅的减少了客户端的维护工作.同时,B/S模式使用的技术是Internet的Web技术,因而更适合于网上的信息发布。3总体设计因为网络中新闻发布的频率非常高,如果没有一个高效的新闻发布管理系统,则维护工作将非常繁琐,浪费很多时间和精力。通过使用新闻发布系统,管理员只需设置标题、内容和图片等新闻,系统将自动生成对应的网页,使新闻发布和管理变得很轻松。而对于前台界面,为适应多个用户的需求,必须达到友好,方便,简洁,易用的特点。本文将根据前期的需求分析,对新闻发布系统进行总体设计。3。1 系统功能描述新闻发布系统包括新闻类别管理、新闻发布管理、新闻搜索、留言评论管
19、理等模块。具体描述如下:(1)新闻类别管理:a.新闻类别的添加;b。新闻类别的修改; c.新闻类别的删除;(2)新闻发布管理:a.基本新闻信息的发布,包括新闻标题、新闻内容等;b.基本新闻信息的修改;c。基本新闻信息的删除;(3)新闻统计模块a。对点击次数的统计b.根据点击次数排除点击排行榜c。根据发布时间的先后时间排出最新文章(4)新闻搜索模块:a.按照新闻标题搜索; -b。按照新闻内容搜索。 c.搜索结果的显示(5)评论管理模块:a.网友发表评论、留言;b.对留言的过滤c。管理员对留言的管理3.2 ER模型根据分析可划分出新闻信息、新闻类别信息、评论信息和用户信息和几个实体,其具体的ER模
20、型如下(1) 新闻信息 图31 新闻信息实体的E-R模型(2) 评论信息 图3-2 评论信息实体的E-R模型(3) 用户信息 图3-3 用户信息实体的E-R模型(4)新闻类别信息图34 新闻类别信息实体的E-R模型(5)ER关系图图35 ER关系模型图3。3 系统流程图管理员登陆新闻查看新闻搜索评论新闻发布新闻管理类别管理评论管理退 出新闻系统首页开 始 图3-6 系统的基本流程 任何用户从浏览器输入地址进入本新闻发布系统后首先进入新闻主界面,即可进行新闻的查看,根据标题或内容进行新闻的搜索,以及进入评论页面进行新闻的评论。输入管理员登录页面的地址,进入登录页面,用户输入用户名和密码以及正确的
21、验证码后可进入后台管理,有新闻的发布,新闻的管理,新闻类别的管理,新闻评论的管理等。断开与服务器的连接即退出本新闻系统。3。4 数据流图(1)前台数据流图 图3-7 前台的数据流图 数据库中有两个表用于前台的数据的存放,新闻信息表newsinfo中存放新闻的内容,标题,点击量等数据,通过各种命令与前台进行数据交换。留言信息表存放用户的留言。(2)后台数据流图 图38 后台数据流图3.5 系统功能模块划分 从功能描述的内容可以看到,本系统可以实现五个完整的功能。根据这些功能,设计出系统的功能模块,如下图所示。图39 新闻发布总体系统功能模块示意图3.6 数据库设计本系统采用MySql数据库,在数
22、据库中使用数据表article来储存现有的新闻信息.表的结构如表字段名称数据类型说明newsidInt(10) unsigned新闻编号,自动增加(主键)biaotiVarchar(45)新闻的标题fabushijiandatetime发布时间pinglunInt(10) unsigned新闻评论idlaiyuanVarchar(45)新闻来源tupianVarchar(45)新闻图片路径名称ZhaiyaoText新闻摘要guanjianziVarchar(45)新闻关键字classidInt(10) unsigned 新闻类别idzhengwenText 正文fabiaozheVarchar
23、(45)发表者banquanxinxiVarchar(45) 版权信息dianjialvInt(10) unsigned 点击率,浏览一次增加1 表31 新闻信息表newsinfo 使用数据表users来储存管理员的信息,表的结构如下表字段名称数据类型说明usernameVarchar(45)管理员用户名userpasswdVarchar(128)管理员用户密码 表32 管理员信息表users使用数据表comment来储存新闻评论信息,表的结构如下表字段名称数据类型说明newsidInt(10) unsigned新闻idComTimetimestamp评论时间ComPersonVarchar(
24、45)评论者Contenttext评论内容 表33 新闻评论comment使用数据表classes来储存新闻类别信息,表的结构如下表字段名称数据类型说明classidInt(10) unsigned类别id自动增长classnameVarchar(45)类别名称 表3-4 新闻类别信息名称classes4详细设计4。1 前台系统4。1。1 新闻的查看主页面如下图图41 系统主页界面效果任何用户在浏览器输入网址后进入本站界面,即可查看新闻标题及发布时间,新闻的评论、新闻的点击率等,单击任意一条新闻标题即可查看新闻内容. 图4-2 新闻内容界面效果显示一条新闻的主要代码为: out.println
25、(n。getBiaoti(); %/td% out。println(n.getZhaiyao()); /td out。println(n.getGuanjianzi()); % out.println(n.getFabiaozhe()); % % %out.println(n.getBanquanxinxi()); % if(n。getComcount()!=0) %a href=”commentofnew.jsp?newid= 评论 条/em /a else 评论 % out.print(n.getComcount(); 条/em % /td /trp我要留言:/hrform action=
26、AddCommentOfNews method=post” enctype=”multipart/form-data” name=”form1 id=form1 input name=”newsid type=”hidden” value= out。print(n。getNewsid(); ”/ 4.1。2 评论功能的实现 评论管理的数据流图如下 图4-3 评论管理数据流图评论与浏览页面:图4-4 评论浏览添加评论页面评论实现的事务处理相关代码:protected void doGet(HttpServletRequest request, HttpServletResponse respon
27、se) throws ServletException, IOException / TODO Auto-generated method stubdoPost(request, response);/* see HttpServletdoPost(HttpServletRequest request, HttpServletResponse response) */protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExceptio
28、n / TODO Auto-generated method stubrequest。setCharacterEncoding(gbk);response.setCharacterEncoding(gbk);int newsid = Integer.parseInt(request。getParameter(newsid);String comment = request。getParameter(”commenttext);String comperson = request。getParameter(”person);String type = request。getParameter(t
29、ype”);PrintWriter pw = response。getWriter();pw。println(newsid);pw.println(comment);Comment comm = new Comment();comm。setContext(comment);comm.setNewid(newsid);comm。setComPerson(comperson);int result = ModifComment.insert(comm);if(type.equals(”new”))response.sendRedirect(”oneofnews.jsp?newid=+newsid)
30、;else if(type。equals(comment)response。sendRedirect(commentofnew.jsp?newid=”+newsid);else if(type。equals(admincomment)response。sendRedirect(”adminadmin_commentview.jsp?newid=+newsid);添加一条评论的代码为:public class InsertComment public static void insert(Comment comment) DBConnectPool dbp=DBConnectPool.getIn
31、stance(); Connection conn=dbp.getConnection(); PreparedStatement pstmt=null; try pstmt=conn.prepareStatement(inser into comment values(?,?,?,?);pstmt。setInt(1, comment。getNewid();pstmt。setDate(2, (java.sql。Date)(new Date();pstmt.setString(3,comment.getComPerson();pstmt.setString(4, comment。getContex
32、t();pstmt.executeUpdate(); catch (SQLException e1) / TODO Auto-generated catch blocke1。printStackTrace();finallytryif(pstmt!=null) pstmt。close();catch(SQLException el) el。printStackTrace(); 4。2 后台管理系统的设计4.2.1 后台登陆模块 图45 后台登陆界面当用户在对话框输入正确的用户名、密码及随机产生的验证码时,进入后台页面lf。jsp,否则回到登陆页面login.jsp并提示原因。登录事务处理相关代
33、码如下:protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException / TODO Autogenerated method stubdoPost(request, response);/ * see HttpServletdoPost(HttpServletRequest request, HttpServletResponse * response) */protected void doPost(HttpServletRe
34、quest request,HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(”gbk”);response。setCharacterEncoding(gbk”);String username = request.getParameter(”name”);String passwd = request.getParameter(pass);boolean flag = false;User user = (new SearchUsers().getUs
35、er(username);if(user!=null)if(passwd.equals(user。getPassWord()))flag = true;if(flag)response。sendRedirect(”admin/admin_index。html);elseresponse。sendRedirect(”admin/login。jsp); 4.2.2 新闻的管理 文章的管理包括文章的添加,删除和修改等操作,其数据流图如下图46文章管理的数据流图新闻的添加新闻添加页面如下:图4-7 新闻添加界面添加一条新闻的相关代码为:public static boolean insert(News
36、 news) boolean flag = false;DBConnectPool dbp = DBConnectPool。getInstance();Connection conn = dbp.getConnection();PreparedStatement pstmt = null;try pstmt = conn.prepareStatement(insert into newsinfo( +”biaoti,gabushijian,pinglun, +”laiyuan,tupian,zhaiyao,guanjiainzi, +”classid,fabiaozhe,banquanxinx
37、i,dianjilv” +) +” value(?,?,?,?,?,?,?,?,?,?,?);”);pstmt.setString(2,news。getBiaoti());pstmt.setDate(3, news。getFabushijian();pstmt.setInt(4,news.getPinglun());pstmt。setString(5, news。getLaiyuan();pstmt。setString(6,news.getTupian());pstmt.setString(7, news。getZhaiyao();pstmt.setString(8,news。getGuanj
38、ianzi());pstmt。setInt(9, news.getClassid();pstmt.setString(10,news。getFabiaozhe();pstmt。setString(11,news.getBanquanxinxi();pstmt。setInt(12, news.getDianjilv();int r = pstmt.executeUpdate();if (r = 1)flag = true; catch (SQLException e1) / TODO Autogenerated catch blocke1.printStackTrace(); finally t
39、ry if (pstmt != null)pstmt。close(); catch (SQLException el) el。printStackTrace();return flag; 总结 经过几个星期的的设计和开发,本网上新闻发布系统基本开发完成.本系统基本能够完成新闻发布、新闻修改、新闻统计等基础的功能。在使用上非常方便,实时性好,能够很好的使用与小型企业或教育机构的及时新闻发布,不仅能提高工作效率,也能减少经济投资,是一个非常实用的小型新闻发布系统。但由于时间和开发经验不足等原因,图片新闻的发布未能得以实现。同时页面内容的设计不够完善和美观,均需要进一步的学习提高。这次课程设计,不但
40、是对我这三年所学知识的一个检验,也是对我计算机应用水平与写作水平的一个考核,也让我发现了自己的不足之处,在开发过程中所获得的经验将对我今后的工作和生活产生积极深远的影响.致谢在这里我非常感谢我们的指导老师钟静,他在百忙之中抽空对本系统的开发作了悉心的指导,帮助解决了多个难点,本系统才得以及时完成。不管是钟老师深厚的理论知识或是严谨的工作态度都让我受益匪浅。同时也感谢我们的组长王利平和各位组员能共同努力,表现了很好的团队合作精神,才得以成功完成此次课程设计.在整个团队合作过程中,我们互相帮助,互相学习,使大家都得到了不少的收获,使我们全体成员都在团队开发之用获得了整体的提高。参考文献:1 孙鑫。 Java Web开发详解M.北京:电子工业出版社,20092 王俊杰。 精通JavaScript动态网页编程M.北京:人民邮电出版社,2007第- 22 -页 共22页