基于WEB的新闻发布系统的设计与实现_第1页
基于WEB的新闻发布系统的设计与实现_第2页
基于WEB的新闻发布系统的设计与实现_第3页
基于WEB的新闻发布系统的设计与实现_第4页
基于WEB的新闻发布系统的设计与实现_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

66/66 目录 TOC\o"1-4"\h\u6760第1章前言 11411第2章系统概述 1280712.1设计模式 1116592.1.1MVC模式差不多原理 2263372.2.2MVCModel1 3271502.2.3MVCModel2 3175172.3小结 430028第3章系统设计 481113.1系统总体设计 4129813.1.1系统构架 4101183.1.2系统类设计 5210113.2视图层设计 6162173.2.1前台设计 6227713.2.2后台设计 6121163.3模型层设计 7113483.3.1前台显示和用户登录 7142973.3.2新闻治理 7176473.3.3栏目治理 8105443.4操纵层设计 8190873.4.1用户登录 8271313.4.2新闻治理 8305453.4.3栏目治理 8271243.5数据库设计 8270793.5.1数据库概念设计 8112703.5.2数据库表设计 913643.6数据库连接设计 10106853.6.1传统的数据库连接 10149023.7小结 139118第4章系统实现 1369404.1视图层实现 13196954.1.1公共页面 1351834.1.2前台实现 15304414.1.3后台实现 16307954.2模型层实现 18159934.2.1新闻显示 18311404.2.2新闻治理 1963854.2.3栏目治理 1968634.3操纵层实现 19162184.3.1用户登录 20140734.3.2新闻治理 20136414.3.3栏目治理 2130694.4小结 2120324第5章系统运行测试 21146815.1系统测试环境 21325005.1.1系统测试硬件环境 219965.1.2系统测试软件环境 2149275.2系统测试 2227735总结 2326242参考文献 2422235致谢 2523474附录 26伴随着网络的出现,网页逐渐融入人们的生活。快速及时的新闻扫瞄,五彩缤纷的网上信息,使网络与人们的生活息息相关,因此世界上出现了第三媒体——Internet。它打破了地域限制,真正使信息得以共享,改变了人们的工作和生活方式。人们对信息的需求有了更新,更高的要求,而网页由于本身所具有的信息量大,传递快速,没有时空限制等特点恰好满足这种要求。也正是由于网络实现网站的数据信息能够进行实时交互,保证网站数据的实时性。随着Internet信息技术的高速进展,越来越多的企业想将自己企业的信息通过网络与全世界分享并最终实现电子商务,因此它们差不多建立或打算建立自己的网站。然而,假如为了建立和维护自己的网站而聘请专职的网络技术人员,其成本关于一个中小型企业来讲实在是太高了。关于上面这类企业来讲,他们最需要的确实是一个现成的能够自动公布信息的新闻公布系统,如此只要会打字,会上网就能利用新闻公布系统快速简洁地公布企业信息。然而传统的信息公布方式差不多不适应那个快速变化的信息时代,需要一个更高效,更简洁的方式进行信息公布。内容治理系统正是基于如此一个目的而诞生的,它是企业信息化建设和电子政务的新宠。它的差不多思想是分离信息内容和表现形式,内容存储在数据库或独立的文件中,而表现形式存储在模版里。当用户请求页面时,各部分联合生成一个标准的HTML页面;当信息修改时,用户只需在一个可视化的界面对信息内容进行修改。大大缩短了信息的更新时刻,提高了效率,同时简化了操作。本设计便是基于内容治理思想的一个新闻公布系统,以下各章从系统概述、需求分析、系统设计、系统实现、系统运行测试和系统评价与改进依次展现系统开发过程。本章要紧介绍在系统开发过程中所采纳系统设计模式。2.1设计模式随着Web技术的进展,Web内容从一些静态页面进展到内容丰富的动态页面。目前,用于生成动态网页较为流行的技术有Microsoft的ASP、Tex的PHP和Sun的JSP。ASP只能工作在微软的IIS(InternetInformationServer)和PWS(PersonalWebServer)上及PHP模式,一些天生缺陷使得它们的使用受到了一定的制约。而JSP是一种完全与平台无关的开发新技术,它集极高的运行效率,较短的开发周期,超强的扩展能力,完全开放的技术标准,自由的开发方式等众多完美特性于一身。JSP+JavaBean+Servlet+JDBC是一套能够实现动态网站的开发和维护的技术。JDBC用于连接数据库并对数据库进行存储,Servlet用于处理过程操纵,JavaBean用于封装业务逻辑,JSP用于页面显示部分。而MVC正是这种设计模式代表。2.1.1MVC模式差不多原理MVC(Model-View-Controller),即把一个应用的输入、处理、输出流程按照Model,View,Controller的方式进行分离,如此一个应用被分成三个层——模型层、视图层、操纵层,其三层之间的关系和功能如图2-1“MVC组件类型关系和功能图”。图2-1 MVC组件类型关系和功能图MVC设计模式的典型流程[4]为:首先Controller接收用户的请求,并决定应该调用哪个Model来进行处理,然后Model用业务逻辑来处理用户的请求并返回数据,最后Controller用相应的View格式化Model返回的数据,并通过表示层呈现给用户。操纵层(Controller)能够理解为从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。划分操纵层的作用也专门明显,它清晰地告诉我们,它确实是一个分发器,选择什么样的模型,选择什么样的视图,能够完成什么样的用户请求。操纵层并不做任何的数据处理。例如,用户点击一个链接,操纵层同意请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。模型层(Model)确实是业务流程/状态的处理以及业务规则的制定。业务流程的处理过程对其它层来讲是黑箱操作,模型同意视图请求的数据,并返回最终的处理结果。业务模型的设计能够讲是MVC最要紧的核心,必须能够满足大多数客户的需求,包括保证应用程序各组件的事务整合、维护并快速猎取应用数据,支持事务工作流的协调以及在已有应用程序中集成新的应用组件等。MVC并没有提供模型的设计方法,而只告诉我们应该组织治理这些模型,以便于模型的重构和提高重用性。视图层(View)代表用户交互界面,关于Web应用来讲,能够概括为HTML界面,但有可能为XHTML,XML和Applet。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一个应用可能有专门多不同的视图,MVC设计模式关于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型(Model)处理。2.2.2MVCModel1在MVC模式的Model1体系中,JSP页面独立响应请求并将出理结果返回客户,所有的数据存取差不多上由JavaBean来完成。Model1体系十分适合简单应用需要,却不能满足复杂的大型应用程序的实现。MVCModel1的体系结构如图2-2所示。图2-2 MVCModel1体系结构图2.2.3MVCModel2MVC模式的Model2体系结构是一种把JSP与Servlet联合起来实现动态内容服务的方法。它吸取了两种技术的优点,用JSP生成表达层的内容,让Servlet完成深层次的处理任务。这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义及开发者与网页设计者的分工。本系统的设计模式选择的便是Model2。MVCModel2的体系结构如图2-3所示。图2-3 MVCModel2体系结构图2.3小结本章对MVC设计模式差不多原理进行了详细阐述,并介绍了MVC的两种不同的模式Model1和Model2,并确定本系统的设计模式便是MVCModel2。依照上一章的需求用例分析,本章从先总体构架的角度对系统进行总体设计,然后依照MVC三层模式对系统进行详细设计,最后对系统数据库和数据库连接池进行了设计。3.1系统总体设计3.1.1系统构架系统基于MVCModel2设计模式,设计出本系统自己的设计模式,在MVCModel2基础上加入数据库连接池模块层对数据库操作进行封装。具体模式图如图3-1。图3-1 系统设计模式图关于MVC设计模式,在本系统中具体实现方式是:Model由JavaBean完成,View由JSP完成,Controller由Servlet完成,再加上数据库连接池专门负责数据库连接和治理。本系统具体构架如图3-2。图3-2 系统构架图3.1.2系统类设计在本系统中,依照对系统需求的分析,能够总结出如下的需求集:(1)系统应该分为前台和后台;(2)系统前台应该能够显示新闻栏目和新闻以及用于治理员登录系统后台的登录界面;(3)一般用户应该能够在前台自由扫瞄新闻,包括选择性地扫瞄新闻即先选择新闻栏目再扫瞄新闻栏目下的新闻条目;(4)注册用户能够发表相关新闻的评论;(4)系统治理员应该能够登录到系统后台;(5)系统治理员应该能够对新闻栏目和新闻进行查看、修改、删除和添加操作,也能够对注册用户治理,同时还能够对相关新闻的评论进行治理。由以上需求集进一步分析可知:(1)“新闻栏目”和“新闻”为系统的两个要紧内容,因此应该分不作为一个类,而新闻栏目和新闻的显示需要治理类进行治理,系统治理员要对栏目和新闻进行查看、添加、修改和删除,也需要相应的治理类进行治理,因此,系统关于新闻栏目和新闻分不需要“栏目治理类”和“新闻治理类”;(2)系统中应该要有超级治理员、治理员、注册用户等角色,超级治理员是最高权限的,治理员是超级治理员发放的,注册用户是前台注册产生的。(3)系统要保存信息,必须用到数据库,因此需要一个数据库连接的类;(4)要将系统的各个功能执行成功,少不了相应的操纵类。因此,识不出系统要紧的类:新闻治理类(NewsJdbc),栏目治理类(NewclaJdbc),用户治理类(RoleJdbc),评论治理类(Pingl)数据库连接的连接对象类(JdbcConn)以及各个Servlet类。3.2视图层设计3.2.1前台设计当一个用户扫瞄新闻系统时,首先进入系统前台界面。假如把一个系统比作一个人,那么前台界面则是那个人的脸,因此系统的前台界面的设计是比较重要的,同时,前台界面应该被设计得比较简洁,方便。首先,在本系统的前台界面的顶部用户能够看到一个专为注册用户提供的登录入口,为用户提供了方便。而关于一般用户来讲,他们也可不能感受这有何不妥,因为此登录界面比较简洁,并可不能阻碍用户正常地阅读新闻。其次,在登录界面的下方是新闻栏目的显示,显示系统新闻栏目数据库中已有的新闻栏目,一目了然,用户能够方便地找到自己喜爱和关怀的新闻所在的栏目。再次,在新闻栏目的下方则是新闻条目的显示,默认的新闻条目的显示方式是以表格的形式将系统新闻数据表中的新闻按公布时刻进行列表(公布较早的新闻被放在列表的后面,而公布较迟的新闻被放在列表的前面,体现了新闻的“新”,即“时效性”)。新闻列表中仅显示新闻的标题,公布时刻和新闻作者,假如想扫瞄整篇新闻,用户能够点击新闻标题(超链接)。然后,用户能够对自己比较关怀和感兴趣的新闻进行有选择性地扫瞄,这时新闻栏目便起作用了。当用户点击新闻所在的栏目时,系统在新闻列表中只显示本栏目的新闻条目。用户能够在此扫瞄自己关怀和感兴趣的新闻。3.2.2后台设计后台主页面设计当用户登录到系统后台时,他便成为系统治理员,能够执行对新闻和栏目的查看、修改、删除和添加。此界面要紧是面向治理员的,界面要设计得简洁方便,使得系统治理员在治理系统时容易操作。当治理员用户登录到系统后台时,呈现到他眼前的是系统后台治理的主页面:首先,系统后台主页面左上角是欢迎词(欢迎+用户级不+治理员名),关于治理员,他能够感受到系统的人性化;关于系统本身,系统能够识不现在登录的是哪个治理员,能够分配治理员的权限。其次,欢迎词下方是系统治理的功能选择,一目了然,治理员能够在此选择要操作的模块进入,然后执行相应的操作。再次,再往下确实是系统新闻列表,与前台新闻显示类似,只是多了对新闻的操作(修改和删除)。治理员能够在此对系统已有的新闻进行修改和删除操作。添加新闻设计假如系统治理员在系统后台主页面中选择“添加新闻”,治理员会进入下图如此一个页面进行新闻的添加,添加完新闻标题和新闻正文内容后,还必须选择所添加新闻所属的新闻栏目。确认所有内容均已填好,点击“发表”按钮,新闻公布工作完成,假如点击“清除”按钮,则系统清除治理员刚才的所有输入,让治理员重新填写新闻的各项内容。治理员能够在系统后台主页面中看到刚刚发表的新闻,能够对其进行相关操作。栏目治理设计假如系统治理员在系统后台主页面中选择“栏目治理”,系统将链接到新闻栏目治理页面。栏目治理页面上有一些链接按钮,能够让治理员链接到其他页面。链接按钮下面是系统已有新闻栏目的列表,在此,治理员能够对新闻公布系统的栏目进行操作(编辑和删除栏目)。假如治理员想要添加新闻栏目,只需点击“添加栏目”,就能够被链接到添加新闻栏目页面,添加栏目完成后,治理员能够在栏目治理主页面的栏目列表中找到新添加的栏目,并对其进行相关操作。3.3模型层设计本系统模型层由JavaBean完成,模型层设计要紧设计出完成各个功能模块中模型层的JavaBean类。模型层的类要紧新闻治理类NewsJdbc以及栏目治理类NewclaJdbc。3.3.1前台显示和用户登录在前台显示和用户登录模块中,充当模型层的是News和Newcla依照系统分析中的系统前台需求用例分析和上述的前台界面功能描述,对系统的前台的每一个流程、每一个模块进行详细功能设计。3.3.2新闻治理治理员在系统后台主界面中能够对已有新闻进行治理(修改、删除和添加),新闻治理模块中充当模型层的仍然是News和Newcla。3.3.3栏目治理栏目治理中能够对已有栏目的编辑、删除以及添加新栏目。3.4操纵层设计3.4.1用户登录当用户通过系统前台提供的登录入口登录后台系统时,系统将用户的登录信息提交给登录操纵层处理。因此登录操纵器必须对用户登录信息进行识不,推断其是否有权限登录到后台系统。用户登录操纵器由LoginServlet完成。3.4.2新闻治理新闻治理中要紧涉及到新闻信息的添加、删除和修改,因此其操纵层由NewsServlet完成。3.4.3栏目治理栏目治理模块要紧对新闻栏目进行修改、删除和添加,此功能模块操纵层由NewclaServlet完成。3.5数据库设计3.5.1数据库概念设计依照上面的数据库需求分析,就能够构造出各种实体,以及并依照它们的关系绘制出实体间的E-R图,为以后的逻辑设计打下基础。如图3-1为本新闻公布系统实体间的E-R图。图3-3 实体之间关系的E-R图3.5.2数据库表设计数据库逻辑设计完毕后,现在能够将上面的数据库概念结构转化为某种数据库系统所支持的实际数据库模型。本系统使用Mysql数据库。新闻公布系统的数据库中各表的设计结果如下面几个表所示。图3-4 新闻栏目表图3-5 新闻表图3-6 用户表图3-7 评论表3.6数据库连接设计3.6.1传统的数据库连接传统的数据库连接模式差不多上是按以下步骤进行:①在主程序(如Servlet、Beans)中建立数据库连接;②进行SQL操作,取出数据;③断开数据库连接。本系统也是才用此链接方式,连接类JbdcConn.Java代码如下:packagecom.newsinfo.db;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;publicclassJdbcConn{ privateJdbcConn(){ } static{ try{ //1.加载数据库连接驱动 Class.forName("com.mysql.jdbc.Driver"); }catch(ClassNotFoundExceptione){ e.printStackTrace(); } } publicstaticConnectiongetConn(){ //2.创建数据库的连接 Connectionconn=null; try{ conn=DriverManager.getConnection("jdbc:mysql://:3306/data","root","123"); System.out.println("连接数据库成功!"); }catch(SQLExceptione){ e.printStackTrace(); } returnconn; } //释放资源 publicstaticvoidfree(Statementst,ResultSetrs,Connectionconn){ try{ if(rs!=null){ rs.close(); rs=null; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ if(st!=null){ st.close(); st=null; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ if(conn!=null){ conn.close(); conn=null; } }catch(SQLExceptione){ e.printStackTrace(); } } } }}3.7小结本章首先进行了系统总体设计,接着按照MVC设计模式的三层结构依照系统需求用例对新闻公布系统功能进行设计,最后设计出系统的数据库并对数据库连接进行了相应的设计。通过本章,系统设计出了用来完成系统用例的业务功能模型以及完成各个用例的类。依照上一章的设计思路设计用来完成系统用例的业务功能,整个系统按照MVC模式的三个部分以及数据库连接池进行编码实现,分为视图层、操纵层、模型层和数据库连接池。由于系统实现的代码量较大限于篇幅,文中仅显示部分代码。4.1视图层实现在系统其它视图层部分实现之前,先对那些常用的公共页面模块部分实现。4.1.1公共页面top.jsp中包含了其它页面常用到的页面头部的设计。具体代码如下:<%@pageimport="com.newsinfo.mag.NewclaJdbc"%><%@pageimport="java.util.List"%><%@pageimport="com.newsinfo.vo.Newcla"%><linkrel="stylesheet"href="css/css.css"type="text/css"></link><%@pagelanguage="java"pageEncoding="UTF-8"%><divalign="center">欢迎进入长江师范学院新闻网    <scriptlanguage="JavaScript"type="text/javascript"src="/2009/Js/today.js"></script><aonClick="this.style.behavior='url(#default#homepage)';this.setHomePage('http:///');"href="javascript:void(0);">设为主页</a>  <ahref="javascript:window.external.AddFavorite('http://','XXX')">加入收藏</a><br></div><tablewidth="850"border="0"align="center"cellpadding="0"cellspacing="0"><tr><tdwidth="850"height="141"align="center"valign="middle"background="img/top.jpg"><embedsrc="img/1.swf"quality="high"wmode="transparent"pluginspage="/go/getflashplayer"type="application/x-shockwave-flash"width="850"height="120"></embed><ahref="index.jsp">首页</a>|<%NewclaJdbcnj=newNewclaJdbc();List<Newcla>cla=nj.selcetFenlei();for(Newclaone:cla){%><ahref="news.jsp?cla=<%=one.getNewcla_id()%>"><%=one.getNewcla()%></a>|<%}%><ahref="register.jsp">会员注册</a></td></tr></table>footer.jsp中包含了其它页面常用到的页面尾部的设计。具体代码如下:<linkrel="stylesheet"href="css/css.css"type="text/css"></link><%@pagelanguage="java"pageEncoding="UTF-8"%><tablewidth="850"height="81"border="0"align="center"cellpadding="0"cellspacing="0"class="bk"><tr><tdheight="37"align="center">copyright@zkmy2010  版权所有:曾晓龙  <ahref="admin/login.jsp">治理入口</a></td></tr><tr><tdheight="40"align="center"valign="top">联系地址:长江师范学院邮编:408100QQ:359257073</td></tr></table>本系统的CSS设计了两个CSS样式表(css.css、sc.css)它要紧设置页面中显示的Body结构的样式、超链接A的样式、页面中表格Table样式等的设置。CSS样式表能够使系统整体风格一致。4.1.2前台实现系统前台视图层由index.jsp实现。index.jsp仅负责显示新闻栏目和系统已有新闻以及为治理员用户提供一个登录入口。index.jsp页面显示截图如图4-1。图4-1 index.jsp页面实现截图4.1.3后台实现系统后台视图层要紧由admin_news.jsp、admin_newsinsert.jsp、admin_newcla.jsp、admin_newclainsert.jsp、admin_role.jsp和admin_roleinsert.jsp组成。admin_news.jsp是系统后台主页面。事实上现显示截图如图4-2。图4-2 admin_news.jsp实现截图admin_newsinsert.jsp实现新闻的添加。当用户在后台主页面中选择添加新闻按钮时,治理员便进入此页面。事实上现截图如图4-3。图4-3 admin_newsinsert.jsp实现截图admin_newcla.jsp实现新闻栏目的治理,治理员能够在此对进行新闻栏目的相关操作。事实上现截图如图4-4。图4-4 admin_newcla.jsp实现截图admin_newclainsert.jsp它实现栏目的添加功能。事实上现截图如图4-5。图4-5 admin_newclainsert.jsp实现截图admin_role.jsp实现的是对本系统用户的治理,事实上现截图如图4-6。图4-6 admin_role.jsp实现截图admin_roleinsert.jsp它实现治理员的添加功能,事实上现截图如图4-7。图4-7 admin_roleinsert.jsp实现截图4.2模型层实现模型层实现中要紧给出了实现功能模块中的各类的功能函数,具体代码见附件。4.2.1新闻显示在前台页面中显示系统已有新闻,需要新闻类NewsJdbc和新闻治理类NewclaJdbc。在此模块中要紧实现将新闻数据库中的新闻显示到前台页面中。实现新闻显示的功能函数如下: publicList<Newsinfo>selectByNewcla(intnewcla)//2.依照新闻类不显示新闻信息 publicList<Newsinfo>selectone(intid)//5.依照ID查询单个新闻。 publicList<Newsinfo>selectAll()//6.查询所有新闻 publicList<Newsinfo>selectBySS(intnewcla,ints)//7.依照条件查询某一类不、查询多少条新闻 publicList<Newsinfo>selecthits(ints)//8.依照点击量查询新闻 publicList<Newsinfo>selectNew(ints)//9.查询最新公布的新闻 publicvoidaddHits(intid,inthit)//10.点击自动加一 publicList<Newsinfo>selectByLike(Strings)//11.模糊查询4.2.2新闻治理新闻治理模块是在系统后台对已有新闻进行编辑和删除以及添加新闻。在新闻治理类中如此实现新闻治理: publicbooleancreateNews(Newsinfone)//1.添加新闻publicbooleanupdateNew(Newsinfone)//3.依照给出的条件,更新新闻信息publicintdeleteNew(intid)//4.给出条件,删除新闻4.2.3栏目治理栏目治理模块中,要紧实现新闻栏目的添加、编辑和删除。栏目治理类NewclaJdbc如下实现栏目治理功能: publicList<Newcla>selcetFenlei()//查询所有新闻分类 publicintdeletecla(intid)//依照ID删除新闻分类 publicbooleaninsertcla(Newclacla)//添加新闻分类 publicList<Newcla>selcetById(intid)//依照ID查询新闻分类 publicbooleanupdateUserById(Newclacla)//更新新闻分类4.3操纵层实现本系统的操纵层由Servlet实现。这些作为操纵层的Servlet接收用户的请求,并调用作为Model的JavaBean来进行处理,然后Model用业务逻辑来处理用户请求并返回数据,最后Servlet用相应的View来格式化Model返回的数据,通过表示层呈现给用户。在实现Servlet之前,首先要在Tomcat中配置好Servlet运行的环境,并配置本应用程序的web.xml配置文件,其Servlet在web.xml配置的差不多格式如下:<!--Defineservlets--><servlet><servlet-name>XXServlet</servlet-name><servlet-class>ClassPath.XXServlet</servlet-class></servlet><!--Defineservletsmapping--><servlet-mapping><servlet-name>XXServlet</servlet-name><url-pattern>/XXServlet</url-pattern></servlet-mapping>在使用Servlet之前都必须在web.xml中定义好Servlet才能够正常使用。下面具体实现每个Servlet。4.3.1用户登录在此用户登录功能中,最重要的确实是LoginServlet的实现。它不仅调用数据库数据,还操纵页面流向。当用户在前台中提供的登录入口输入用户名和密码时,index.jsp通过Form将信息提交给LoginServlet,LoginServlet获得此信息,调用数据库连接池组件查找数据库对比看是否有与LoginServlet收集到的信息匹配记录,假如有则成功登录到系统后台(admin_index.jsp),假如没有与之匹配的记录则将页面定位到登录错误页面(error.jsp)重新登录。同样也会用到LoginServlet对登录信息进行推断。(LoginServlet代码见附件)4.3.2新闻治理新闻治理功能模块中要紧实现新闻的添加、修改和删除,在操纵层中是由NewsSevlet实现。添加新闻、删除新闻和修改新闻操纵层是由NewsServlet中的insertservlet、delservlet和upservlet方法实现。治理员在处理新闻页面需要填写的内容点击“确定”按钮时,将内容通过Post方法提交给NewsServlet,NewsServlet调用对应的方法,方法调用JavaBean——NewsJdbc对新闻信息进行处理,然后将新闻信息保存到新闻数据表。4.3.3栏目治理新闻栏目治理和新闻治理大同小异,只是页面和调用的方法不同,整个处理的流程和新闻治理是一样的,那个地点不做详细讲明。4.4小结本章从MVC三层模式入手,通过代码的编写,差不多实现了系统设计中所设计的业务功能,从而完成了系统用例所要求的功能。5.1系统测试环境系统测试需要相应的环境,因此在系统测试之前,进行系统硬件和软件环境的配置。5.1.1系统测试硬件环境因为本系统仅在本机上运行,因此需要一台PC机即可。为了系统能够正常运行,PC机配置最低配置:CPU1.5GHz,内存256M,硬盘40G。5.1.2系统测试软件环境PC机操作系统为WindowsXP或WindowsServer2003均可。PC机上必须安装并配置java运行环境——JDK,本人用的JDK是jdk1.6.0_07。PC机上必须安装并能够运行JSP应用程序web服务器。本人用的web服务器是apache-tomcat-6.0.18。5.2系统测试因为系统比较简单,因此本人采纳黑盒测试法对系统各个功能模块需求进行测试。在IE扫瞄器中输入:8080/zxlinfo。具体测试见表5.1。测试用例ID输入预期结果实际结果测试结论OA-1进入系统前台主页扫瞄新闻若成功,则显示新闻列表显示新闻列表,并能够阅读新闻成功OA-2选择新闻栏目应该列出该新闻栏目的所有新闻,若没有则提示选择有新闻的栏目,能够看到新闻列表,没有新闻的栏目,显示“该栏目没有任何新闻”成功OA-3在注册用户登录入口输入用户名和密码若输入正确的用户名和密码,则登录成功,否则进入登录错误页面输入“000,000”进入系统,输入其它,进入登录错误页面,提示重新登录成功OA-4点击“个人信息查看”能够进入个人信息面板实现预期结果成功OA-5点击个人信息面板中的“修改”能够对个人信息进行修改实现预期结果成功OA-6进入某个新闻页面,在发表评论的文本框中输入任意字符并提交能够发表评论实现预期结果成功OA-7在后台登录入口输入用户名和密码若输入正确的用户名和密码,则进入后台系统,否则进入登录错误页面输入“admin,admin”进入后台系统,输入其它,进入登录错误页面,提示重新登录成功OA-8进入后台扫瞄新闻若成功,在扫瞄期间能够修改和删除新闻,返回更新后的新闻信息实现预期结果成功OA-9点击“添加新闻”能够进行新闻信息的录入,完成后在新闻列表能够看到新添加的新闻实现预期结果成功OA-10点击“栏目治理”能够添加、修改和删除栏目实现预期结果成功OA-11点击“用户治理”能够修改和删除用户实现预期结果成功OA-12点击“添加治理员”能够添加治理员实现预期结果成功表5-1 测试用例表本文通过采纳MVC三层设计模式,设计并实现了一个新闻公布系统。本新闻公布系统要紧实现了新闻的后台治理,例如新闻的添加、修改和删除等功能;同时也实现了新闻栏目的治理,例如栏目的添加、修改和删除等功能。通过系统测试用例分析,达到了既定的系统设计目标。但由于时刻关系和个人各方面因素,系统仍存在一定缺陷,同时有一些Java开发的新技术和思想没有加入到本系统开发中,希望在今后的学习和工作中,提高系统开发能力,做出更好的系统。[1]孙卫琴,李洪成.《Tomcat与JSPWeb开发技术详解》[M].电子工业出版社,2003.[2]计磊,李里,周伟.J2EE整合应用案例[M].北京:人民邮电出版社,2007.[3]耿祥义,张跃平.JAVA2有用教程(第二版)[M].北京:清华大学出版社,2004.[4]王夕宁,王晓平.JSP通用模块及典型系统开发实例导航[M].北京:人民邮电出版社,2006.[5]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发[M].北京:电子工业出版社,2004.[6]毕建信.基于MVC设计模式的Web应用研究与实现[M].武汉:武汉理工大学,2006.[7]耿祥义,张跃平.Java2有用教程(3版)[M].北京:清华大学出版社,2006.

[8]郑人杰,殷人昆,陶永雷.有用软件工程[M].清华大学出版社,2005.[9]王珊,萨师煊.数据库系统概论(4版)[M].北京.高等教育出版社,2006.[10]宣小平.JSP数据库系统开发导航[M].人民邮电出版社,2003.

[11]张海藩.软件工程导论(第5版)[M].北京.清华大学出版社,2008.2[12](美)格罗夫著,章小莉等译.SQL完全手册(第二版)[M].北京:电子工业出版社,2006.本文是我在洪刚老师的悉心指导下完成的,从论文的选题、系统的开发到论文的撰写都得到了洪老师极大的关心。他所具有的精湛的学术造诣、勤恳的工作作风和对学生认真负责的态度使我深受感动,终生难忘。在此向洪老师表示深深的敬意和衷心的感谢。同时,特不感谢学校、学院各位老师和领导对我各方面的关怀与支持。感谢我的室友们对我的关心和指点,感谢他们与我交流经验,解决一道道心理上和技术上的难关。感谢我亲人和朋友对我的理解、支持和关心。尽管与他们为我付出的一切相比,所有的语言都显得苍白无力,我仍要真诚地讲一声:感谢!

NewsinfoJdbc.java:packagecom.newsinfo.mag;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importcom.newsinfo.db.JdbcConn;importcom.newsinfo.vo.Newsinfo;publicclassNewsJdbc{ ResultSetrs=null; //1.添加新闻 publicbooleancreateNews(Newsinfone){ Connectionconn=JdbcConn.getConn(); booleanflag=false; Stringsql="insertintonewsinfo(newcla,title,author,content,intime)values('"+ne.getNewcla()+"','"+ne.getTitle()+"','"+ne.getAuthor()+"','"+ne.getContent()+"','"+ne.getIntime()+"')"; System.out.println(sql); try{ Statementst=conn.createStatement(); inti=st.executeUpdate(sql); JdbcConn.free(st,rs,conn); if(i>0) flag=true; }catch(SQLExceptione){ e.printStackTrace(); } returnflag; } //2.依照新闻类不显示新闻信息 publicList<Newsinfo>selectByNewcla(intnewcla){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfowherenewcla="+newcla+"orderbyiddesc"; System.out.println(sql); Connectionconn=JdbcConn.getConn(); try{ Statementst=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //3.依照给出的条件,更新新闻信息 publicbooleanupdateNew(Newsinfone){ booleanflag=false; Stringsql="updatenewsinfosetnewcla=?,title=?,author=?,content=?,intime=?whereid=?"; Connectionconn=JdbcConn.getConn(); try{ PreparedStatementpst=conn.prepareStatement(sql); pst.setInt(1,ne.getNewcla()); pst.setString(2,ne.getTitle()); pst.setString(3,ne.getAuthor()); pst.setString(4,ne.getContent()); pst.setTimestamp(5,ne.getIntime()); pst.setInt(6,ne.getId()); intid=pst.executeUpdate(); JdbcConn.free(pst,rs,conn); if(id>0){ flag=true; } }catch(SQLExceptione){ e.printStackTrace(); } returnflag; } //4.给出条件,删除新闻 publicintdeleteNew(intid){ inti=0; Stringsql="deletefromnewsinfowhereid=?"; Connectionconn=JdbcConn.getConn(); try{ PreparedStatementst=conn.prepareStatement(sql); st.setInt(1,id); i=st.executeUpdate(); JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } returni; } //5.依照ID查询单个新闻。 publicList<Newsinfo>selectone(intid){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfowhereid="+id; Connectionconn=JdbcConn.getConn(); try{ Statementst=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //6.查询所有新闻 publicList<Newsinfo>selectAll(){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfoorderbyintimedesc"; Connectionconn=JdbcConn.getConn(); Statementst; try{ st=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //7.依照条件查询某一类不、查询多少条新闻 publicList<Newsinfo>selectBySS(intnewcla,ints){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfowherenewcla="+newcla+"orderbyintimeasclimit0,"+s; System.out.println(sql); Connectionconn=JdbcConn.getConn(); try{ Statementst=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //8.依照点击量查询新闻 publicList<Newsinfo>selecthits(ints){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfoorderbyhitsdesclimit0,"+s; System.out.println(sql); Connectionconn=JdbcConn.getConn(); try{ Statementst=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //9.查询最新公布的新闻 publicList<Newsinfo>selectNew(ints){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfoorderbyintimedesclimit0,"+s; Connectionconn=JdbcConn.getConn(); Statementst; try{ st=conn.createStatement(); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } //10.点击自动加一 publicvoidaddHits(intid,inthit){ Stringsql="updatenewsinfosethits="+hit+"whereid="+id; Connectionconn=JdbcConn.getConn(); try{ Statementst=conn.createStatement(); st.executeUpdate(sql); JdbcConn.free(st,rs,conn); }catch(SQLExceptione){ e.printStackTrace(); } } //11.模糊查询 publicList<Newsinfo>selectByLike(Strings){ Newsinfone=null; List<Newsinfo>list=newArrayList<Newsinfo>(); Stringsql="select*fromnewsinfowheretitlelike'%"+s+"%'"; Connectionconn=JdbcConn.getConn(); Statementst; try{ st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSetrs=st.executeQuery(sql); while(rs.next()){ ne=newNewsinfo(); ne.setId(rs.getInt("id")); ne.setNewcla(rs.getInt("newcla")); ne.setTitle(rs.getString("title")); ne.setAuthor(rs.getString("author")); ne.setContent(rs.getString("content")); ne.setHits(rs.getInt("hits")); ne.setIntime(rs.getTimestamp("intime")); list.add(ne); } }catch(SQLExceptione){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论