jsp新闻发布系统设计参考文档.docx
《jsp新闻发布系统设计参考文档.docx》由会员分享,可在线阅读,更多相关《jsp新闻发布系统设计参考文档.docx(47页珍藏版)》请在冰豆网上搜索。
![jsp新闻发布系统设计参考文档.docx](https://file1.bdocx.com/fileroot1/2023-7/23/4bb33d8c-2c17-429a-afd2-9fea77d09329/4bb33d8c-2c17-429a-afd2-9fea77d093291.gif)
jsp新闻发布系统设计参考文档
jsp新闻发布系统设计参考文档
第19章新闻发布系统
教学要求
学会分析设计一个较复杂的新闻发布系统
学会制作较复杂的动态新闻页
学会设计动态新闻的管理模块
领会GoToRelatedPage的用法
能够综合应用Ultradev4设计一个较复杂的网站
19.1分析
新闻发布系统分两大功能模块:
供所有用户查看的动态新闻显示模块和只供管理员进行管理新闻及相关内容的新闻管理模块,也就是用户界面和管理界面。
19.1.1用户界面分析
用户界面所包含的文件
news.jsp该页是查看新闻的主页面。
包括新闻类别、新闻标题等内容。
如图所示的是制作好的news.jsp页在浏览器中的样子。
动态新闻页
more.jsp该页用来显示所有新闻内容。
在news.jsp有一个【更多新闻】
链接,该链接就是指向该页的。
ShowNews.jsp该页用来显示新闻具体内容。
news.jsp中的新闻标题就
是链接到该页的。
Buttom.htm和head.htm这两个页是供news.jsp和more.jsp嵌入用的,
这样可以达到定制用户界面的页首和页尾的功能。
相关数据表
表tNewsSubjectID
表tNewsSubject用来存储新闻类别。
表中的每条记录有两个字段:
fSubjectName字段,用来保存新闻类别;fSubjectID字段,用来保存标记新
闻类别的标号,这个标号在表中是惟一的。
如右图所示。
表tNews用来存储新闻的具体内容。
表中字段fNewsID保存的是每条
记录的编号,这个编号惟一标识一条新闻。
字段fTopic保存着新闻标题,字
段fContent保存着新闻的具体内容,字段fDate保存着录入新闻时的日期,
字段fAuthor保存着新闻的作者,字段fKeyWords保存着查找新闻的所需要
的关键字,字段fSubjectID保存着标记新闻类别的标号,这个标号在这个表
中不是惟一的。
如图所示。
表tNews
19.1.2管理界面分析
新闻管理系统结构
新闻管理系统可分为密码管理、类别管理和新闻类别管理3部分。
这3个功能模块通过一个menu.jsp页联系起来。
与类别管理相关的文件
这个功能模块包括以下4个网页文件。
subMan.jsp通过该页可以完成对管理类别的编辑、添加和删除的操
作。
SubDel.jsp删除新闻类别。
SubEdit.jsp编辑现有的新闻类别。
SubAdd.jsp添加新闻类别。
与新闻内容管理相关的文件
这个功能模块包括以下3个网页文件。
NewsMan.jsp通过该页可以完成对新闻内容的编辑、添加和删除的操
作。
编辑新闻内容的操作在NewsMan.jsp页中完成。
NewsDel.jsp删除新闻内容。
NewsAdd.jsp添加新闻内容。
其他相关文件
Menu.jsp通过该文件来统一管理新闻系统的各项操作,即从该页可进
入对管理系统的密码、新闻的类别和新闻的内容的操作。
在浏览器中如图所
示。
menu.jsp页
Adm.htm这是“管理”部分的主页面,是一个网页框架文件,它由左
右两个框架组成,左边的框架用来显示menu.jsp页,右边的框架用来显示与
新闻类别管理相关的页和显示与新闻内容管理相关的页。
利用网页框架,使
管理员管理新闻系统的各个内容更方便,操作简单。
Login.jsp登录页,这是设置安全机制所用到的。
进入新闻管理系
统前必须登录。
Sorry.htm登录失败时转向该页。
Welcome.htm首次进入新闻管理系统时在Adm.htm页右边的框中调
用该页。
说明新闻管理系统的功能。
PassMan.jsp对本系统的密码管理。
完成这个新闻管理系统主要是对这组文件的制做,以及合理的安排这些文件。
相关数据表
新闻管理模块用到了3个数据表。
表tNewsSubject和表tNews,这两个表已介绍过。
还有一个用于存储用户名和密码的表tNewsAdmin。
如图所示。
表tNewsAdmin
表tNewsAdmin中字段fAdminName存储登录管理系统时用的用户名,字段fAdminPass存储登录管理系统时的密码。
对新闻管理的各个操作,也就是对服务器端这3个表的操作。
19.2制作动态新闻页
动态新闻页news.jsp的制作,使之能够动态地显示当日以及最近几天的新闻。
由于新闻的标题和内容都存储在服务器端相应的数据表中了,更新或者添加新闻的操作是对服务器端相应数据表中的记录进行更新,或者向数据表中插入记录。
所以,该页的制作主要是定义记录集,向页面添加动态内容,添加服务器行为。
这个页动态内容分为3部分。
第1部分是能够动态地显示所有新闻的类别标题,也就是news.jsp中的
链接【国际新闻】、【国内新闻】、【体育新闻】等类别标题。
这一部分动
态内容就是对新闻进行分类。
第2部分是当前列出新闻的类别标题。
也就是news.jsp中黑色加粗的【国
际新闻】。
这一部分随着所选新闻类别变化而变化。
它的作用只是标记当前
列出的新闻标题的类别。
第3部分也就是news.jsp下半部分所示的新闻标题了。
这一部分列出的
新闻标题属于当前所选的新闻类别,从这一部分可以阅读相关新闻的详细内
容。
这3项需要分别建立记录集,因为它们需要的动态数据不同。
但建立的这3个记录集还必须通过一个变量传递参数,以便使这3项显示的内容一致。
可通过以下步骤来完成该新闻页。
1.1.1.建立记录集。
2.2.2.向页面绑定动态数据。
3.3.3.添加服务器行为。
其实该页还包含一个新闻搜索器,在第10章章中有详述,在此不做介绍。
下面来制作这个动态新闻页news.jsp。
19.2.1为动态新闻建立记录集
为该页添加动态内容的首先要建立相应的记录集。
1.1.1.在站点文件窗口中打开news.jsp文件。
该页的静态部分已经设计好
了。
如图所示。
新闻页的初始文件
2.2.2.打开数据绑定监视器,打开定义记录集对话框,建立一个取得新闻
类别的记录集。
单击监视器面板上的“+”按钮,从弹出的菜单上选择
Recordset(Query)选项,打开定义记录集对话框,这时如果出现Advanced
Recordset对话框,单击Simple按钮,转到SimpleRecordset对话框。
在记录集对话框的Name文本框中输入rsSubject。
在Connection下拉列表中选择connBHP。
Table下拉列表框选择存储新闻类别的数据表tNewsSubject。
表
tNewsSubject只有两个字段:
字段fSubjectName和字段fSubjectID。
这两个字
段分别保存的是新闻类别和新闻类别编号,而建立的这个记录集需要从数据表
tNewsSubject中选取这两个字段,字段fSubjectName中的数据作为第1部分的
动态内容,字段fSubjectID中的数据作为动态参数。
在Column处选择All单选项。
在Sort处设置成按fSubjectID字段的升序排列。
3.3.3.单击OK按钮保存设置。
这样第1个记录集已定义好了。
设置好的记录集对话框如图所示。
4.4.4.为第2部分动态内容定义记录集。
打开定义记录集对话框,如出现
SimpleRecordset对话框,单击Advanced按钮,转到AdvancedRecordset
对话框。
设置如图所示。
在SQL文本框中输入下面的SQL语句:
SELECTfSubjectName
FROMtNewsSubject
WHEREfSubjectID=iNewsID
这是一条SELECT语句。
描述的仍是从表tNewsSubject中选取记录中的字段fSubjectName,最后的WHERE子句规定了只选取字段fSubjectID的值等于变量strNewsID中的值的记录。
变量iNewsID中的值是数值型,这个数值标记着当前列出的新闻类别,这样就把当前新闻类别选取出来了。
由于用到了变量iNewsID,所以必须在Variables处定义并赋初值。
在Name列输入变量名strNewsID,在DefaultValue列处输入1作为该变量的默认值,即第2部分动态内容在默认情况下列出标记为1的新闻类型和Run-TimeValue列处的运行时值request.getParameter(“iSubjectID”)。
第2、第3部分的动态内容所对应的记录集就是通过参数iSubjectID传递动态数据作为选取记录的条件,这样使得3部分的动态内容一致。
5.5.5.为第3部分动态内容定义记录集。
打开高级记录集对话框。
设置如
图所示。
在SQL处输入SQL语句如下:
SELECTfTopic,fNewsID
FROMtNews
WHEREfSubjectID=iCurrentSubID
ORDERBYfDateDESC
这个SELECT语句是从数据表tNews中选取记录。
WHERE子句规定了只选取字段fSubjectID值等于iCurrentSubID变量值的记录,并且只取记录的fTopic字段和fNewsID字段。
子句ORDERBYfDateDESC规定了记录按字段fDate中的值(也就是日期)从大到小排序,从动态新闻页的内容上说就是先显示最近发布的消息。
DESC规定按字段值的降序排序,ASC规定按字段值的升序排序。
上面语句仍用到了变量,所以必须在Variables处定义初值。
在Name列输入变量名iCurrentSubID,在DefaultValue列处输入1作为该变量的默认值,即第3部分动态内容在默认情况下列出标记为1的记录,和Run-TimeValue列处的运行时值request.getParameter(“iSubjectID”)。
向这个变量传递参数的值同向第2部分动态内容传递参数的值相同。
19.2.2使新闻动态显示
及时性是新闻的要素之一,必须使新闻动态显示在页面上。
所以,建立了记录集后,开始向页面绑定动态数据。
这一操作很简单,添加步骤如下。
1.1.1.向第1部分动态内容添加动态数据。
添加动态数据的位置如图所示
的两条粗线之间的表格中,也就是图中光标所在的位置。
第1部分添加动态数据的位置
2.2.2.打开数据绑定监视器,单击记录集rsSubject前的“+”号,展开该记
录集。
选中fSubjectName字段,然后把光标放在上图所示的表格中。
3.3.3.单击数据绑定监视器面板上的insert按钮,这样动态数据就添加到相
应的位置了。
4.4.4.按照上面的步骤向第2部分和第3部分动态内容添加动态数据。
把
记录集rsCurrentSubject中的fSubjectName字段和记录集rsNews中的
fTopic字段分别绑定到第2部分动态内容处和第3部分动态内容处。
添
加了动态数据的位置如图所示的{rsCurrentSubject.fSubjectName}和{rsNews.fTopic}
的两个占位符。
向第2、3部分添加动态数据的位置
以上4个步骤,就把动态数据绑定到了动态新闻页news.jsp上了。
19.2.3完善新闻页
建立了记录集、添加了动态数据,还需要向页面添加以下4种服务器行为使该页完善起来。
添加RepeatRegion服务器行为使第1部分的新闻类别全部显示出
来,使第3部分的新闻标题多条显示或全部显示出来。
添加GoToDetailPage服务器行为根据第1部分的类别标题在第3
部分显示不同类别的新闻标题。
从新闻标题可进入具体新闻内容。
添加ShowRegion服务器行为使新闻页news.jsp上的【没有新闻】只
在没有新闻的情况下显示,若有新闻就使之隐藏起来。
下面步骤就是为该页
添加这些服务器行为。
添加GoToRelatedPage服器行为以便从【更多新闻】跳转到具有更
多新闻的页。
添加RepeatRegion服务器行为
1.1.1.把光标放在第1部分动态数据位置上的表格中,用鼠标单击文档窗
口下方的
标签。 选中表格中的单元格。 2.2.2.这个表格只有1行1列,选 | 标签和 | 标签虽然看起来都一样,但选
标签可以使新闻类别标题显示在一行上。 在添加了RepeatRegion 服务器行为后,服务器端在执行与此服务器行为对应的程序时,就生成1 个1行多列的表格HTML代码,每个单元格存放一个新闻类别标题。 若选 |
标签,则生成1个1列多行的表格。3.3.3.打开服务器行为监视器。
单击监视器面板上的“+”按钮,从弹出的菜单上选择Repeat-Region选项。
4.4.4.这时弹出对话框。
在对话框的Recordset下拉列表中选择与第1部分动态内容对应的记录集rsSubject,在Show处选择AllRecords单选框,即显示所有新闻类别标题。
5.5.5.用鼠标点击{rsNews.fTopic}占位符选中这个动态文本。
按照步骤2、3添加RepeatRegion服务器行为。
在设置RepeatRegion服务器行为对话框时,在Recordset处选择rsNews记录集,在Show处设置成显示5条记录。
如图所示。
RepeatRegion服务器行为添加完毕。
添加GoToDetailPage服务器行为
1.1.1.选中{rsSubject.fSubjectName}占位符。
2.2.2.打开服务器行为监视器。
单击监视器面板上的“+”按钮,从弹出的菜单上选择GoToDetailPage选项。
按图所示的进行设置。
Recordset下拉列表中选择记录集rsSubject,Column下拉列表中选择fSubjectID字段。
这时
{rsSubject.fSubjectName}处多了一道下划线,并且用不同颜色的显示,表示是一个链接区域
3.3.3.同样的方法,用鼠标单击第3部分动态内容处的{rsNews.fTopic}占位符。
为其添加动态链接。
其GoToDetailPage行为对话框的设置如图所示。
Recordset下拉列表中选择记录集rsNews,Column下拉列表中选择字段fNewsID4.4.4.该链接所指向的页最好在新窗口中打开。
所以,还要对其属性设置一下。
选中该动态文本。
然后选择Window菜单下的Properties选项,打开属性浮动面板。
单击Target右边的下三角选择_blank选项。
如图所示。
这样设置后,在浏览器点击此链接时,所链接的页将在新窗口中出现。
在news.jsp页面上,可看到有一个【没有新闻】的字样。
这个字样应该在没有新闻的情况下出现。
所以,需要对【没有新闻】字样添加ShowReigion中的一个服务器行为。
5.5.5.选中该字样。
单击服务器行为面板上的“+”按钮,从弹出的菜单上选
择ShowRegion中的子项ShowIfRecordsetIsEmpty。
6.6.6.这时弹出设置该行为的对话框。
设置如图所示。
对话框中的Recordset处一定选择rsNews,因为该服务器行为是针对记录集rsNews的
news.jsp页面上还有一个【更多新闻】的链接。
从这个链接可以看到更多新闻。
设置链接需要为其添加一个GoToRelatedPage服务器行为,即转到相关页。
这个行为可以向所跳转的页传递参数。
从这个链接进入到相关页时,必须把该页的参数传递过去。
使正浏览的动态新闻页的内容与所要转到的更多新闻页的列出的新闻内容保持一致。
也就是说,如果正在浏览的新闻标题属于国内新闻,那么跳转到更多新闻页时,所列出的新闻标题仍属于国内新闻。
在窗性窗口中设置的链接参数是传不过去的。
所以,必须用此服务器行为。
7.7.7.打开服务器行为监视器,单击面板上的“+”按钮,选择GoToRelated
Page选项。
8.8.8.这时出现GoToRelatedPage行为对话框。
按下图所示进行设置。
GoToRelatedPage行为对话框
9.9.9.隐藏【更多新闻】字样。
在前面已设置了一次显示5条新闻标题。
如果某一类新闻总数少于5条或仅5条时,【更多新闻】字样就可隐藏
起来。
10.10.10.首先选中【更多新闻】字样,转到代码窗口中,找到【更多新闻】
字样。
对【更多新闻】链接加上条件语句修改后的代码如下。
<%if(rsNews_total>5){%>
<%=MM_keepURL%>">更多新闻
<%}/*当新闻多于5条时显示"更多新闻"字样*/%>
...
用rsNews_total>5作为if语句的条件,即新闻多于5条时显示【更多新闻】链接,rsNews_total是在定义记录rsNews时自动生成的变量,其值就是记录的总数。
动态新闻页的服务器行为也就添加完了,该页也就制作好了。
保存所做的工作。
19.2.4制作显示更多新闻页
如果经常上网的话,就会经常见到【更多——】字样的链接,以便显示更多同类相关内容,在本例中也使用了一个【更多新闻】的链接,通过这个链接可以显示所有同类新闻。
这个链接的设置在上一节中已讲述,现在用同样的方法来添加一个此链接指向的页more.jsp。
制作显示更多新闻页more.jsp只需在新闻页news.jsp的基础上添加一组导航链接,通过这个链接可以查看所有相关新闻。
more.jsp页的制作与news.jsp页的制作基本相同,只是比news.jsp页多加了两组动态导航链接。
在news.jsp页的基础上,记录集的建立、数据的绑定、服务行为的添加已做好,现在要做的就是为该页添加两组动态导航链接。
添加两组动态导航链接
1.1.1.在站点文件窗口中,打开more.jsp文件。
2.2.2.现在为该页添加两组动态导链接。
将光标放至图所示被选中的单元
格中。
向页面添加动态导航链接
3.3.3.单击Insert菜单,选择LiveObject?
RecordsetNavigationBar。
4.4.4.这时弹出RecordsetNavigationBar对话框,记录集选择rsNews,并
选择Images单选按钮。
如图所示。
5.5.5.然后把光标放在该表格的第1个单元格内,选择Insert菜单下的Live
Object?
RecordsetNavigationstatus选项。
在弹出的对话框中注意选择记
录集rsNews,如图所示。
把导航状态修改成{rsNews_first}-{rsNews_last}/{rsNews_total}的样子。
如图所示。
页面导航状态
也可以在新闻标题的下再添加一组导航按钮及状态条。
在news.jsp页的基础上添加了两组动态链接后,显示更多新闻页的more.jsp就设计好了。
19.2.5显示新闻具体内容
现在制作一个显示新闻具体内容的页。
这个页的设计非常简单,只需定义一个记录集,绑定动态数据到页面就可以了。
显示新闻具体内容
1.1.1.打开站点文件窗口中的showNews.jsp页。
2.2.2.打开数据绑定监视器,建立一个记录集。
下图所示的就是建立该页
记录集的对话框,按照图中所示设置参数。
在SQL文本框中输入的SQL语句如下。
SELECTfContent
FROMtNews
WHEREfNewsID=iCurNewsID
本语句是个SELECT语句,所描述的是根据WHERE子句的规定从表
tNews中选取记录。
WHERE规定了只选取字段fNewsID的值等于变量
txtCurNewsID的值的记录。
在定义这个记录集时用到了变量iCurNewsID,
所以,还需要在Variables处的文本框中定义。
在Name列处输入变量名
iCurNewsID;在DefaultValue列处输入默认值1;在Run-timeValue处输
入request.getParameter(“fNewsID”)。
这样该页就根据news.jsp页或者
more.jsp页传过来的参数选取记录集。
定义记录集对话框
3.3.3.建立了记录集之后,开始向页面绑定动态数据。
展开记录集
rsNewsDetail,选择fContent字段,单击数据绑定监视器面板下面的Insert
按钮。
这样就把所需要的动态数据绑定到页面上了。
绑定该动态数据,
不需定位页面中的位置。
动态新闻页及相关的页已经完成了。
保存所有的工作。
19.3导航页面
新闻管理模块中各页面可通过一个导航页面来调用。
在管理新闻时,首先要调出导航页面,从导航页面进入管理新闻的各页面。
这个导航页面的初始文件如图所示。
制作menu.jsp页
1.1.1.在站点文件窗口中打开menu.jsp文件。
该页面中的【管理密码】与
【管理类别】这两个链接为静态的,分别指向密码管理页PassMan.jsp和
类别管理页SubMan.jsp。
初始文件中已添加好了。
2.2.2.在【新闻】下面的表格中添加管理新闻具体内容的链接。
这一项由
多个链接组成,一个链接对应一个新闻类别,因为管理模块中有新闻类
别的管理,管理类别可以添加类别或者删除类别,所以这一组链接要设
置成动态的,在正行修改新闻类别时,也会动态变化。
这个导航页面采用了网页框架。
框架的左边是网页文件menu.jsp,右边是管理模块的说明文件。
在进入新闻管理系统时框架的左边调用的一直是menu.jsp,右边的框架首先调用welcome.htm
文件进行说明一下新管理系统所管理的内容。
需要这义一个记录集,所定义记录集的对话框如图所示。
从表tNewsSubject中选取记录集,因为表tNewsSubject中存放的
是新闻类别。
最好把取得的记录设置成按fSubjectID的升序排序
定义好记录集后,首先把字段fSubjectName绑定到【新闻】下面的表
格中。
3.3.3.添加GoToDetailPages服务器行为。
在服务器行为监视器中打开该
服务器行为对话框,在DetailPage处输入文件名newsMan.jsp。
一定把字
段fSubjectID的值作为参数传递到newsMan.jsp页。
如图所示。
4.4.4.选中表格,添加一个RepeatRegion服务器行为。
按图所示进行设置。
5.5.5.保存文件。
因为adm.html是个框架文件。
需要选择File菜单下的Save
AllFrames选项进行保存。
19.4密码管理
展开阅读全文
相关搜索