新闻网页设计报告.docx
《新闻网页设计报告.docx》由会员分享,可在线阅读,更多相关《新闻网页设计报告.docx(29页珍藏版)》请在冰点文库上搜索。
新闻网页设计报告
课程设计报告
课程名称:
JSP开发应用技术
课程设计题目:
新闻发布系统
姓名:
XXXX
系:
信息技术系
专业:
计算机科学与技术
年级:
2011
学号:
XXXX
实验地点:
1教室、3教室
指导教师:
XXX
完成起止日期:
2012.12.11-2013.1.17
2013年1月17日
目录
1项目总体计划-3-
1.1项目简介-3-
1.2项目设计的基本原理和采用的主要方法与技术-3-
1.3系统开发平台与软件工具-5-
2系统需求分析和总体设计-6-
2.1系统功能需求-6-
2.2系统角色-7-
2.3流程图-7-
3数据库设计-8-
3.1E-R图-8-
3.2数据表的设计-8-
4系统详细设计-9-
4.1数据库访问模块-9-
4.3新闻查看模块-10-
4.3新闻发布模块-15-
4.4新闻管理模块-17-
5个人遇到的困难及解决方法-21-
6总结-23-
7附录-23-
新闻发布系统
1项目总体计划
1.1项目简介
现阶段,学校与社会上的各种考试大都采用传统的考试方式,在此方式下,组织一次考试至少要经过五个步骤,即人工出卷,考生考试,人工阅卷,成绩评估和试卷分析。
显然,随着考试类型的不断增加及考试要求的不断提高,教师的工作量将会越来越大,并且其工作将是一件十分烦琐和非常容易出错的事情,可以说传统的考试方式已经不能适应现代考试的需要。
随着计算机应用的迅猛发展,网络应用不断扩大,如远程教育和虚拟大学的出现等等,且这些应用正逐步深入到千家万户。
人们迫切要求利用这些技术来进行在线考试,以减轻教师的工作负担及提高工作效率,与此同时也提高了考试的质量,从而使考试更趋于公证、客观、更加激发学生的学习兴趣。
例如目前许多国际著名的计算机公司所举办的各种认证考试绝大部分采用这种方式。
为了适应新形势的发展,我们推出了这一系统,使其尽快在各类考试中发挥高效,便捷的作用,把老师从繁重的工作中解脱出来。
1.2项目设计的基本原理和采用的主要方法与技术
该系统基于B/S运行模式,采用JSP的Model1开发模型。
Model1是一种最初级的模式,它以JSP文件为中心,在这种模式中JSP页面不仅负责表现逻辑,也负责控制逻辑,而是用JavaBean处理业务逻辑。
这种模式的优点有如下:
²纯净的JSP页面,因为业务逻辑和数据库操作已经从JSP页面中剥离出来,JSP页面中只需嵌入少量的Java代码甚至不使用Java代码;
²方便进行调试;
²可重用的组件;
²易维护易扩展。
在Model1体系中,如图1所示,JSP页面独自响应请求并将处理结果返回客户。
这里仍然存在表达与内容的分离,因为所以的数据存取都是由bean来完成的。
Model1体系十分适合简单应用的需要,非常适合小型系统的开发。
图1
JSP技术
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,类似于其他技术标准,如ASP,PHP等,主要用于开发动态网页内容。
JSP是新一代的动态内容编程技术,它继承了Java技术的“一次编写,随处运行”的特性,允许Web开发人员开发和维护与平台无关,信息丰富动态的Web页面,包括HTML,DHTML,XHTML和XML,它能使Web开发人员轻易搭建网络平台,建立起功能强大的Web网站。
JSP可以把用户界面从内容层次中分离出来,使得Web开发人员不必修改在底层的动态内容,就可以修改整体的页面布局。
JavaBean
JavaBeans事实上有三层含义。
首先,JavaBeans是一种规范,一种在Java(包括JSP)中使用可重复使用的Java组件的技术规范。
其次,JavaBeans是一个Java的类,一般来说,这样的Java类将对应于一个独立的.java文件,在绝大多数情况下,这应该是一个public类型的类。
最后,当JavaBeans这样的一个Java类在我们的具体的Java程序中被示例之后,我们有时也会将这样的一个JavaBeans的实例称之为JavaBeans。
使用JSP技术,Web页面开发人员可以使用HTML和XML标识来设计和格式化最终页面。
使用JSP标识或者小脚本生成页面上的动态内容。
生成内容的逻辑被封装在JSP标识和JavaBeans组件中,并且捆绑在小脚本中,所有的脚本在服务器端运行。
核心逻辑封装在标识和Beans中,可以方便页面设计者编辑和使用JSP页面。
在服务器端,JSP引擎解释JSP标识和小脚本生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库),并且将结果以HTML(或XML)页面的形式发送回浏览器。
绝大多数JSP页面依赖于可重用的跨平台的足见(JavaBeans或者EnterpriseJavaBeans组件)来执行应用程序所要求的复杂的处理。
这样的好处是开发人员能够共享和交换执行普通操作的组件,加速了总体开发过程。
因此,基于Web的较为复杂的应用程序(如JSP开发网站或网上MIS),JSP的复杂架构必须由JavaBeans达成。
JDBC
JDBC是一种用于执行SQL语句的JavaAPI(有意思的是,JDBC本身是个商标名而不是一个缩写字;然而,JDBC常被认为是代表“Java数据库连接(JavaDatabaseConnectivity)”)。
它由一组用Java编程语言编写的类和接口组成。
JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。
有了JDBC,向各种关系数据库发送SQL语句就是一件很容易的事。
换言之,有了JDBCAPI,就不必为访问Sybase数据库专门写一个程序,为访问Oracle数据库又专门写一个程序,为访问Informix数据库又写另一个程序,等等。
您只需用JDBCAPI写一个程序就够了,它可向相应数据库发送SQL语句。
而且,使用Java编程语言编写的应用程序,就无须去忧虑要为不同的平台编写不同的应用程序。
将Java和JDBC结合起来将使程序员只须写一遍程序就可让它在任何平台上运行。
Java具有坚固、安全、易于使用、易于理解和可从网络上自动下载等特性,是编写数据库应用程序的杰出语言。
所需要的只是Java应用程序与各种不同数据库之间进行对话的方法。
而JDBC正是作为此种用途的机制。
JDBC扩展了Java的功能。
例如,用Java和JDBCAPI可以发布含有applet的网页,而该applet使用的信息可能来自远程数据库。
企业也可以用JDBC通过Intranet将所有职员连到一个或多个内部数据库中(即使这些职员所用的计算机有Windows、Macintosh和UNIX等各种不同的操作系统)。
随着越来越多的程序员开始使用Java编程语言,对从Java中便捷地访问数据库的要求也在日益增加。
1.3系统开发平台与软件工具
平台
用途
版本要求
是否具备
Dreamweaver
网页设计工具,设计web静态界面
8.0
是
MySQL5.0
关系型数据库管理系统
5.0
是
Navicat8.0
MySQL数据库客户端
8.0
是
MyEclipse6.5
项目开发工具
6.5
是
Tomcat
服务器程序
6.0
是
InternetExplorer6.0
网页浏览器
6.0
是
2系统需求分析和总体设计
2.1系统功能需求
随着网络的飞速发展和普及,越来越多的用户习惯上网浏览新闻。
本系统的主要目的就是为用户提供一个方便的,及时的网上新闻发布,浏览平台。
利用本系统,用户可以直接在网上发布新闻信息并根据自己的需要对新闻进行检索。
本系统遵循软件工程标准,并按照软件工程规定的流程进行项目的开发。
如图2所示,在本系统中主要阐述新闻访问模块、新闻查看模块、新闻发布模块以及新闻管理模块四个模块。
(1)数据访问模块:
利用JavaBean封装对数据的操作,主要包括连接数据库,添加,修改,删除,查询数据表,关闭连接等。
当JSP页面需要访问数据库时直接调用这个JavaBean即可。
(2)新闻查看模块:
提供分页显示全部新闻的列表,还可查看新闻详细内容的功能。
(3)新闻发布模块:
实现新闻发布功能。
(4)新闻管理模块:
实现修改新闻,删除新闻的功能,管理员登录进入管理模块对新闻管理。
2.2系统角色
(1)普通用户
(2)管理员
2.3流程图
3数据库设计
3.1E-R图
该系统数据库表的E-R图如图3所示:
图2
3.2数据表的设计
下面列出了设计过程中所用到的news数据库中的数据库表news和数据库表admin及其结构:
1.news表用来存储现有的新闻信息,如表3-1:
表01news表结构
字段
中文描述
类型
是否为空
备注
ID
新闻ID号
Int
是
主键、自动递增
Title
新闻标题
varchar
是
Content
新闻详细内容
Text
是
Author
新闻作者
varchar
是
Pubdate
日期/时间
Datetime
是
2.admin表用来保存管理员信息,如表3-2:
表02admin表结构
字段
中文描述
类型
是否为空
备注
ID
管理员ID
int
是
主键、自动递增
name
管理员名字
varchar
是
PWD
管理员密码
varchar
是
4系统详细设计
4.1数据库访问模块
数据库使用一个JavaBean来专门完成多个JSP页面对数据库的连接,访问等操作。
即每次访问数据库时只需实例化一个封装数据库的类,并利用类里的各种公有方法来完成对应功能。
下列是类中的几个方法:
(1)方法DBBean()
publicDBBean()
{
try{
Class.forName(driverStr);
}
catch(ClassNotFoundExceptionex){
System.out.println(ex.getMessage());
}
}
(2)执行SQL语句的方法1executeQuery(Stringsql)
publicResultSetexecuteQuery(Stringsql)
{
ResultSetrs=null;
try{
conn=DriverManager.getConnection(connStr,userName,userPassword);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
}
catch(SQLExceptionex){
System.out.println(ex.getMessage());
}
returnrs;
}
(3)执行SQL语句的方法2executeUpdate(Stringsql)
publicintexecuteUpdate(Stringsql)
{
intresult=0;
try{
conn=DriverManager.getConnection(connStr,userName,userPassword);
stmt=conn.createStatement();
result=stmt.executeUpdate(sql);
}
catch(SQLExceptionex){
System.out.println(ex.getMessage());
}
returnresult;
}
(4)关闭语句对象方法close()
publicvoidclose()
{
try{
stmt.close();
conn.close();
}
catch(SQLExceptionex){
System.out.println(ex.getMessage());
}
4.3新闻查看模块
新闻查看模块全部新闻分页显示,显示新闻内容,新闻搜索方式等功能。
完成新闻显示,搜索等操作。
1)新闻发布系统首页
其功能有:
新闻查看页面,如下图所示:
关键代码如下:
functiondatail(id)
{
window.open('detail.jsp?
id='+id,'infoWin','height=400,width=600,scrollbars=yes,resizable=yes');
}
<%
request.setCharacterEncoding("gb2312");
if(request.getParameter("stype")!
=null)
{
type=request.getParameter("stype");
session.setAttribute("stype",type);
}
if(request.getParameter("skey")!
=null)
{
key=request.getParameter("skey");
session.setAttribute("skey",key);
}
ResultSetrs=null;
ResultSettemp=null;
Stringsql1="select*fromnews";
Stringsql2="selectcount(*)fromnews";
if(session.getAttribute("stype")!
=null)
type=(String)session.getAttribute("stype");
if(session.getAttribute("skey")!
=null)
type=(String)session.getAttribute("skey");
if(type!
=null&&key!
=null&&!
type.equals("")&&key.equals(""))
{
sql1+="where"+type+"like'%"+key+"%'";
sql2+="where"+type+"like'%"+key+"%'";
}
sql1+="orderbypubdatedesc";
%>
欢迎您访问新闻发布系统!
请选择查询类别:
=null)if(type.equals("title"))
out.print("selected");%>>按标题查询
=null)if(type.equals("content"))
out.print("selected");%>>按内容查询
=null)if(type.equals("author"))
out.print("selected");%>>按作者查询
=null)if(type.equals("pubdate"))
out.print("selected");%>>按日期查询
请输入查询关键字:
标题作者日期
<%
temp=conn.executeQuery(sql2);
inttotalrecord=0;
if(temp.next())
totalrecord=temp.getInt
(1);
if(totalrecord%size==0)totalPage=totalrecord/size;
elsetotalPage=totalrecord/size+1;
if(totalPage==0)totalPage=1;
temp.close();
try
{
if(request.getParameter("p")==null||request.getParameter("p").equals(""))
p=1;
else
p=Integer.parseInt(request.getParameter("p"));
}catch(NumberFormatExceptione){p=1;}
if(p<1)p=1;
if(p>totalPage)p=totalPage;
rs=conn.executeQuery(sql1);
if(rs.next())
out.println(printPage(rs,p,size));
%>
<%
for(inti=1;i<=totalPage;i++){
out.println("p="+i+">"+i+" ");
}
%>
输入页数:
页数:
<%=p%>/<%=totalPage%>
继续发布
window.history.go(-1)">
请选择查询类别:
=null)if(type.equals("title"))
out.print("selected");%>>按标题查询
=null)if(type.equals("content"))
out.print("selected");%>>按内容查询
=null)if(type.equals("author"))
out.print("selected");%>>按作者查询
=null)if(type.equals("pubdate"))
out.print("selected");%>>按日期查询
请输入查询关键字:
标题作者日期
<%
temp=conn.executeQuery(sql2);
inttotalrecord=0;
if(temp.next())
totalrecord=temp.getInt
(1);
if(totalrecord%size==0)totalPage=totalrecord/size;
elsetotalPage=totalrecord/size+1;
if(totalPage==0)totalPage=1;
temp.close();
try
{
if(request.getParameter("p")==null||request.getParameter("p").equals(""))
p=1;
else
p=Integer.parseInt(request.getParameter("p"));
}catch(NumberFormatExceptione){p=1;}
if(p<1)p=1;
if(p>totalPage)p=totalPage;
rs=conn.executeQuery(sql1);
if(rs.next())
out.println(printPage(rs,p,size));
%>