黄旭 王刚龙
(广州海洋地质调查局 广州 510760)
第一作者简介:黄旭,女,1974年生,广州海洋地质调查局信息资料所网络室,工程师。
摘要 本文阐述了由我局开发的基于B/S 模式的网站动态信息发布系统,描述了系统的基本模块和功能。此系统利用JavaBean组件技术集成程序代码,采用JDBC进行Web数据库访问,并给出了系统实现的一些关键性的代码。
关键词 JSP B/S 模式 动态信息发布系统 JavaBean
广州海洋地质调查局的国际互联网站于2003年建立,作为对外树立单位形象、展示我局最新科研成果、先进技术设备和手段的一个重要窗口。目前我局的互联网网站图文信息发布采用传统的手工制作网页的静态信息发布模式。这种模式工作效率低,动态信息的时效性无法体现,给网络信息内容审核及管理带来诸多不便。这不利于发挥网站的作用。动态图文信息发布系统的研制目的是提高网站动态图文信息发布的自动化程度和工作效率,免去了烦琐的网页制作过程,使不懂得网页制作的人员也能进行网站动态信息内容更新,方便信息审核及管理。
作为一种成熟的动态网页开发技术,JSP是由SunMicrosystems公司倡导,许多公司参与一起建立的一种动态网页技术标准。JSP技术具有以下特点:①适应平台的广泛性,②较好的安全性,③组件开发的方便性[1]。考虑以上因素,在开发网站动态信息发布系统过程中我们采用了JSP技术。
1 系统结构模式
本系统是基于B/S(BroWser/Web Server)模式进行开发的,具体来讲,采用如图1所示的三层次体系结构[2],包括:①表示层;②逻辑层;③数据层。
其中,表示层是互联网动态信息发布系统的用户接口部分,是实现用户与应用逻辑处理结果的交互界面,也是用户与Internet之间交互信息的窗口,由浏览器构成。逻辑层完成与信息发布系统有关的所有的事务逻辑,Web服务器是该层中的重要组成部分,它根据客户端的请求启动相应的进程来完成有关的事务处理,并将处理结果以HTML代码的形式,发送给客户端浏览器。信息发布系统主要由客户端浏览器、单位网站、信息发布系统和数据库四大部分组成(图2)。本系统采用Tomcat 5.0.28 作为JSP引擎嵌入到Web服务器,在该层中,为提高执行效率和安全性[3],通过JavaBean实现与数据库的连接。数据层是由数据库服务器所构成,它主要提供数据管理,对数据库数据进行读写,能够执行大量的数据的更新和检索,完成数据存储。本系统采用的数据库服务器是SQLServer2000。
图1 三层体系结构
Fig.1 Three tiers
图2 信息发布系统的四个部分
Fig.2 The four parts of the system of information publishing
2 系统基本功能模块
考虑到实际要求,设计了如图3所示的基本功能模块。下面就其中的主要模块进行功能分析。
2.1 系统登录
在系统登录模块中,主要是用于检验登录系统用户身份的合法性,并根据用户的身份动态定向到不同的页面,使得不同身份的用户具有不同的 *** 作权限。
2.2 新闻信息管理模块
主要用于用户进行新闻信息的发布、编辑、查看和审核等 *** 作。包括如下的基本 *** 作:
1)一级菜单 对前台显示的主菜单进行管理。
2)二级菜单 显示用户在后台已经发布的新闻信息,并提供让用户根据权限查看、编辑及删除已发布的信息的功能。
3)发布新闻 实现新闻信息的输入、编辑及预览和图片的上传等功能。
4)审核新闻 让审核权限的用户对新闻信息进行审核、编辑。
图3 信息发布系统的模块
Fig.3 The module of the information publishing’s system
2.3 用户管理模块
主要提供让管理员对用户信息、新闻信息进行基本维护和管理。
1)添加用户 用于管理员添加新用户并设置用户的权限。
2)查看/删除用户 用于管理员对已有用户进行管理。
3)更改用户密码 提供让用户修改初始密码的功能。
4)新闻统计 系统可按照相应的要求形成一个新闻信息发布统计表。
3 详细设计
3.1 系统平台的构建
J2 SDK是Java2的软件开发工具,是Java应用程序的基础。JSP是基于Java技术的,所以配置JSP环境之前必须要安装J2 SDK。本系统采用Tomcat作为JSP引擎。在软件安装完成后都要进行环境变量的配置。
3.2 采用JDBC技术实现数据库连接
数据库连接对动态网站来说是最为重要的部分,Java中连接数据库的技术是 JDBC(Java Database Connectivity),是一种用于执行SQL的Java API,由一组用Java语言编写的类和接口组成,它为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java API语言编写完整的数据库应用程序[4]。在开发中,我们采用JavaBean来对数据库连接和执行SQL语句等通用数据库 *** 作进行封装,避免直接对数据库进行 *** 作带来的工程浩大,代码过长,不易维护。同时为了节省时间和资源,避免因采用传统连接模式而导致数据库重启,我们采用了数据库连接池技术。主要代码如下:
Connection conn=null;
Statement stmt=null;
Resu1tSet rs=null;
Try
{
C1ass.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);//加载sql驱动程序
conn=DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=gmgs”,user=“root”,PassWord=“”);//创建连接
stmt=conn.createStatement(Resultset.TYPE SCROLL SENSITIVE,Resultset.CONCURREAD_ONLY);
String sql=“select * from art Where id=ˊ”+id+“ˊ”;
Resu1tSet rs=sqlbean.eXecuteQuery(sql);//执行sql语句
⋯
}
conn.close();//向连接池归还连接[5]
3.3 利用JavaBean 访问数据库
JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象。JavaBean被组织成为Package(数据包)以便进行管理,实际上就是把一组JavaBean一起放在某某目录中,每个类的定义前加上Package某某。把经编译成类的文件放在JSP服务器的特定目录下[6]。
在JSP中使用JavaBean需要以下步骤:
1)定义JavaBean 组件,将一组 JavaBean一起放在某个目录下,每个类的定义前加上Package,生成.java文件;
2)将定义的类用JDK的Javac命令编译生成.class文件的JavaBean类文件;
3)在JSP文件中调用JavaBean。方法如下:
设置要引用的JavaBean,生成JavaBean的一个实例,用<jsp:useBean>标记来完成。实例化一个JavaBean,就可以访问它的属性。通过使用<jsp:getproperty>标记来获得属性值,使用<jsp:setproperty>标记来改变JavaBean属性值[7]。
如:要完成用户注册功能,先定义一个名为 op user.java的JavaBean组件,它用add()方法将表单中用户填写的信息添加到数据库表user中,如果添加成功则返回true,否则返回false.在实现用户注册功能的页面register.jsp调用这个JavaBean,代码如下:
<jsp:useBean id=”user”scope=“Page”class=“gmgsinfo.run.op user”/>
//实例化
gmgsinfo.run.op user,在当前JSP页面内查找该JavaBean的标识符是user
if(user.add(request))//直接使用add()方法,用request对象为参数
⋯⋯
3.4 数据库描述
数据库共设计五个数据表。
管理员表字段包括管理员账号、密码、管理员名、所属部门、电话、权限。
审核表字段包括是否审核。
栏目表字段包括栏目名称。
新闻表字段包括新闻标题、所属栏目、副标题、是否审核、新闻作者、新闻发表人、添加时间、修改时间、所属部门、新闻内容、是否包含图片、审核人。
部门表字段包括部门名称。
3.5 程序描述
3.5.1 用户管理
信息发布系统的用户主要有三类:系统管理员、审核员和普通维护员。添加用户的流程是首先输入一个用户名,然后调用数据库确定该用户名没有被使用,其次填写用户信息表,设置用户的初始密码和权限,最后将用户信息写入数据库。用户登录的流程是用户提交登录表单后,需要调用数据库来判断该用户的账号与密码是否正确。如果正确则将用户名记录到Session对象中,如果不正确则返回登录界面重新登录。如果登录用户是系统管理员,将进入管理员用户界面;如果是普通用户将登录普通用户界面。用户登录后可以更改初始密码,修改后的信息将重新写入数据库。新闻统计表单是将已发表的新闻按照质量记录的要求以表格的形式显示出来,用户可直接通过打印机打印出来。
3.5.2 新闻信息管理
一级菜单表单是对在网站首页显示的主菜单进行管理。用户可以增加需要在首页显示的主菜单。二级菜单表单将用户在系统内发表的新闻全部显示出来。包括新闻标题、发表时间、所属上级菜单、新闻发表人、是否审核。用户可点击新闻标题预览新闻,可以修改或删除自己发表的新闻。当用户点击修改或删除选项时,系统将根据保存在Session对象中的用户名来调用数据库中该用户信息,判断该用户是否拥有权限。如果拥有权限则允许用户修改或删除该条新闻,否则系统将提示用户没有权限。在发表新闻表单中,用户只需在相应的文本框中输入信息,系统将自动生成网页并将信息保存到数据库中。其中文章内容栏是一个简易的网页编辑器,用户可对输入的新闻信息进行编辑。用户可通过上传图片选项将网页中的图片上传到数据库中。在新闻输入完成后,用户可以网页形式预览发表的新闻。在审核新闻表单中拥有审核权限的用户可对已发表的新闻进行审核,编辑新闻内容并重新保存到数据库。如果新闻已经通过审核,将显示在网站的首页。
3.6 系统流程分析
当用户登录到该系统,通过系统验证后,系统会自动将用户基本信息及用户权限信息保存在服务器端,此时,如果用户有相应的权限就可以进行用户及权限管理、栏目管理,以及信息发布、信息审核等 *** 作。
对于普通用户,登录进入系统后可以选择进行上述 *** 作。当用户选择某个模块并对其进行 *** 作时,系统将查询服务器端保存的该用户权限,验证合格后,系统把相应的信息或功能页面显示给用户,用户可以根据自己的权限对所浏览内容进行添加、编辑和删除 *** 作。如果用户需要发布信息,可点击发表新闻模块,在相应的标题栏中输入信息,将要发布的内容输入到文章内容栏中,系统将调用相应的模版形成网页。用户点击确定就可以预览刚刚制作的网页。若权限验证不合格,表示用户没有相应权限,系统将d出警告信息告知用户不能进行该 *** 作,确认警告信息后并不影响该用户继续进行其他有权限的 *** 作。
当用户以管理员身份进入系统后,系统默认管理员具有对于该系统维护、管理的最大权限,即管理员可以进行用户管理、用户角色管理、用户权限管理以及发布信息、文章管理、审核信息等 *** 作。每个用户都可以拥有多个角色,也就是说每个用户可以拥有多种权限。
4 结束语
JSP承袭了Java面向对象的程序语言能力和跨平台的优势,并能够与HTML紧密结合,与传统的CGI程序相比,JSP不仅编写、执行容易,也大幅度提高了系统的执行性能,提高了信息审核、发布和管理的工作效率。
参考文献
[1]任艳.应用JSP 进行数据库信息发布.计算机工程与应用,2002,38(7):212~214,249
[2]Marty Hall,Larry Brown.Servlet与JSP核心编程(第2版).北京:清华大学出版社,2004,(6)
[3]屈霞.基于JSP的数据库应用程序安全访问控制设计.电脑开发与应用,2005,18(6):15~16,19
[4]孙敏.JSP连接数据库方法探讨.电脑知识与技术,2005,3:21~22
[5]李兴锋,王移芝.基于JSP的Web动态数据库交互技术的探讨.计算机应用与软件,2005,22(4):26~27,127
[6]李媛,刘涤尘.一个使用JavaBeans连接数据库的JSP应用.2005,12(1):77~80
[7]孟宪虎,沈均毅.WEB数据库应用程序安全性设计的一种实现.计算机工程与应用,2002,9:119
The Dynamic Information publishing System Web of Guangzhou Marine Geological Survey Based on JSP
Huang Xu Wang Ganglong
(Guangzhou Marine Geological Survey,Guangzhou,510760)
Abstract:the article introduces the dynamic information publishing system,Which is based on B/S model and designed by the gmgs,describes the basic module and function of the system.The system uses the JaveBean techique to integrate the program code,uses the JDBC to access the Web database,and offers the key code of the system’s realizing.
Key Words:JSP B/S model The dynamic information publishing system web JavaBean
这样写就行只是代码太多,页面中尽量不要使用java代码,就像一楼说的,学学JavaBean......如果是初学的话SSH就不要学了,导入JSTL包,用C标签就可以了,很简单去网上查查就好,如果以后学SSH的话Structs自带的标签也很好用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)