《基于jsp的新闻发布系统设计》论.doc_第1页
《基于jsp的新闻发布系统设计》论.doc_第2页
《基于jsp的新闻发布系统设计》论.doc_第3页
《基于jsp的新闻发布系统设计》论.doc_第4页
《基于jsp的新闻发布系统设计》论.doc_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

基于基于 jsp 的新闻发布系统设计的新闻发布系统设计 摘要 【摘要】 随着计算机科学的发展,数据库技术在 Internet 中的应用越来越广泛,为广大网络用户提 供了更加周到和人性化的服务。个性化已逐渐成为当今 Web 应用的潮流。利用 JSP 技术开发的 网站新闻管理系统,实现了网站新闻的动态管理,因为可以用来动态发布新闻信息,所以使得 对信息的管理更加及时、高效,提高了工作效率。 【关键词】Struts 组建编程模型、ActionForm 的说明、样式层、持久层、服务层、控制层。 2 目录 摘要.1 0 引言.3 1 系统分析.4 1.1 需求分析.4 1.2 可行性分析.4 2 总体设计.4 2.1 项目规划.4 2.2 系统功能结构图.4 3 系统设计.5 3.1 设计目标.5 3.2 开发及运行环境.5 3.3 逻辑结构设计.5 4 网站总体架构.6 4.1 文件布局.6 4.2 网站首页的运行结果.6 4.2 类的分布.8 5 网站后台主要功能模块设计.8 5.1 后台登录模块设计.8 5.2 总管理员设置模块设计.11 5.3 更改总管理员密码模块设计.23 5.4 新闻信息管理.27 5.5 总结.32 6 网站前台主要功能模块设计.32 6.1 今日新闻的显示.32 6.2 输入新闻的关键字查找新闻.34 6.3 新闻人物的查看和投票.36 7 小结.39 附录一 参考文献.40 附录二 数据表.41 附录三 文件架构图.43 0 引言 Internet 的蓬勃发展,使新闻的传播方式发生了巨大的变化,传统的信息传播媒体电视、 广播、报纸已经不再是人们茶余饭后的主要精神甜点,人们更多的开始关注网络新闻。由于 互联网所容纳的信息量大、内容丰富、信息及时、准确,更有相关信息的全面的介绍与比较, 大大地方便了人们的阅读,因此在短短几年的时间里,互联网便济身于众多媒体之间,并具 有相当一部分媒体人群。借此东风,新闻网也迅速发展起来,它内容丰富,涉及到商业、工 业、农业、银行、财政、教育、娱乐、信息等各个产业,信息量大,不仅有实事新闻,还有 相关的行业信息,同时新闻网具有互联网所具备的一切特性。在全球网络化、信息化的今天, 新闻网迅速发展,大大地丰富了人们的生活,不知不觉中,它已经成为人们生活中不可或缺 的重要组成部分。 1 系统分析 1.1 需求分析 通过相关调查,要求网站具有以下功能; 通过网络,展示各行业新闻及相关信息。 提供新闻搜索功能。 设置新闻人物投票功能,并统计投票数量。 支持其他网站的友情链接。 为后台管理提供管理入口。 1.2 可行性分析 新闻发布系统后台对新闻作了详细的分类,前台以分类形式显示新闻的详细信息,满足 了人们浏览新闻网时分类查看新闻信息的要求,同时提供新闻信息查询功能,方便浏览者查 找相关的新闻信息。新闻网后台则通过对总管理员设置和管理员添加等模块对网站管理员进 行管理,保证了网站的安全性。 2 总体设计 2.1 项目规划 新闻网是一个功能完善的新闻类网站,由客户前台新闻浏览和后台新闻管理两大部分组 成。 前台功能模块 前台主要包括新闻分类、显示新闻详细信息、新闻信息查询、新闻人物投票、友情链接、 提供后台登录口。 后台管理模块 后台主要包括后台总管理员设置及密码修改、添加管理员、管理员信息设置、新闻类型 管理、新闻详细类型管理、新闻信息管理、链接管理、新闻人物管理、退出后台。 2.2 系统功能结构图 新闻发布系统前台功能结构,如图1所示。 图 1 新闻网前台功能结构图 新闻网后台功能结构,如图 2 所示。 新闻网前台功能结构 新闻分类 新闻详细信息 新闻信息查询 新闻人物投票 友情链接 后台登录口 图 2 新闻网后台功能结构图 3 系统设计 3.1 设计目标 本网站是根据各行业新闻信息分类进行开发设计的,主要实现如下目标: 分类展示各行业新闻。 显示新闻的详细信息。 设置新闻搜索功能模块。 设置新闻人物投票及投票数统计功能。 提供其他网站的友情链接。 3.2 开发及运行环境 硬件平台: CPU:P41.8GHz; 内存:256MB 以上。 软件平台: 操作系统:Windows 2000; 数据库:SQL Server 2000; 开发工具包:JDK Version1.4.1; Web 服务器:Tomcat; 浏览器:IE5.0,推荐使用 IE6.0; 分辨率:最佳效果 1024*768 像素。 3.3 逻辑结构设计 本系统数据库采用 SQL server 2000 数据库,系统数据库名称为 db_news。数据库 db_news 中包含 7 张表。关于数据库中的数据表请参见附录 B 4 网站总体架构 4.1 网站首页的运行结果 网站前台首页的运行结果如图 5 所示。 新闻网后台功能结构 总管理员设置 总管理员修改密码 添加管理员 管理员信息设置 新闻类型管理 新闻详细类型管理 新闻信息管理 新闻人物管理 链接管理 退出后台 图 5 网站前台首页运行结果 网站框架图说明如下: 表1 网站前台首页页面说明 区域名称说明对应文件 1网站导航主要展示网站的旗帜广告和站内导航条typeNewWatch.do 2功能模块主要用于显示导航模块中的功能linkSelect.do 3内容显示主要用于显示功能模块中的内容dateNews.do?type=今日新闻 网站后台首页的运行结果如图 6 所示。 图 6 网站后台首页运行结果 网站后台首页中的各部分说明如表 2 所示。 表 2 网站后台首页页面说明 区域名称说明对应文件 1网站导航主要展示网站的旗帜广告和站内导航条typeTopAction.do 1 23 2 1 3 2功能模块主要用于显示导航模块中的功能left_main.jsp 3内容显示主要用于显示功能模块中的内容right_main.jsp 4.2 类的分布 新闻发布系统是利用 Struts 框架实现的,新闻发布系统中类的分布如图 7 所示。 图 7 类的分布 类存放的文件夹功能如表 3 所示。 表 3 类存放的文件夹功能列表 名称功能 持久层(dao 文件夹)各种方法(增加、删除、修改和查询)的实现 样式层(domain 文件夹) 所存放的类是 Actionform 类,在类中必须要继承 ActionForm(也就是 entends ActionForm) 服务层(server 文件夹)存放的 dao 层功能的业务的类 控制层(webtier 文件夹)存放在 jsp 页面中存在的方法实现的类 工具层(tool 文件夹) 类名为 JDBConnection.java(连接数据库的功能) 、类名为 Chinese.java(字符级 转换的类) 、类名为 SessionLib(用来存在 session 变量) 5 网站后台主要功能模块设计 5.1 后台登录模块设计 在新闻发布系统中,后台管理员分为两种:一个是普通管理员,他可以对新闻类型进行 定义,也可以发布新闻、设置投票人数及网站链接;另一个是总管理员,他除了可操作以上 功能外,还可以对普通管理员进行设置,总管理员和普通管理员都能通过后台登录页面登录 后台。 在前台单击“进入后台”超链接,即可进入到后台登录页面,如图 8 所示。 持久层 样式层 前台控制层 服务层 后台控制层 工具层 图 8 后台登录页面 1 样式层的类 具体代码如下 /* ManagerActionForm.java*/ package com.victor.domain; import org.apache.struts.action.*; public class ManagerActionForm extends ActionForm private Integer managerID; /在数据库中的流水号 private String managerIssueDate; /管理员添加日期 private String managerMark; /管理员的标示 private String managerName; /管理员帐号 private String managerPassword; /管理员密码 private String managerRealName; /管理员的真实姓名 private String managerType; /管理员的权限 public ManagerActionForm() this.managerID = new Integer( -1); this.managerIssueDate = “; this.managerMark = “; this.managerName = “; this.managerPassword = “; this.managerRealName = “; this.managerType = “; public Integer getManagerID() return managerID; public void setManagerID(Integer managerID) this.managerID = managerID; . 2持久层的方法 验证输入的内容是否正确有很多方法,笔者采用的是利用 sql 语句的方法进行验证输入 账号和密码。对输入的账号及密码判断是否正确。 利用接口类的方法实现的代码如下: /* ManagerDao.java*/ public interface ManagerDao public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) 实现接口的方法的代码如下: /* ManagerDaoImpl.java*/ /核对普通管理员帐号和密码 public class ManagerDaoImpl implements ManagerDao /实现接口类中的方法用 implements加上接口类名 public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) ManagerActionForm manager = null; 定义一个Object型的数据,初使化为null JDBConnection connection = new JDBConnection(); /连接数据库的方法 String sql = “select * from tb_manager where Name=“ + managerActionForm.getManagerName() + “; try ResultSet rs = connection.executeQuery(sql); / 把sql语句传到JDBConnection类中 去 while (rs.next() manager = new ManagerActionForm(); manager.setManagerPassword(rs.getString(3); /查找过所需要的字段数据 catch (SQLException ex) connection.close(); return manager; /把对象返回到方法中去 3服务层的方法 利用接口类的方法实现的代码如下: /* ManagerFacade.java*/ public interface ManagerFacade public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) 实现接口的方法的代码如下: /* ManagerFacadeImpl.java*/ public class ManagerFacadeImpl implements ManagerFacade /实现接口类的方法 用implements private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); /实现dao类的方法。 public ManagerActionForm managerCheck(ManagerActionForm managerActionForm) return this.managerDao.managerCheck(managerActionForm); /调用持久层的方法 4管理员登陆控制层的方法 /* ManagerCheckAction.java*/ package com.victor.webtier.managerAction; /核对帐号和密码 public class ManagerCheckAction extends Action private ManagerFacade managerFacade; public ManagerCheckAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) Chinese chinese = new Chinese(); ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerName(chinese.str(httpServletRequest. getParameter(“managerName“); ManagerActionForm manager = this.managerFacade.managerCheck(managerActionForm); /通过对象调用方法 if (manager = null) return actionMapping.findForward(“managerWrong“);/通过manager是空值的话,返 回错误页面。 else if (!manager.getManagerPassword().equals(httpServletRequest.getParameter( “managerPassWord“) return actionMapping.findForward(“managerWrong“);/查找的值与在jsp页面中的值不一致, 返回错误页面。 return actionMapping.findForward(“managerRight“); /查找的值与在jsp页面中的值一 致,返回正确页面。 5struts-config.xml 中的配置 在这里主要配置 formBean 和 action 动作指向的 jsp 页面。代码如下: /* struts- config.xml*/ 6管理员登陆 jsp 页面的说明 /* managerCheck.jsp*/ 管理员登陆 帐号: 密码: 5.2 总管理员设置模块设计 总管理员在数据库中是惟一的,总管理员的信息在页面中不会显示出来,在此页面中只 能修改自己的密码及对普通管理员进行设置。 用户单击“总管理员设置”超链接,进入总管理员设置页面。系统首先对用户输入的账 户和密码进行核对。因为并不是所有的管理员都能够有这个权利,所以在 SQL 语句中应体 现惟一性的条件,样式层所要调用的类是 ActionForm,跟用户登录时调用的 actionForm 是同 一个类,在这里就不做介绍了。 1总管理员的登录操作 登录方法主要用于系统管理员进行系统维护时,作为登录后台时密码验证之用。在用户 输入用户账号和密码之后,调用该方法即可验证该用户是否合法。单击“总管理员设置”超 链接,进入到总管理员设置页面,实现此超链接的 jsp 代码如下: /* left_main.jsp*/ 总管理员设置 总管理员页面的运行结果如图 9 所示。 图 9 总管理员页面运行结果 总管理员页面所对应的 jsp 页面代码如下: /* adminPassword.jsp*/ 请输入帐户: 请输入密码: 在上面的 jsp 页面代码中,action 触发的是 adminAction.do 的方法,它与后台登录的方 法相似,只是调用的 SQL 语句不同。 在持久层中查询总管理员的方法的代码如下: 接口类的方法: /* ManagerDao.java*/ public ManagerActionForm adminCheck(ManagerActionForm managerActionForm) 实现接口类的方法: /* ManagerDaoImpl.java*/ public ManagerActionForm adminCheck(ManagerActionForm managerActionForm) ManagerActionForm manager = null; /初始化对 象 JDBConnection connection = new JDBConnection(); String sql = “select * from tb_manager where Name=“ + managerActionForm.getManagerName() + “ and mark=“ + managerActionForm.getManagerMark() + “; try ResultSet rs = connection.executeQuery(sql); /执行查找的方法 while (rs.next() manager = new ManagerActionForm(); manager.setManagerPassword(rs.getString(3); /取出查询的 密码 catch (SQLException ex) connection.close(); /关闭数据库 return manager; 在服务层中实现持久层的方法如下: 接口类的方法: /* ManagerFacade.java*/ public interface ManagerFacade public ManagerActionForm adminCheck(ManagerActionForm managerActionForm); 实现接口类的方法: /* ManagerFacadeIm.java*/ public class ManagerFacadeImpl implements ManagerFacade private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); public ManagerActionForm adminCheck(ManagerActionForm managerActionForm) return this.managerDao.adminCheck(managerActionForm); /调用持久层的方法 具体在控制层的代码如下: /* ManagerDaoImpl.jsp*/ package com.victor.webtier.managerAction; import org.apache.struts.action.*; import javax.servlet.http.*; import com.victor.domain.ManagerActionForm; import com.victor.service.ManagerFacade; import com.victor.service.ManagerFacadeImpl; /核对总管理员帐号和密码 public class AdminCheckAction extends Action private ManagerFacade managerFacade; public AdminCheckAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerName(httpServletRequest.getParameter(“Name“);/从页 面上取值 managerActionForm.setManagerMark(“总管理员“); /取固定的名称 ManagerActionForm manager = this.managerFacade.adminCheck(managerActionForm); if (manager = null) /if判断,做比较 return actionMapping.findForward(“adminWrong“); else if (!manager.getManagerPassword().equals(httpServletRequest.getParameter(“adminPassWord“) return actionMapping.findForward(“adminWrong“); return actionMapping.findForward(“adminRight“); 上面的类文件中加载了 ManagerActionForm 类,这个类是属于 ActionForm 类,相当于 JavaBean,在这里主要实现进行取值和赋值的功能。 struts-config.xml 的配置的代码如下: /* struts- config.xml*/ 如果用户输入的总管理员的账户和密码不正确,此时 jsp 页面中将提示用户密码不正确。 实现此功能的 jsp 代码如下: /* adminPasswordFail .jsp*/ adminPasswordFail 密码不正确 2秒种后从新输入密码 2对管理员的查询操作 总管理员登录成功后,系统将对除了总管理员以外的所有普通管理员进行查询操作。此 时页面运行结果如图 10 所示。 图 10 总管理员查询功能 持久层的查询代码如下: 接口类的代码: /* ManagerDao.java*/ package com.victor.dao; import java.util.List; import com.victor.domain.ManagerActionForm; public interface ManagerDao public List managerSelect(ManagerActionForm managerActionForm); /在接口类的查询 方法方法 实现接口类的代码: /* ManagerDaoImpl.java*/ /查出所有的管理员 public List managerSelect(ManagerActionForm managerActionForm) JDBConnection connection = new JDBConnection(); /调用连接数据库的方法 List list = new ArrayList(); /定义一个List容器的对象,去实现 ArrayList()中的方法 String sql = “select * from tb_manager where mark=“ + managerActionForm.getManagerMark() + “; /有条件的查询语句 try ResultSet rs = connection.executeQuery(sql); /调用JDBConnection查询的方 法 while (rs.next() ManagerActionForm manager = new ManagerActionForm(); manager.setManagerID(Integer.valueOf(rs.getString(1); manager.setManagerName(rs.getString(2); manager.setManagerPassword(rs.getString(3); manager.setManagerRealName(rs.getString(4); manager.setManagerIssueDate(rs.getString(5); manager.setManagerMark(rs.getString(6); list.add(manager); /l利用对象list的add()方法把查出来的数据放 在List容器中 connection.close(); /关闭数据库 catch (SQLException ex) return list; /返回值要与方法的类型要一致 调用类的方法如图 11 所示: 图 11 调用的方法 服务层的查询代码如下: 接口类的代码: /* ManagerFacade.java*/ public interface ManagerFacade public List managerSelect(ManagerActionForm managerActionForm); 实现接口类的代码: /* ManagerFacade.java*/ public class ManagerFacadeImpl implements ManagerFacade private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); public List managerSelect(ManagerActionForm managerActionForm) return this.managerDao.managerSelect(managerActionForm); /利用对象 managerDao调用持久层的方法 控制层实现的代码如下: /*ManagerFacade.java* */ package com.victor.webtier.managerAction; import org.apache.struts.action.*; import javax.servlet.http.*; import com.victor.domain.ManagerActionForm; import com.victor.service.ManagerFacade; import com.victor.service.ManagerFacadeImpl; import java.io.UnsupportedEncodingException; /加载所需要的类 /总管理员全部查看信息 public class AdminSelectAction extends Action private ManagerFacade managerFacade; public AdminSelectAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerMark(“普通管理员“); httpServletRequest.setAttribute(“listAdminSelect“,managerFacade.managerSelect(managerActionF orm); return actionMapping.findForward(“adminSelectAction“); struts-config.xml 的配置: /* struts- config.xml*/ 管理员查询 jsp 代码的实现: /*adminSelect.jsp* */ 查看全部信息 function projectDelete(date) if(confirm(“是否删除这一组数据吗?“) window.location=“adminDeleteAction.do?managerID=“+date; 查看全部信息 数据库ID 帐号 真实姓名 注册时间 管理员类别 操作 “修改 )“删 除 通过以上的代码就能够实现对所有的管理员的查询功能。总管理员除了具备查询功能外, 还可以修改及删除管理员的信息。 3修改之前的条件查询操作 在执行修改之前首先是对要修改的数据进行查询。样式层所要调用的类是 ActionForm, 与用户登录调用的 actionForm 是同一个类,在这里就不做介绍了,实现的过程如下。 具体在持久层的条件查询代码如下: 接口类的方法的代码: /* ManagerDao.java */ public interface ManagerDao public List adminSelectOne(ManagerActionForm managerActionForm); ) 实现接口类的方法的代码: /* ManagerDaoImpl.java */ /总管理员的单独查找,查找的内容在下一页中显示 public List adminSelectOne(ManagerActionForm managerActionForm) ManagerActionForm manager = null; List list = new ArrayList(); JDBConnection connection = new JDBConnection(); String sql = “select * from tb_manager where ID=“ + managerActionForm.getManagerID() + “; /以数据库中的流 水号为条件进行查询 ResultSet rs = connection.executeQuery(sql); /执行查询的方法 try while (rs.next() manager = new ManagerActionForm(); manager.setManagerID(Integer.valueOf(rs.getString(1); manager.setManagerName(rs.getString(2); manager.setManagerPassword(rs.getString(3); manager.setManagerRealName(rs.getString(4); manager.setManagerIssueDate(rs.getString(5); manager.setManagerMark(rs.getString(6); list.add(manager); catch (SQLException ex) connection.close(); return list; 具体在服务层的条件查询代码如下 接口类的方法的代码: /* ManagerFacade.java*/ public interface ManagerFacade public List adminSelectOne(ManagerActionForm managerActionForm); 实现接口类的方法的代码: /* ManagerFacadeImpl.java*/ public class ManagerFacadeImpl implements ManagerFacade private ManagerDao managerDao; public ManagerFacadeImpl() this.managerDao = new ManagerDaoImpl(); public List managerSelectOne(ManagerActionForm managerActionForm) return this.managerDao.managerSelectOne(managerActionForm); /实现持久层的 方法 控制层实现的代码: /*例程8-1 ManagerFacadeImpl.java */ package com.victor.webtier.managerAction; import org.apache.struts.action.*; import javax.servlet.http.*; import com.victor.domain.ManagerActionForm; import com.victor.service.ManagerFacade; import com.victor.service.ManagerFacadeImpl; import java.io.UnsupportedEncodingException; import java.util.List; /总管理员的单独查找,查找的内容在下一页中显示 public class AdminSelectOneAction extends Action private ManagerFacade managerFacade; public AdminSelectOneAction() this.managerFacade = new ManagerFacadeImpl(); public ActionForward perform(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) ManagerActionForm managerActionForm = (ManagerActionForm) actionForm; managerActionForm.setManagerID(Integer.valueOf(httpServletRequest. getParameter(“ID“); List adminSelectOneList = this.managerFacade.adminSelectOne( managerActionForm); /执行查找的服务层的代码,并且 返回值赋于新的对象。 httpServletRequest.setAttribute(“adminSelectOneList“, adminSelectOneList); return actionMapping.findForward(“adminSelectOneAction“); struts-config.xml 配置的代码如下: /* struts- config.xml*/ 条件查询执行后的 jsp 代码实现 /* adminUpdate.jsp*/ 更改管理员的性质 更新管理员的性质 “ 帐号: “ “ 真实姓名: “ 管理员类别: “ 这样执行“adminSelectOneAction.do”的方法后,jsp 页面如图 8.12 所示 图 8.12 更新管理员的性质 总管理员在修改信息之前,可以查看以前的信息,这样可以方便用户进行信息修改。 5.5 总结 对新闻信息管理的操作,主要应用到添加、删除、修改和查询的功能,在本小节反复的 应用到这四种 sql 语句,只是条件上的不同,只要读者能够正确的写出 sql 语句,在类中的 实现过程就简单了。 6 网站前台主要功能模块设计 6.1 今日新闻的显示 这个功能就是当天的

温馨提示

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

评论

0/150

提交评论