1、jsp新闻发布系统设计参考文档682020年5月29日文档仅供参考第19章 新闻发布系统教学要求 学会分析设计一个较复杂的新闻发布系统 学会制作较复杂的动态新闻页 学会设计动态新闻的管理模块 领会Go To Related Page的用法 能够综合应用Ultradev 4设计一个较复杂的网站19.1 分析新闻发布系统分两大功能模块:供所有用户查看的动态新闻显示模块和只供管理员进行管理新闻及相关内容的新闻管理模块,也就是用户界面和管理界面。19.1.1 用户界面分析用户界面所包含的文件 news.jsp 该页是查看新闻的主页面。包括新闻类别、新闻标题等内容。如图所示的是制作好的news.jsp页
2、在浏览器中的样子。动态新闻页 more.jsp 该页用来显示所有新闻内容。在news.jsp有一个【更多新闻】链接,该链接就是指向该页的。 ShowNews.jsp 该页用来显示新闻具体内容。news.jsp中的新闻标题就是链接到该页的。 Buttom.htm和head.htm 这两个页是供news.jsp和more.jsp嵌入用的,这样能够达到定制用户界面的页首和页尾的功能。相关数据表 表tNewsSubjectID表tNewsSubject 用来存储新闻类别。表中的每条记录有两个字段:fSubjectName字段,用来保存新闻类别;fSubjectID字段,用来保存标记新闻类别的标号,这个
3、标号在表中是惟一的。如右图所示。 表tNews 用来存储新闻的具体内容。表中字段fNewsID保存的是每条记录的编号,这个编号惟一标识一条新闻。字段fTopic保存着新闻标题,字段fContent保存着新闻的具体内容,字段fDate保存着录入新闻时的日期,字段fAuthor保存着新闻的作者,字段fKeyWords保存着查找新闻的所需要的关键字,字段fSubjectID保存着标记新闻类别的标号,这个标号在这个表中不是惟一的。如图所示。表tNews19.1.2 管理界面分析新闻管理系统结构新闻管理系统可分为密码管理、类别管理和新闻类别管理3部分。这3个功能模块经过一个menu.jsp页联系起来。与
4、类别管理相关的文件这个功能模块包括以下4个网页文件。 subMan.jsp 经过该页能够完成对管理类别的编辑、添加和删除的操作。 SubDel.jsp 删除新闻类别。 SubEdit.jsp 编辑现有的新闻类别。 SubAdd.jsp 添加新闻类别。与新闻内容管理相关的文件这个功能模块包括以下3个网页文件。 NewsMan.jsp 经过该页能够完成对新闻内容的编辑、添加和删除的操作。编辑新闻内容的操作在NewsMan.jsp页中完成。 NewsDel.jsp 删除新闻内容。 NewsAdd.jsp 添加新闻内容。其它相关文件 Menu.jsp 经过该文件来统一管理新闻系统的各项操作,即从该页可
5、进入对管理系统的密码、新闻的类别和新闻的内容的操作。在浏览器中如图所示。menu.jsp页 Adm.htm 这是”管理”部分的主页面,是一个网页框架文件,它由左右两个框架组成,左边的框架用来显示menu.jsp页,右边的框架用来显示与新闻类别管理相关的页和显示与新闻内容管理相关的页。利用网页框架,使管理员管理新闻系统的各个内容更方便,操作简单。 Login.jsp 登录页,这是设置安全机制所用到的。进入新闻管理系统前必须登录。 Sorry.htm 登录失败时转向该页。 Welcome.htm 首次进入新闻管理系统时在Adm.htm页右边的框中调用该页。说明新闻管理系统的功能。 PassMan.
6、jsp 对本系统的密码管理。完成这个新闻管理系统主要是对这组文件的制做,以及合理的安排这些文件。相关数据表新闻管理模块用到了3个数据表。表tNewsSubject和表tNews,这两个表已介绍过。还有一个用于存储用户名和密码的表tNewsAdmin。如图所示。表tNewsAdmin表tNewsAdmin中字段fAdminName存储登录管理系统时用的用户名,字段fAdminPass存储登录管理系统时的密码。对新闻管理的各个操作,也就是对服务器端这3个表的操作。19.2 制作动态新闻页动态新闻页news.jsp的制作,使之能够动态地显示当日以及最近几天的新闻。由于新闻的标题和内容都存储在服务器端
7、相应的数据表中了,更新或者添加新闻的操作是对服务器端相应数据表中的记录进行更新,或者向数据表中插入记录。因此,该页的制作主要是定义记录集,向页面添加动态内容,添加服务器行为。这个页动态内容分为3部分。 第1部分是能够动态地显示所有新闻的类别标题,也就是news.jsp中的链接【国际新闻】、【国内新闻】、【体育新闻】等类别标题。这一部分动态内容就是对新闻进行分类。 第2部分是当前列出新闻的类别标题。也就是news.jsp中黑色加粗的【国际新闻】。这一部分随着所选新闻类别变化而变化。它的作用只是标记当前列出的新闻标题的类别。 第3部分也就是news.jsp下半部分所示的新闻标题了。这一部分列出的新
8、闻标题属于当前所选的新闻类别,从这一部分能够阅读相关新闻的详细内容。这3项需要分别建立记录集,因为它们需要的动态数据不同。但建立的这3个记录集还必须经过一个变量传递参数,以便使这3项显示的内容一致。可经过以下步骤来完成该新闻页。1. 建立记录集。2. 向页面绑定动态数据。3. 添加服务器行为。其实该页还包含一个新闻搜索器,在第10章章中有详述,在此不做介绍。下面来制作这个动态新闻页news.jsp。19.2.1 为动态新闻建立记录集为该页添加动态内容的首先要建立相应的记录集。1. 在站点文件窗口中打开news.jsp文件。该页的静态部分已经设计好了。如图所示。新闻页的初始文件2. 打开数据绑定
9、监视器,打开定义记录集对话框,建立一个取得新闻类别的记录集。单击监视器面板上的”+”按钮,从弹出的菜单上选择Recordset(Query)选项,打开定义记录集对话框,这时如果出现Advanced Recordset对话框,单击Simple按钮,转到Simple Recordset对话框。 在记录集对话框的Name文本框中输入rsSubject。 在Connection下拉列表中选择connBHP。 Table下拉列表框选择存储新闻类别的数据表tNewsSubject。表tNewsSubject只有两个字段:字段fSubjectName和字段fSubjectID。这两个字段分别保存的是新闻类别
10、和新闻类别编号,而建立的这个记录集需要从数据表tNewsSubject中选取这两个字段,字段fSubjectName中的数据作为第1部分的动态内容,字段fSubjectID中的数据作为动态参数。 在Column处选择All单选项。 在Sort处设置成按fSubjectID字段的升序排列。3. 单击OK按钮保存设置。这样第1个记录集已定义好了。设置好的记录集对话框如图所示。4. 为第2部分动态内容定义记录集。打开定义记录集对话框,如出现 Simple Recordset对话框,单击Advanced按钮,转到Advanced Recordset对话框。设置如图所示。在SQL文本框中输入下面的SQL
11、语句:SELECT fSubjectNameFROM tNewsSubjectWHERE fSubjectID =iNewsID这是一条SELECT语句。描述的仍是从表tNewsSubject中选取记录中的字段fSubjectName,最后的WHERE子句规定了只选取字段fSubjectID的值等于变量strNewsID中的值的记录。变量iNewsID中的值是数值型,这个数值标记着当前列出的新闻类别,这样就把当前新闻类别选取出来了。由于用到了变量iNewsID,因此必须在Variables处定义并赋初值。在Name列输入变量名strNewsID,在Default Value列处输入1作为该变量
12、的默认值,即第2部分动态内容在默认情况下列出标记为1的新闻类型和Run-Time Value列处的运行时值request.getParameter(”iSubjectID”)。第2、第3部分的动态内容所对应的记录集就是经过参数iSubjectID传递动态数据作为选取记录的条件,这样使得3部分的动态内容一致。5. 为第3部分动态内容定义记录集。打开高级记录集对话框。设置如图所示。在SQL处输入SQL语句如下:SELECT fTopic, fNewsIDFROM tNewsWHERE fSubjectID = iCurrentSubIDORDER BY fDate DESC这个SELECT语句是从
13、数据表tNews中选取记录。WHERE子句规定了只选取字段fSubjectID值等于iCurrentSubID变量值的记录,而且只取记录的fTopic字段和fNewsID字段。子句ORDER BY fDate DESC规定了记录按字段fDate中的值(也就是日期)从大到小排序,从动态新闻页的内容上说就是先显示最近发布的消息。DESC规定按字段值的降序排序,ASC规定按字段值的升序排序。上面语句仍用到了变量,因此必须在Variables处定义初值。在Name列输入变量名iCurrentSubID,在Default Value列处输入1作为该变量的默认值,即第3部分动态内容在默认情况下列出标记为1
14、的记录,和Run-Time Value列处的运行时值request.getParameter(”iSubjectID”) 。向这个变量传递参数的值同向第2部分动态内容传递参数的值相同。19.2.2 使新闻动态显示及时性是新闻的要素之一,必须使新闻动态显示在页面上。因此,建立了记录集后,开始向页面绑定动态数据。这一操作很简单,添加步骤如下。1. 向第1部分动态内容添加动态数据。添加动态数据的位置如图所示的两条粗线之间的表格中,也就是图中光标所在的位置。第1部分添加动态数据的位置2. 打开数据绑定监视器,单击记录集rsSubject前的”+”号,展开该记录集。选中fSubjectName字段,然后
15、把光标放在上图所示的表格中。3. 单击数据绑定监视器面板上的insert按钮,这样动态数据就添加到相应的位置了。4. 按照上面的步骤向第2部分和第3部分动态内容添加动态数据。把记录集rsCurrentSubject中的fSubjectName字段和记录集rsNews中的fTopic字段分别绑定到第2部分动态内容处和第3部分动态内容处。添加了动态数据的位置如图所示的 rsCurrentSubject.fSubjectName和rsNews.fTopic 的两个占位符。向第2、3部分添加动态数据的位置以上4个步骤,就把动态数据绑定到了动态新闻页news.jsp上了。19.2.3 完善新闻页建立了记
16、录集、添加了动态数据,还需要向页面添加以下4种服务器行为使该页完善起来。 添加Repeat Region服务器行为 使第1部分的新闻类别全部显示出来,使第3部分的新闻标题多条显示或全部显示出来。 添加Go To Detail Page服务器行为 根据第1部分的类别标题在第3部分显示不同类别的新闻标题。从新闻标题可进入具体新闻内容。 添加Show Region服务器行为 使新闻页news.jsp上的【没有新闻】只在没有新闻的情况下显示,若有新闻就使之隐藏起来。下面步骤就是为该页添加这些服务器行为。 添加Go To Related Page服器行为 以便从【更多新闻】跳转到具有更多新闻的页。 添加
17、Repeat Region服务器行为1. 把光标放在第1部分动态数据位置上的表格中,用鼠标单击文档窗口下方的标签。选中表格中的单元格。2. 这个表格只有1行1列,选标签和标签虽然看起来都一样,但选标签能够使新闻类别标题显示在一行上。在添加了Repeat Region服务器行为后,服务器端在执行与此服务器行为对应的程序时,就生成1个1行多列的表格HTML代码,每个单元格存放一个新闻类别标题。若选标签,则生成1个1列多行的表格。3. 打开服务器行为监视器。单击监视器面板上的”+”按钮,从弹出的菜单上选择Repeat- Region选项。4. 这时弹出对话框。在对话框的Recordset下拉列表中选
18、择与第1部分动态内容对应的记录集rsSubject,在Show处选择All Records单选框,即显示所有新闻类别标题。5. 用鼠标点击rsNews.fTopic占位符选中这个动态文本。按照步骤2、3添加Repeat Region服务器行为。在设置Repeat Region服务器行为对话框时,在Recordset处选择rsNews记录集,在Show处设置成显示5条记录。如图所示。Repeat Region服务器行为添加完毕。 添加Go To Detail Page服务器行为1. 选中rsSubject.fSubjectName占位符。2. 打开服务器行为监视器。单击监视器面板上的”+”按钮,
19、从弹出的菜单上选择Go To Detail Page选项。按图所示的进行设置。Recordset下拉列表中选择记录集rsSubject;Column下拉列表中选择fSubjectID字段。这时rsSubject.fSubjectName处多了一道下划线,而且用不同颜色的显示,表示是一个链接区域3. 同样的方法,用鼠标单击第3部分动态内容处的rsNews.fTopic占位符。为其添加动态链接。其Go To Detail Page行为对话框的设置如图所示。Recordset下拉列表中选择记录集rsNews;Column下拉列表中选择字段fNewsID4. 该链接所指向的页最好在新窗口中打开。因此,
20、还要对其属性设置一下。选中该动态文本。然后选择Window菜单下的Properties选项,打开属性浮动面板。单击Target右边的下三角选择 _blank 选项。如图所示。这样设置后,在浏览器点击此链接时,所链接的页将在新窗口中出现。在news.jsp页面上,可看到有一个【没有新闻】的字样。这个字样应该在没有新闻的情况下出现。因此,需要对【没有新闻】字样添加Show Reigion中的一个服务器行为。5. 选中该字样。单击服务器行为面板上的”+”按钮,从弹出的菜单上选择Show Region中的子项Show If Recordset Is Empty。6. 这时弹出设置该行为的对话框。设置如
21、图所示。对话框中的Recordset处一定选择rsNews,因为该服务器行为是针对记录集rsNews的news.jsp页面上还有一个【更多新闻】的链接。从这个链接能够看到更多新闻。设置链接需要为其添加一个Go To Related Page服务器行为,即转到相关页。这个行为能够向所跳转的页传递参数。从这个链接进入到相关页时,必须把该页的参数传递过去。使正浏览的动态新闻页的内容与所要转到的更多新闻页的列出的新闻内容保持一致。也就是说,如果正在浏览的新闻标题属于国内新闻,那么跳转到更多新闻页时,所列出的新闻标题仍属于国内新闻。在窗性窗口中设置的链接参数是传不过去的。因此,必须用此服务器行为。7.
22、打开服务器行为监视器,单击面板上的”+”按钮,选择Go To Related Page选项。8. 这时出现Go To Related Page行为对话框。按下图所示进行设置。Go To Related Page行为对话框9. 隐藏【更多新闻】字样。在前面已设置了一次显示5条新闻标题。如果某一类新闻总数少于5条或仅5条时,【更多新闻】字样就可隐藏起来。10. 首先选中【更多新闻】字样,转到代码窗口中,找到【更多新闻】字样。对【更多新闻】链接加上条件语句修改后的代码如下。 5 ) % A HREF=more.jsp?更多新闻 . 用rsNews_total 5 作为if语句的条件,即新闻多于5条时
23、显示【更多新闻】链接,rsNews_total是在定义记录rsNews时自动生成的变量,其值就是记录的总数。动态新闻页的服务器行为也就添加完了,该页也就制作好了。保存所做的工作。19.2.4 制作显示更多新闻页如果经常上网的话,就会经常见到【更多】字样的链接,以便显示更多同类相关内容,在本例中也使用了一个【更多新闻】的链接,经过这个链接能够显示所有同类新闻。这个链接的设置在上一节中已讲述,现在用同样的方法来添加一个此链接指向的页more.jsp。制作显示更多新闻页more.jsp只需在新闻页news.jsp的基础上添加一组导航链接,经过这个链接能够查看所有相关新闻。more.jsp页的制作与n
24、ews.jsp页的制作基本相同,只是比news.jsp页多加了两组动态导航链接。在news.jsp页的基础上,记录集的建立、数据的绑定、服务行为的添加已做好,现在要做的就是为该页添加两组动态导航链接。 添加两组动态导航链接1. 在站点文件窗口中,打开more.jsp文件。2. 现在为该页添加两组动态导链接。将光标放至图所示被选中的单元格中。向页面添加动态导航链接3. 单击Insert菜单,选择Live ObjectRecordset Navigation Bar。4. 这时弹出Recordset Navigation Bar对话框,记录集选择rsNews,并选择Images单选按钮。如图所示。
25、5. 然后把光标放在该表格的第1个单元格内,选择Insert菜单下的Live ObjectRecordset Navigation status选项。在弹出的对话框中注意选择记录集rsNews,如图所示。把导航状态修改成rsNews_first -rsNews_last /rsNews_total的样子。如图所示。页面导航状态也能够在新闻标题的下再添加一组导航按钮及状态条。在news.jsp页的基础上添加了两组动态链接后,显示更多新闻页的more.jsp就设计好了。19.2.5 显示新闻具体内容现在制作一个显示新闻具体内容的页。这个页的设计非常简单,只需定义一个记录集,绑定动态数据到页面就能够
26、了。 显示新闻具体内容1. 打开站点文件窗口中的showNews.jsp页。2. 打开数据绑定监视器,建立一个记录集。下图所示的就是建立该页记录集的对话框,按照图中所示设置参数。在SQL文本框中输入的SQL语句如下。SELECT fContentFROM tNewsWHERE fNewsID = iCurNewsID本语句是个SELECT语句,所描述的是根据WHERE子句的规定从表tNews中选取记录。WHERE规定了只选取字段fNewsID的值等于变量txtCurNewsID的值的记录。在定义这个记录集时用到了变量iCurNewsID,因此,还需要在Variables处的文本框中定义。在Na
27、me列处输入变量名iCurNewsID;在Default Value列处输入默认值1;在Run-time Value处输入request.getParameter(”fNewsID”)。这样该页就根据news.jsp页或者more.jsp页传过来的参数选取记录集。定义记录集对话框3. 建立了记录集之后,开始向页面绑定动态数据。展开记录集rsNewsDetail,选择fContent字段,单击数据绑定监视器面板下面的Insert按钮。这样就把所需要的动态数据绑定到页面上了。绑定该动态数据,不需定位页面中的位置。动态新闻页及相关的页已经完成了。保存所有的工作。19.3 导航页面新闻管理模块中各页面
28、可经过一个导航页面来调用。在管理新闻时,首先要调出导航页面,从导航页面进入管理新闻的各页面。这个导航页面的初始文件如图所示。 制作menu.jsp页1. 在站点文件窗口中打开menu.jsp文件。该页面中的【管理密码】与【管理类别】这两个链接为静态的,分别指向密码管理页PassMan.jsp和类别管理页SubMan.jsp。初始文件中已添加好了。2. 在【新闻】下面的表格中添加管理新闻具体内容的链接。这一项由多个链接组成,一个链接对应一个新闻类别,因为管理模块中有新闻类别的管理,管理类别能够添加类别或者删除类别,因此这一组链接要设置成动态的,在正行修改新闻类别时,也会动态变化。这个导航页面采用
29、了网页框架。框架的左边是网页文件menu.jsp,右边是管理模块的说明文件。在进入新闻管理系统时框架的左边调用的一直是menu.jsp,右边的框架首先调用welcome.htm文件进行说明一下新管理系统所管理的内容。需要这义一个记录集,所定义记录集的对话框如图所示。从表tNewsSubject中选取记录集,因为表tNewsSubject中存放的是新闻类别。最好把取得的记录设置成按fSubjectID的升序排序定义好记录集后,首先把字段fSubjectName绑定到【新闻】下面的表格中。3. 添加Go To Detail Pages服务器行为。在服务器行为监视器中打开该服务器行为对话框,在Det
30、ail Page处输入文件名newsMan.jsp。一定把字段fSubjectID的值作为参数传递到newsMan.jsp页。如图所示。4. 选中表格,添加一个Repeat Region服务器行为。按图所示进行设置。5. 保存文件。因为adm.html是个框架文件。需要选择File菜单下的Save All Frames选项进行保存。19.4 密码管理客户端的计算机只能访问到新闻发布系统的新闻内容,而对新闻的管理只能由新闻发布系统的管理员进行管理,不允许浏览者随便修改或添加新闻的内容。因此,新闻发布系统的管理模块必须设置一定的权限。能够为新闻管理系统设计一个密码管理页,为管理员修改密码用。 制作
31、密码管理页PassMan.jsp管理模块的密码存储在服务器端相应的数据表中。由于密码只能有一个,本页主要功能也就是修改密码,添加Update record服务器行为能够实现其功能。再添加一个Validate Form行为检验窗体对象中是否输入了密码。可按以下步骤添加两种行为。1. 在站点文件窗口中打开PassMan.jsp文件。2. 在新密码提交到服务器端前,还要在客户端验证一下Form中各窗体对象中是否输入了新密码,以及两次输入密码是否相同。因此首先要添加一个Validate Form服务器行为。选中Form,选择Window菜单下的Behaviors选项。打开Behaviors行为监视器。
32、PassMan.jsp3. 单击面板上的”+”按钮,从弹出的菜单上选择Validate Form选项,打Validate Form行为对话框。按图所示进行设置。4. 在添加了该行为后,还要对该行为所对应的程序代码进行修改。让其具有判断两次输入的密码是否相同的功能。5. 在HTML代码中找到与Validate Form行为对应的程序。添加下面的代码。 else if (test.charAt(0) = R) errors += - +nm+ is required.n; /手写代码,判断两次输入的密码是否相同/*手写代码开始 If (form1.txtNewPass.value! =form1.
33、txtPassAgain.value)errors+=两次密码输入不同!;Form1.txtNewPass.value=;Form1.txtPassAgain.value=;Form1.txtNewPass.focus (); /*手写代码结束if (errors) alert(The following error(s) occurred:n+errors); Document. MM_returnValue = (errors = );/-6. 修改数据表中的记录,所修改的是数据表中当前的记录。因此,首先要定义一个记录集。定义记录集时可按图所示的进行设置。要从数据表tNewsAdmin中取
34、得记录。数据表中的记录只有两个字段,保存用户名的fAdminName字段和保存密码的fAdminPass字段,要定义成选取所有的字段(All)7. 定义了记录集后,开始添加一个Update record服务器行为。打开Update record服务器行为对话框,按图所示进行设置。更新记录也就是更新记录中fAdminName字段的值与所定义的记录集中当前记录fAdminName字段的值相同的记录,fAdminName字段中的值在表中必须是惟一的。定义记录集的作用就是为更新记录提供条件。8. 更新表中的记录后,转到subMan.jsp页。在Form Elements处设置成fAdminPass字段
35、的值修改为窗体txtNewsPass中的值。所修改记录的fAdminPass字段的值应该是当前记录的fAdminPass字段的值19.5 新闻类别管理新闻类别管理包括对新闻类别的编辑、删除和新建类别,管理员也就是经过这3个操作来管理新闻类别的。19.5.1 主页面类别管理的主页面如图所示。管理员经过该页选择某一个操作,编辑、删除或新建类别,与这3个操作相关的页分别是SubEdit.jsp页、SubDel.jsp页和SubAdd.jsp页,而SubEdit页和SubDel页所进行的具体操作是根据由类别管理的主页面传递过来的参数来判断编辑或删除表中的哪一条记录。主页面应把所有新闻类别列出来。编辑管
36、理类别的主页面所进行的操作就是在给出的静态页面的基础上定义记录集和添加几种服务器行为。1. 首先在站点文件窗口中打开SubMan.jsp文件。2. 定义记录集,向页面绑定动态数据。定义记录集就是从表tNewsSubject中取出记录,动态地显示所有新闻类别。定义记录集时,选取字段的项设置成选取所有的字段,显示记录的顺序设置成按fSubjectID字段的升序排序。记录集的名最好取成rsSubject。设置好的记录集对话框如图所示。绑定动态数据。只需把记录集rsSubject中的fSubjectName字段和fSubjectID字段分别绑定到SubMan.jsp页面上表中【类别】列处和ID列处。3
37、. 添加Go To Detail Page服务器行为。把页面中的编辑操作和删除操作分别设置成动态链接,并向该链接所指向的页传递参数。设置该动态链接需要添加Go To Detail Page服务器行为。为【编辑】操作设置动态链接时的Go To Detail Page服务器行为对话框如下图所示。4. 为【删除】操作设置动态链接时添加Go To Detail Page服务器行为,与【编辑】操作所不同的是Detail Page处的文本框中输入subdel.jsp文件名。5. 添加Repeat Region服务器行为。添加Repeat Region服务器行为,使新闻类别全部显示出来。选中表格中的第1行。
38、如图所示。选中表格中的第1行6. 添加Repeat Region服务器行为时设置成显示所有新闻类别。如图所示。Repeat Region服务器行为对话框7. 为【新建类别】添加链接。该链接不需向所指向的页传递参数,在属性浮动面板中就能够完成。设置该链接的属性浮动面板如图所示。8. 执行了编辑、删除或新建类别之后,应该刷新menu.jsp页,即框架的左边导航部分。单击页面下面的body标签 ,选中页面的所有内容。单击行为监视器中的”+”按钮,从弹出的菜单上选择Call JavaScript选项。设置链接的属性浮动面板9. 在弹出的对话框中输入window.parent.left.location
39、=menu.jsp。如图所示。Call JavaScript对话框类别管理的主页面也就设置完了。19.5.2 编辑新闻类别编辑新闻类别页SubEdit.jsp的主要功能就是修改相应表中的某一个记录。该页添加了所需要的行为后的样式如图所示。SubEdit.jsp文件 制作”编辑新闻类别”页面1. 添加Validate Form行为。添加Validate Form行为的目的是把修改后的类别在提交给服务器之前验证窗体对象中是否有内容。只有窗体对象中不为空,才能把修改后的结果提交到服务器端对相应的数据表中的记录进行修改。如图所示进行添加该行为。2. 定义记录集。编辑新闻类别就是对存储新闻类别的数据表中
40、的记录进行修改,需要用Update Record服务器行为,添加该服务器行为的前提要定义一个记录集。按下图所示进行定义记录集。定义该记录集需要设置取得记录的过滤器,就是根据从管理类别的主页面SubMan.jsp传过来的参数进行选取记录集。3. 定义完记录后,分别把fSubjectID字段和fSubjectName字段绑定到Form中的类别ID和类别处。绑定后如图所示。4. 添加Update Record服务器行为。设置Update Record服务器行为对话框如图所示。Unique Key Column下拉列表中选择fSubjectID字段作为修改表tNewsSubject 中某一个记录的依据
41、,fSubjectID字段的值在表tNewsSubject中是惟一的19.5.3 新建新闻类别新建新闻类别在服务器端所进行的操作就是向表tNewsSubject中插入一条记录。因此完成该页需要添加2个行为:一个是用来在客户端验证窗体对象中是否有内容的Validate Form行为;一个就是用来向表tNewsSubject中插入记录的Insert Record服务器行为。样式如图所示。设计好的SubAdd.jsp文件1. 按下图所示进行添加Validate Form行为。 注意把用来输入新闻类型编号的窗体对象设置为数值型(Number)2. 按下图所示进行添加Insert Record 服务器行
42、为。在设置该对话框时注意Form Elements处的数据类型要匹配,以及所插入记录的数据表。Insert Record服务器行为对话框19.5.4 删除新闻类别删除新闻内容在服务器端所进行的操作就是删除相应数据表中的某些记录。该文件在执行时是不可见的。所完成该页需要定义一个Prepared完成对数据库的删除操作。1. 新建一个文档窗口,以Subdel.jsp保存该文件。2. 定义Prepared。打开服务器行为监视器,单击面板上的”+”按钮,从弹出的菜单中选择Prepared(Insert,Update,Delete)选项,打开定义Prepared对话框。按图所示进行定义。在SQL处输入的语
43、句如下。DELETE FROM tNewsSubject WHERE fSubjectID = iSubID这个语句描述的是根据WHERE子句的规定来删除表tNewsSubject中的记录,而变量iSubID的值是从类别管理的主页面中传过来的。当然,还需要在Variables处定义iSubID变量。在Name处输入iSubID,在Run-time Value处输入request.getParameter(”fSubjectID”)。3. 最后转到代码窗口中,在页面的最后加上一条语句:response.sendRedirect(subMan.jsp);使之执行操作后转到类别管理页。如下。19.6
44、 在线更新新闻发布系统的内容每天都要更新,在线更新主要是新闻的内容进行更新。更新的具体操作就是编辑新闻、删除新闻和添加新闻。在线更新所对应的网页文件包括新闻管理页newsMan.jsp、添加新闻页newsAdd.jsp和删除新闻页newsDel.jsp。newsMan.jsp页在浏览器中浏览的样式如图所示。从图中可看出,newsMan.jsp页的顶部显示当前新闻内容的类别,新闻类别的下面就是当前新闻类别的标题,从新闻标题右面的操作项能够对新闻具体内容的删除或添加,下方的文本框就是对某一新闻标题所对应的具体内容进行编辑。为了对本页更清晰地讲解,把新闻内容管理页NewsMan.jsp分成3部分讲述,显示当前新闻标题、显示当前新闻内容和编辑新闻内容。新闻内容管理页面19.6.1 显示当前新闻类别1.