最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

门户网站设计与实现

来源:动视网 责编:小OO 时间:2025-10-04 18:29:38
文档

门户网站设计与实现

门户网站设计与实现中文摘要门户网站,是在各部门的信息化建设基础之上,建立起跨部门的、综合的业务应用系统,使公民、企业与工作人员都能快速便捷地接入所有相关部门的业务应用、组织内容与信息,并获得个性化的服务,并遵循"精简、统一、效能"的原则,转变职能,建立行为规范、运转协调、公正透明、廉洁高效的行政管理。本文对基于Web的门户网站的设计与实现进行了研究。首先阐述了门户网站的重要地位、发展趋势、新时期的一些主要特点等理论知识,分析了建立了基于Web的门户网站的
推荐度:
导读门户网站设计与实现中文摘要门户网站,是在各部门的信息化建设基础之上,建立起跨部门的、综合的业务应用系统,使公民、企业与工作人员都能快速便捷地接入所有相关部门的业务应用、组织内容与信息,并获得个性化的服务,并遵循"精简、统一、效能"的原则,转变职能,建立行为规范、运转协调、公正透明、廉洁高效的行政管理。本文对基于Web的门户网站的设计与实现进行了研究。首先阐述了门户网站的重要地位、发展趋势、新时期的一些主要特点等理论知识,分析了建立了基于Web的门户网站的
门户网站设计与实现

中文摘要

 门户网站,是在各部门的信息化建设基础之上,建立起跨部门的、综合的业务应用系统,使公民、企业与工作人员都能快速便捷地接入所有相关部门的业务应用、组织内容与信息,并获得个性化的服务,并遵循"精简、统一、效能"的原则,转变职能,建立行为规范、运转协调、公正透明、廉洁高效的行政管理。

 本文对基于Web的门户网站的设计与实现进行了研究。首先阐述了门户网站的重要地位、发展趋势、新时期的一些主要特点等理论知识,分析了建立了基于Web的门户网站的必要性和可行性,然后对门户网站进行了需求分析和系统设计,探讨了门户网站的开发方案和实现技术。

 论文给出了基于Web的门户网站设计与实现的基本方法,并介绍了相关的技术,如:JSP、sqlserver2000、HTML、eclipse等。该门户网站分为前台和后台,并进行了模块分类,主要包括人员管理、政务工作管理、新闻要点管理、招聘信息管理、留言簿管理等模块并添加了搜索功能。

 门户网站不仅能提高日常工作的效率,而且能够使得工作公开化,并且能够收集到人民群众的意见,为工作的进一步开展起到了重要的作用。

 关键字:WEB、JSP、SQLSERVER2000、后台管理、搜索

Abstract

 Government Portal, is in various government departments on the basis of the information system, establish a cross-functional, integrated business application systems, so that citizens, enterprises and Government staff can quickly and easily access all relevant government departments for business applications, content and information, and get personalized service, and follow the "thin, unified, efficacy" principle, changes of government functions, the establishment of norms, coordinate, fair, transparent, clean and efficient administrative management system. 

 This article on a Web-based Government Portal of the design and implementation. First described the importance of the portal site, trends, new era, some of the major features of theoretical knowledge, analysis of establishing a Web-based portal of the Government of the necessity and feasibility, and then on Government Portal for requirements analysis and system design, explores Government Portal of development scenario and implementation techniques. 

 Papers gives the Government Portal based on Web site design and implementation of the basic method, and describes related technology, such as sqlserver2000, JSP, HTML, eclipse, etc. The portals is divided into the foreground and background, and a module, including government staff management, administration management, key management news, career management, guestbook management module and add the search functionality.

 Government Portal site can not only improve the efficiency of the Government to work together on a daily basis, and will make the Government work going public, and to gather the people, for the further work has played an important role. 

Keywords: WEB, JSP, SQLSERVER2000, Admin, search

第1章  绪论

1.1  项目背景

 门户网站是各级、各类机构最生动的形象和最鲜明的旗帜。而同时信息化是整个社会信息化的前提和基础,信息化必须率先垂范,进而带动整个社会的信息化进程。

 现阶段出现了一些关系群众切身利益的问题,比如:相关的帮扶优惠;相关的办事程序等,部分群众不知道以至于没有得到相应的扶持或者是需要帮助时不知道该找谁。为了帮助人民群众更加方便的获取信息、提高办事效率。一个信息门户网站就显得很有必要了。其中政务公开和意见征集模块,更是方便了群众反映自己的想法。

 门户网站近年来已得到了普及。但是由于我国信息化起步较晚,目前的网站还存在一些不可忽视的问题:政务公开不够充分、信息不够丰富、信息采集困难、应用水平偏低、等情况,主要表现在:

各职能信息系统的信息无法在同一平台实现共享,大多是各自的信息孤岛; 

门户网站缺乏更实质性的有效服务社会的功能运用;

难以与各级机构内部形成有机结合,无法建立动态的应用模式;

功能不健全,信息更新不及时,缺乏交互性;缺乏统一规划,建设和管理不规范;

系统标准化与开放程度较低,负荷重、维护困难等问题层出不穷。

1.2  开发目的

 此项目重点在于通过门户网站开发的实战,研究基于Ajax和java技术开发Web应用的流程,而对门户网站相应的功能以及要达到的效果并没有很高的要求。本人仅仅只是在自己能力范围内,基于前面所诉门户网站相关背景,再结合相关的技术:JSP、WEB、数据库等,通过门户网站的设计与实现,研究了现阶段最新、应用最普遍的网站开发技术。

 开发信息门户网站的目的是不断提高行政、服务和管理方面的效率,充分利用网络为公众社会提供优质服务,推动和加速整个社会的信息化发展。表现在如下方面:

利用先进的网络技术和信息技术,逐步实现信息化,提高的运行效率;

建立完善的政务公开和服务系统,更好的为服务于民众,树立良好的形象;

通过互联网实现各级机构或职能部门的数据、信息交换平台,提高工作效率;

整合信息资源,建立信息资源库;

统一规划、资源共享,信息门户网站及其子网站群将成为展示整个城市形象的窗口。

 本文重点在于引导读者进行实际的开发,从初学者的角度,一步一步指导读者,避免读者被困在细节问题上。比如我之前遇到的几个问题:软件版本不兼容;环境变量配置不正确;连接数据库不成功等,这些细节问题在文中也会有介绍。

第2章  技术准备

2.1  JSP介绍

 JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。 用JSP开发的Web应用是跨平台的,具有java程序一处编写,到处运行的优点,既能在Windows下运行,也能在其他操作系统上运行。

2.1.1  JSP内置对象

request对象

 该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。

其常用方法有:

getParameter();setAttribute();getAttribute();

removeAttribute();getMethod();getProtocol();

getReqeustURI();getRemoteAddr();

getServerPort();getServerName();

response对象

 对象的作用是,当客户端发送请求时,对客户的请求做出动态的响应,想客户端发送数据。

session对象

 对象在第一个JSP页面被装载时就自动创建,完成会话期管理。会话期指从一个客户开发浏览器并连接到服务器开始,直到客户关闭浏览器离开这个服务器结束。session对象的作用就是标记客户,即使客户在服务器的几个页面反复连接,服务器也知道它是同一个客户。

application对象

 服务器启动后就产生了这个application对象,当客户在所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

out对象   

 对象是一个输出流,用来向客户端输出各种数据。

2.1.2  JSP的技术方法

将内容的生成和显示进行分离

 页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容,并将结果以HTML或者XML页面的形式发送回浏览器。这不仅有利于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。

可重用组件

 绝大多数JSP页面依赖于可重用的、跨平台的组件来执行应用程序所要求的复杂的处理,开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者和客户团建所使用。

采用标识

 页面开发人员不会都是熟悉脚本语言的编程人员,JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的HTML标识中进行动态内容生成所需要。标准的JSP标识能够访问和实例化JavaBeans组件设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。

适应平台

 目前来说,几乎所有的平台都支持Java,而JSP拥有Java的跨平台特性,几乎可以在所有平台下通行无阻,从一个平台移植到另外一个平台时,不需要重新编译就能够运行。

数据库连接

 中连接数据库的技术是JDBC,Java程序通过JDBC驱动程序与数据库相连,执行查询、修改、删除等数据操作,JSP技术组成的一部就是Java技术,因此能够支持高度复杂的基于Web的应用。

2.1.3  JSP经典设计模式

 网站开发技术标准给出了两种使用JSP的方式:模式一和模式二。

 模式一:

 就是指JSP + JavaBean技术,在该模式中,JSP页面响应请求并将处理结果返回给客户,所有的数据库操作和复杂业务的逻辑操作都通过JavaBean来实现,该技术实现了页面的表现和页面的想也逻辑相分类,如图2.1所示:

图2.1  模式一系统结构

 模式二:

 就是指MVC模式,即“Model-View-Controller”模式。该模式充当了控制器(Controller即“C”)的角色,Servlet负责响应客户对业务逻辑的请求,并根据用户的请求行为决定调用的JSP页面。JSP页面处理表示层,也就是视图(View即“V”)的角色,JavaBean负责数据的处理,也就是模型(Model即“M”)的角色。如图2.2所示:

图2.2  模式二系统结构

2.2  JDBC简介

 是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。JDBC为工具和数据库开发人员提供了一个标准的API,他们能够用纯Java API来编写数据库应用程序。

 是一种规范,它让各数据库厂商为Java程序员提供标准的数据库访问类和接口。简单地说,JDBC的功能有三个方面:与数据库建立连接、发送SQL语句和发送处理结果。JDBC API既支持数据库访问的两层模型,也支持三层模型。

 在两层模型中,Java applet或应用程序将直接与数据库进行对话。这需要一个JDBC驱动程序来与所访问的特定数据库管理系统进行通信。用户的SQL语句被送往数据库中,其结果被送回给用户。其中用户的计算机为客户机,提供数据库的计算机为服务器,称为客户机/服务器配置。

 在三层模型中,命令先是被发送到服务的中间层,然后由它将SQL语句发送给数据库,数据库对SQL语句进行处理并将结果送回到中间层,中间层再将结果送回给用户,这种模型称为三层式结构。

2.3  WEB介绍

2.3.1  基本介绍

超文本(hypertext)

 一种全局性的信息结构,它将文档中的不同部分通过关键字建立链接,使信息得以用交互方式搜索,它是超级文本的简称。

超媒体(hypermedia)

 超媒体是超文本(hypertext)和多媒体在信息浏览环境下的结合,它是超级媒体的简称。用户不仅能从一个文本跳到另一个文本,而且可以激活一段声音,显示一个图形,甚至可以播放一段动画。

 就是一种超文本信息系统,Web的一个主要的概念就是超文本连接,它使得文本不再像一本书一样是固定的、线性的,而是可以从一个位置跳到另外的位置、可以从中获取更多的信息、可以转到别的主题上。想要了解某一个主题的内容只要在这个主题上点一下,就可以跳转到包含这个主题的文档上。正因为它的这种多连接性,所以我们把他它称为Web。

超文本传输协议(HTTP)

 超文本在互联网上的传输协议。

2.3.2  Web的特点

Web是图形化的和易于导航的(navigate)

 Web 非常流行的一个很重要的原因就在于它可以在一页上同时显示色彩丰富的图形和文本的性能,在Web之前Internet上的信息只有文本形式。Web可以提供将图形、音频、视频信息集合于一体的特性。同时Web是非常易于导航的,只需要从一个连接跳到另一个连接,就可以在各页面各站点之间进行浏览了。

Web与平台无关

 无论你的系统平台是什么,你都可以通过Internet访问WWW。浏览WWW对你的系统平台没有什么,无论从Windows平台、UNIX平台还是别的什么平台我们都可以访问WWW。对WWW的访问是通过浏览器(browser)软件来实现的。

Web是分布式的

 大量的图形、音频和视频信息会占用相当大的磁盘空间,Web可以把各种信息资源放在不同的站点上,只需要在浏览器中指明这个站点就可以了。从用户来看这些信息资源是一体的。

Web 是动态的

 最后,由于各Web站点的信息包含站点本身的信息,信息的提供者可以经常对站上的信息进行更新,所以Web站点上的信息是动态的。

Web是交互的

 Web的交互性首先表现在它的超连接上,用户的浏览顺序和所到站点完全由他自己决定。其次,通过FORM的形式可以从服务器方获得动态的信息,用户通过填写FORM可以向服务器提交请求,服务器可以根据用户的请求做出响应并返回相应信息。

2.3.3  工作原理

 当你想进入万维网(WWW)上的一个网页,或者其他网络资源的时候,通常你要首先在你的浏览器上输入你想访问的网页的URL(统一资源定位符),或者通过超链接方式链接到那个网页或网络资源。这之后的工作分为几步:

 首先:Web接收到页面请求后,将请求的URL地址在域名系统中进行解析,并根据解析结果决定将要访问的IP地址(IP address)。 

 其次:向解析出的IP地址工作的服务器发送一个HTTP请求。在通常情况下,HTML文本、图片和构成该网页的一切其他文件很快会被逐一请求并发送回用户。

  再次:通过浏览器把HTML、CSS和其他接受到的文件所描述的内容,加上图像、链接和其他必须的资源,显示给用户。这些就构成了你所看到的“页面”。

2.4  数据库语言SQL

2.4.1  SQL概述

 (Structured Query Language,结构化查询语言)是一个被广泛采用、适用于关系数据库访问的数据库语言工业标准。它包括数据定义、数据操作、数据查询、数据控制等语句标准。

 数据定义:用于定义数据模式;

 数据操作:用于对数据库中的数据进行增加、删除、修改等操作;

 数据查询:用于从数据库中检索数据;

 数据控制:用于控制数据库用户的访问权限。

2.4.2  主要的SQL语句

查询语句SELECT

 是SQL的核心语句,它功能强大,和各类SQL子句结合可完成多种复杂的查询操作。其语法格式如下:

SELECT  [ ALL | DISTINCT ]  fields_list

 … ]

 …]

 … ]

 … ]

其中各关键字含义如表2.1所示:

表2.1  关键字解释

ALL选择符合条件的所有记录,为语句默认值
INTO将查询结果放入指定新表中
DISTINCT省略去选择字段中包含重复数据的记录
fields_list用“,”隔开的字段名列表,用于列出需要查询的记录字段,可用“*”代替所有字段

FROMSQL子句,用于指定SQL语句所涉及的表(table)

table_namesSELECT语句所涉及的表(table)名,用“,”隔开 

WHERESQL子句,用于指定查询结果应满足的条件

GROUP  BY
HAVINGSQL子句,指定查询结果分组后需要满足的条件,只有满足条件的分组才会出现在查询结果中

ORDER  BYSQL子句,指定查询结果按哪些字段排序,是升序(ASC)还是降序(DESC)

插入数据语句INSERT

INSERT可添加一个或者多个记录到一个表中,INSERT有两种语法形式:

1、INSERT  INTO  target [ IN  exeternaldatabase ]( fields_list )

{ DEFAULT  VALUES | VALUES ( DEFAULT | expression_list) }

 、INSERT  INTO  target [ IN  exeternaldatabase ]( fields_list )

  … | EXECUTE… }

其中部分关键字含义如表2.2所示:

表2.2  关键字解释

target想要追加记录的表(Table)或视图(View)的名称

exeternaldatabase外部数据库的路径名和名称
expression_list需要插入的字段值表达式列表,其个数应与记录的字段个数一致
删除数据语句DELETE

 用于从一个或多个数据表中删除记录。其语法格式如下:

 … ]

更新数据语句UPDATE

 语句用于更新表中的记录,其语法格式如下:

 … ]

 … ]

其中部分关键字含义如表2.3所示:

表2.3  关键字解释

field需要更新的字段
expression要更新的字段的新值表达式
2.5  HTML简介

 网页是用超文本标记语言HTML(Hypertext  Markup  Language)编制的文档,由浏览器解释并显示在用户浏览器的窗口中。HTML是一种简单、通用的标记语言,可以用其制作包含图像、文字、声音等精彩内容的网页。

 在HTML文档中,字符和数据的语法结构是通过标记来标识的,标记是HTMLuiu的标签符号和用标签符号构成的各种元素的统称。标签是描述性的标记,对一对< >中间包含若干字符表示,通常成对出现,前一个的起始标签,后一个是结束标签。例如:

<:HTML文档开始标签

 …                            

<:HTML文档结束标签

HTML语言中的标签符号是大小写不敏感的。

第3章  系统分析

3.1  需求分析

 对于人民群众,随着生活水平的不断提高,人们对于部分的相关工作的关注度也在不断的提高,对于相关的法律法规、政务工作等的公开性的要求也进一步加强,因此,作为形象的门户网站已成为必须。

对于部门,在Internet不断发展的信息时代社会,信息技术使社会的各个领域都发生了翻天覆地的变化,每个部门都必须紧跟时代的步伐,加强自己的竞争力和提升现代化管理能力,以适应整个社会的发展变化。因此办公信息化、自动化已经成为各部门所追求的目,并通过门户网站来实现。

通过对一些典型门户网站的考察、分析。并结合自己技术水平,本网站需要具有一下功能:

统一友好的操作界面,保证系统的易用性;

强大的友情链接和各类信息发分类,方面用户查询所需信息;

通过前台能够对人员信息、新闻要点等方便的进行访问;

留言簿功能,提供匿名留言并且能够查看留言记录;

能够提供用户搜索相关的信息;

管理员登录后台后需要能够管理人员信息、新闻要点、留言板等,实现数据的添加、删除、修改等功能。

为了系统的可靠性与安全性,管理员在后台还应可以备份整个数据库信息。

3.2  可行性分析

 门户网站是我国各级机关履行职能、面向社会提供服务的官方网站,是机关实现政务信息公开、服务企业和社会公众、互动交流的重要渠道。同时门户网站满足了通过网站前台展示当地特色文化、旅游景点、工业建设情况、新闻要点、招聘信息以及意见征集等服务,方便了人民群众的生产和生活信息的获取,同时把政务工作公开化,接受人民群众的监督,并且根据人民群众在留言的实际需要,力求最大程度的发扬“三个代表重要思想”,做到立党为公、执政为民。因此本项目开发的必要性得到了论证。

3.2.1  技术可行性

 从技术层面上说,本项目使用到Java技术,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言,能够很方便的为程序员服务。后台数据库设计使用SQL server2000集成的数据库管理系统,数据表存储格式为*.dbo 。这一数据存储格式是目前最常见的数据库数据存储格式,可以很方便的进行管理,也可以很容易的移植到其他数据库系统中。

 服务器使用的是Tomcat,Tomcat 是一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,其配置相对简单容易,配置好以后,可利用它响应对HTML 页面的访问请求,是开发和调试JSP 程序的首选。

 开发工具使用的是Dreamweaver,Dreamweaver支持当今主流的开放环境:ColdFusion,J2EE,PHP,.NET和其他主流的服务器技术。同时Dreamweaver现在加入了XML命名空间支持、JSP.NET表单控件对象等,因此它能够满足开发需求。

这些技术大多都是大学学习过程中接触过的知识,而没有接触过的也完全能够自学,因此项目开发得到了技术方面的保障。

3.2.2  经济可行性

 由于采用的是Tomcat服务器,个人计算机即可作为一个小小的服务器进行开发使用,所采用的开发工具以及相关软件在学校资源网上就能够找到,可以说开发成本基本为零,因此,经济可行性也是能够得到保障的。

3.2.3  人员可行性

 作为计算机与信息技术学院计算机科学与技术专业学生,在前三年的专业学习中,我已经基本掌握了开发这一系统所需要的全部技术,完全有能力成功开发这一系统。另在指导老师的高度指导下,能够很有针对性的对自己不足之处进行补充,我很有信心能够完成好这次开发工作。

 综上所述,门户网站系统的开发是完全可行的。

第4章  总体设计

4.1  基本功能描述

对于一个门户网站来说,通常由两部分组成,一部分是网站前台,用于展示当地各种产品、文化以及方便用户浏览相关信息;一部分是网站后台,用于管理前台相关模块的内容。

4.1.1  网站前台

系统前台要求实现:首页、政要人员、政务公开、新闻要点、招聘信息、意见征集等模块信息的显示功能。方便人民群众不需要注册就能够浏览自己所需要的信息,提高人民群众生产生活的效率和质量。

4.1.2  网站后台

系统后台要求实现:政要人员管理、政务工作管理、新闻信息管理、招聘信息管理、意见征集管理等功能模块的功能。能够对相应模块进行查询、增添、修改等操作。

4.2  系统功能结构图

门户网站前台功能结构图如图4.1所示:

图4.1  门户网站前台功能结构图

门户网站后台功能结构图如图4.2所示:

图4.2  门户网站后台功能结构图

第5章  系统设计

5.1  系统设计目标

5.1.1   总体目标

门户网站的建设目标是:具有高性能、高可靠性、技术先进、能实现统一的信息发布、集中的信息存储备份、专业的系统管理维护和便捷的网上办事系统的门户网站。实现各级领导借助信息技术手段确保政令畅通、快速处理突发事件,提高决策效能和协调能力;公务员准确、快捷地取用共享信息资料。为公众提供“个性化”服务,如查询政务信息、下载表格及文件资料等,公众可通过一个申请窗口,实现跨部门申请办理事项及完成申请工商登记、税务处理等事务。

5.1.2   具体目标

在门户的规划与建设过程中,将注重网站支撑平台、应用体系、数据库体系和安全体系的规划和建设,实现以下目标:

网站支撑平台:支持多种格式媒体信息传输,能灵活调度网络资源,有较完备的网管功能,有切换到备份系统的能力,有安全防范和审计分析能力。有功能强大的搜索引擎和扩展接口。

应用体系:重点建设好全局性的、自上而下的网上应用项目,包括可开放的各类静态数据库全部实现资源共享;安全、保密和可靠的内部多媒体通信系统;逐步建立支持公共分析和办公决策系统。以电子政务基础网络平台为基础,重点推动宏观经济、工商税务、交通口岸、外资经贸、劳动保障、民政人口和社会治安等20个主要领域的职能信息化。

数据库体系:建立分步式的安全可靠的数据库体系;具有高效的信息采集、分析、整理、数据备份和恢复功能;逐步建立适应信息共享标准的各类数据库实体。实现统一的信息交换中心。

安全体系:建立标准统一、分级管理、适应应用需要、切实可行的网络安全保障体系。建成集中的安全认证中心。

5.2  开发及运行环境

5.2.1  硬件平台

CPU: T7100 1.8GHz。

内存:512MB以上。

5.2.2  软件平台

操作系统:Windows 7 / Windows XP。

数据库:SQLServer2000。

开发工具包:Jdk-6u7-windows-i586、Dreamweaver8。

JSP服务器:Apache-tomcat-6.0.24。

浏览器:IE 7.0,推荐使用IE 6.0。

显示器分辨率:最佳显示效果1280*800像素。

5.3  数据库设计

本系统数据库采用SQLServer2000数据库,系统数据库名称为:lzh。数据库lzh中包含6张表,下面分别给出数据表概要说明及其结构。

5.3.1  数据库概要说明

为了让读者对本门户网站后台数据库中的数据表有一个清晰的认识,在此截取了数据库企业管理器中的图片,如图5.1所示。该的树型结构图包含了系统所有的数据表。

图5.1  数据库截图

5.3.2  数据表的结构

管理员数据表dt_admin

对于管理员信息表,从表名就可以得知它是储存管理员的相关信息的,如管理员登录ID、登录密码、姓名、性别、注册时间、联系电话、家庭住址等信息。其中,管理员admin_id是表的主键,是不能为空的,登录密码也是不能为空的,系统通过登录ID及登录密码来判别用户是不是该系统的管理员,这是保障系统数据库中的数据信息的安全所必须的。该表的各字段及其相应描述如表5.1所示:

表5.1  管理员信息表

字段名数据类型默认值是否为空是否主键描述
admin_idchar[16]

主键管理员id

admin_namechar[20]

NULL姓名
admin_passwordchar[16]

NULL密码
admin_regtimedatetimeNULL注册时间
admin_sexchar[2]

NULL性别
admin_addresschar[20]

NULL地址
admin_phonechar[11]

NULL电话
热点新闻数据表dt_news

热点新闻数据表中,保存着当前最新的新闻信息,每篇新闻都有一个标题,因此数据表中需要保存新闻的标题,但是如果将标题设置为该表主键的话,数据的管理会比较麻烦,因此为每一篇新闻加了个news_id,news_id则作为该表的主键,不仅方便用户在请求浏览新闻时系统的操作,而且更加的方便了管理员对于热点新闻的管理,此外设置了新闻添加的时间,这样能够方便用户检索最新的新闻。该表的各字段及其相应描述如表5.2所示:

表5.2  热点新闻信息表

字段名数据类型默认值是否为空是否主键描述
news_idchar[10]

主键新闻ID

news_titlechar[100]

NULL标题
news_neirongchar[1000]

NULL内容
news_datedatetimeNULL发布时间
工作人员数据表dt_renyuan

本着公开、公正的原则,门户网站中,有必要对组成人员的信息做简要的介绍,这不仅能够方便工作人员相互间的联系与了解,更重要的是能够向公众提供方便,如:需要办某件事情,只需要找到负责该事的人员就可以了,避免了不必要的麻烦。在该表中,人员的员工编号renyuan_id自然就是该表的主键,其他字段的描述如表5.3所示:

表5.3  人员信息表

字段名数据类型默认值是否为空是否主键描述
renyuan_id

char[10]

主键人员编号
renyuan_name

char[10]

NULL姓名
renyuan_zhiwei

char[15]

NULL职位
renyuan_sex

char[2]

NULL性别
renyuan_tell

char[15]

NULL电话
renyuan_jianjie

char[1000]

NULL个人简介
政务工作数据表dt_work

政务工作的公开化是为了接受人民群众的监督,在政务工作表中,主键为work_id,另外设置有标题work_title以及内容work_neirong字段,所有的政务工作都将会及时的储存在该表,并显示在门户网站的首页面,力求做到最大的政务工作公开化。该表中所有字段的描述如表5.4所示:

表5.4  政务工作信息表

字段名数据类型默认值是否为空是否主键描述
work_idchar[10]

主键工作编号
work_titlechar[100]

NULL工作标题
work_neirongchar[1000]

NULL工作内容
work_datedatetimeNULL工作时间
留言簿数据表dt_message

留言簿信息表是为用户(即公众)建立的,这章表储存着所有公众的留言信息,包括人民对于某些法律法规或者是政务工作的感想或者建议,这些信息都会传达到政务领导耳边,为政务工作的进一步展开奠定了良好的群众基础,该表中title作为主键,字段的相关描述如表5.5所示:

表5.5  留言簿信息表

字段名数据类型默认值是否为空是否主键描述
titlechar[10]

主键留言标题
namechar[10]

NULL姓名
mailchar[15]

NULL邮箱
contentchar[15]

NULL留言内容
招聘信息数据表dt_zhaopin

招聘信息表中,主键为zhaopin_id,主要保存部门的招聘需求信息,将信息方便地传达到门户网站首页,为公众所了解,这样能够大大的提高工作效率。该表中各字段的描述如表5.6所示

表5.6  招聘信息表

字段名数据类型默认值是否为空是否主键描述
zhaopin_idchar[10]

主键招聘编号
zhaopin_titlechar[100]

NULL招聘标题
zhaopin_neirongchar[1000]

NULL招聘介绍
zhaopin_datedatetimeNULL发布时间
5.3.3  各数据表之间的关系

ER图,即实体-联系图(Entity-Relation Diagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个于机器,于DBMS的ER图模型。ER图提供了表示实体(即数据对象)、属性和联系的方法,用来描述现实世界的概念模型。 

构成E-R图的基本要素是实体、属性和联系,其表示方法为:

实体型:用矩形表示,矩形框内写明实体名;

属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;多值属性由双线连接;主属性名称下加下划线;

联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型。

在该数据库中,各表之间的并没有太大的联系,比如:政务人员信息表和新闻热点信息表,它们之间并没有什么联系,但是,信息表中,管理员信息表中的管理员登录后能够对其他的所有数据表进行数据操作,反映它们之间联系的ER图如图5.2所示:

图5.2  数据库ER图

第6章  网站主要功能模块设计

门户网站的主页如下图所示:

图6.1  门户网站首页

 从首页可以看出,门户网站主要包含了一下几个部分:

 导  航:通过导航,用户可以方便的访问需要了解的信息。对应文件为:topFrame.html。

 连  接:通过查询数据库,把连接显示在主页面,普通用户可以通过连接进入自己想要访问的网页,方便了用户(即:人民群众)的生产生活。对应文件为:link.jsp。

 显示栏:显示相关的信息:如新闻热点、招聘信息、当地特色等,更好的展示了地方的服务人民群众的本质。对应文件为rightFrame.html。

 搜索栏:为用户提供了搜索相关信息的入口。对应文件为:sousuo.jsp。

 门户网站主要由以下几个模块组成:政要人员、政务公开、新闻要点、招聘信息、意见征集及后台管理。下面将作一一介绍。

6.1  政要人员模块

对于一个的门户网站,它能够公开自己的人员组成是必不可少的,所以在门户网站的网站导航条中设置了一个“政要人员”超链接,用户单击“政要人员”超链接即可进入到人员显示页面,页面的运行结果如图6.1.1所示。

图6.1.1  政要人员模块

 首先是要建立一个数据库的连接,在连接数据库时,需要注意的是,必须要在WEB-INF/lib添加数据库驱动程序,这样才能够成功的连接数据库,这是初学者容易出现问题的地方,笔者在这个问题上困扰了几个小时,实为浪费了不少时间。在此给初学者介绍怎样连接数据库。

代码片段如下:

 //加载数据库驱动

"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lzh";

 为数据库的名称

 //数据库用户名

 //数据库用户名登录密码

Connection conn= DriverManager.getConnection(url,user,password);

//连接到数据库

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); //建立一个数据库连接

到此为止数据库的连接已经完成,接下来就是要对数据库中的数据表进行操作,这些操作都是通过SQL语句来实现的,因此在对数据表进行操作时,必须先要确定要执行的SQL语句,然后通过executeQuery()方法执行SQL就可得到操作的结果,一般需要建立一个ResultSet对象来先保持这个结果,之后在一一进行输出。参见如下代码:

 //确定要执行的SQL语句

 //执行数据库SQL语言

while(rs.next()) //显示SQL语言执行结果

     %>

     

     <%=rs.getString(2)%>

     <%=rs.getString(3)%>

     <%=rs.getString(4)%>

     <%=rs.getString(5)%>

     

">简介

     <% 

}

在对于数据库中数据表的所有操作都已经完成之后,我们必须关闭相应的连接,因为如果不关闭对于数据库的连接,那么连接占用的资源将得不到释放,这将会引起很严重的后果直至系统崩溃。所以需要执行如下代码以避免出现恶劣的后果。

//关闭数据库连接对象

//退出数据库

在该页面的左侧显示的即是所有人员的信息列表,其中包括个人简介,若需要查看,只需点击“简介”即可查看,页面的运行效过如图6.1.2所示。

图6.1.2  政要人员介绍模块

主要代码片段如下:

 Class.forName(com.microsoft.jdbc.sqlserver.SQLServerDriver);

 上述代码就是前面所说的连接数据库,在连接数据库之后,需要做的就是确定SQL语句,之前的代码是直接给SQL语句赋值,但是在开发中往往很多情况不是能够预见的,而且赋值也远远满足不了对于数据库的操作要求,因为动态的SQL就不能缺少了,下面是一个简单的例子:

 因为myID是变量,SQL的值根据myID的不同值而不同,因为能够更好的满足对于数据库操作的要求。

 一条记录

  String renyuan_name=rs.getString(2).trim();

     String renyuan_zhiwei=rs.getString(3).trim();

     String renyuan_sex=rs.getString(4).trim();

     String renyuan_tell=rs.getString(5).trim();

     String renyuan_jianjie=rs.getString(6).trim(); 

 结束

}

catch(ClassNotFoundException e){out.println(e.toString());}

catch(SQLException e){out.println(e.toString());}

6.2  政务公开模块

 在媒体急速发展的今天,任何好的或者不好的事情,只要在网络上曝光,就能够得到表扬或者是批评。作为国家最高权利机关的执行机关,任何的政务工作都需要公平、公正、公开地进行,因此政务公开就成为了门户网站的必要的一部分。

 用户单击“政要人员”超链接即可进入到人员显示页面,页面的运行结果如图6.2.1所示。

图6.2.1  政务工作模块

具体实现代码在此就不再介绍,详见工程项目中show_work.jsp文件。

 页面中也只是显示了政务工作的标题以及时间,如果想要进一步详细查看,同前一节所述步骤,点击“详细”进入就可以查看了。

6.3  新闻热点模块

 经过考察研究,目前来说,门户网站、企业门户网站等任何门户网站,基本上都添加了新闻热点模块,这不仅仅是方便用户浏览最新最热的新闻,同时,因为各门户网站的新闻热点的针对性不完全一样,如门户网站的新闻热点主要是以事实新闻,政治即法律法规等方面的内容为主,而企业门户网站的新闻热点则是以企业本身的相关新闻以及企业产品的相关信息为主。这样就能够最大化的宣传自身的形象。

 本模块的具体代码在此也不介绍,详见工程项目中的show_news.jsp文件,以下是新闻热点模块的截图,如图6.3.1所示

图6.3.1  新闻热点模块

6.4  招聘信息模块

 招聘信息模块由于基本功能与新闻热点模块相差不大,因此在此就不再讲述。

6.5  意见征集

 为了很好的开展政务工作,就需要调查人民群众的意见,根据意见调整工作的方向,因此“意见征集”模块就不可或缺了,不仅如此,人民群众可以通过“意见征集”模块反映相关的执行效果,当出现问题时,便于部门能够在最快的时间内得到消息,并采取紧急的应对措施。这也是有利于部门的工作要公平、公正、公开地进行的。

 “意见征集”模块的页面运行效果如图6.5.1所示:

图6.5.1  意见征集模块

“意见征集”模块的代码在此不在多述,详见工程项目文件。

 在这里,用户不仅可以留言,书写自己的想法以及意见,还可以查看其他用户的留言,在添加留言时,姓名、E-Mail、主题以及留言具体内容都是不能为空的,当你没有输入内容时,系统会提示你输入相应信息,直到输入信息合法后,提交才能够完成,提交完成后自动跳转到显示所有留言信息的页面,如下图所示:

图6.5.2  显示所有留言意见

在留言意见显示界面中,用户不仅可以查看所有用户的留言记录,而且还可以继续添加新的留言,或者返回到主页面。具体实现代码见工程项目文件中的View_message.jsp。

6.6  后台管理模块

 后台管理模块是需要登录的,只有管理员能够登录并对整个门户网站数据库中的数据信息进行添加、删除、修改等操作。

后台管理主页如下图6.6.1所示:

图6.6.1  后台管理模块主页

6.6.1  登录页面的实现

 如果用户就是管理员,当用户点击“后台管理”超链接时,系统自动转到后台登录页面,用户填写用户名以及登录密码,点击登录时,系统会获取用户输入的信息,并从数据库中管理员数据表tb_admin中查询用户名是否存在,如果用户名不存在,则登录失败并提示用户重新输入正确是用户名和登录密码。如果用户名存在,则将用户输入的登录密码与管理员数据表tb_admin中该用户名所对应的登录密码相比较,如果匹配成功,这显示登录成功并跳转到后台管理主页。

 登录页面运行效果如图6.6.1.1所示:

图6.6.1.1  后台登录页面

 登录错误提示页面如图6.6.1.2所示:

图6.6.1.2  错误提示页面

后台登录实现代码如下:

//下面代码是读取用户输入的用户名及登录密码

String id=request.getParameter("username");

String pwd=request.getParameter("password");

//一下代码是建立数据库连接并查询tb_admin表中的管理员信息。

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();

 Connection con=DriverManager.getConnection(url,user,password);

 Statement stat=con.createStatement(); 

 String sql="select * from tb_admin";

 ResultSet rs=stat.executeQuery(sql);

//将冲数据表中读出的用户名及登录密码赋值到N和P。

String N=rs.getString(1).trim();

 String P=rs.getString(2).trim();

//下面代码是对用户输入的用户名以及登录密码进行判断

//判断用户名及登录密码是否为空,如果用户名或者密码为空则提示错误并返回重新登录

   {

 用户名密码不能为空,请重新登录");

   }

//判断用户名及登录密码是否与从管理员信息表tb_admin中读出的信息分别匹配。如果匹配成功,则跳转到后台主页面,否则提示用户名或密码错误并请求用户重新登录。

if(id.equals(N)&&pwd.equals(P))

   { response.sendRedirect("\\\\houtai\\\\houtai_index.html");}

 else

   {

 用户名密码错误,请重新登录");

 }

6.6.2  数据操作模块

数据查询:

在数据库相关操作中,对于数据表的操作可以通过SELECT语句从数据库表中检索行,并允许从一个或多个表中选择一个或多个行或列。虽然SELECT语句的完整语法较复杂,前面已经介绍了它的用法,在此就不再描述。

 当在后台主页点击查询时,如查询政要人员信息、新闻热点信息、招聘信息、留言信息等,系统即可显示出相应信息的列表,方便管理员进行管理。信息先是列表页面如图6.6.2.1所示,由于后台管理页面对于数据的查处显示的列表格式基本相同,在此就只截取了其中查询政务工作的页面作为示例,一边学者能够有更好的理解。

图6.6.2.1  信息显示列表页面

数据修改:

 如果需要对某条记录进行修改,管理员只需要点击相应的记录的之后的“修改”操作,系统就能够调整到修改操作的页面,在修改操作页面中,首先是根据管理员选择的记录,列出该记录的完整信息,然后管理员即可进行修改,当发现修改错误时,还能够取消该修,并重新进行修改。页面运行效果如图6.6.2.2所示,此处还是以政务工作的修改操作页面作为示例。

图6.6.2.2  数据删除页面

数据修改操作实现代码如下:

 //设置编码格式,防止乱码

 //首先要显示出所选择的要删除的数据的全部详细信息,使用//getParameter()方法实现

 下面代码是确定将要执行的SQL语句

 数据的修改使用Update方法实现

 使用jsp中的方法sendRedirect()将页面发送到list_work.jsp页面

数据删除:

如果需要删除某条数据记录,系统管理员只需要点击该数据记录相对应的“删除”操作,系统机会提示是否进行删除操作,这是为了保障数据的安全,当系统管理员确认删除后,数据记录就从该数据表中删除了,此时自动跳转到显示信息列表页面,并显示该数据表的所有数据记录。

 实现代码如下:

 String className="com.microsoft.jdbc.sqlserver.SQLServerDriver";

String url=

"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=lzh";

try{

      Class.forName(className).newInstance();

  Connection con=DriverManager.getConnection(url,user,password);

  Statement stat=con.createStatement();

    String sql="delete from tb_work where work_id='"+ myID+"'";

  stat.executeUpdate(sql);

  response.sendRedirect("list_work.jsp");

6.6.3  数据库备份

 数据库备份是为了在发生意外时能够即使进行恢复,用以保证系统正常运行以及防止数据丢失或破坏。没有备份的系统是不可靠的,后果将是严重的,因此数据库的备份显得非常重要且必须。

 由于技术有限,在此门户网站开发中,我仅使用了简单的技术实现了最为简单的数据库备份,能够将数据库备份为.bat文件,并保存到指定的文件目录。

 实现代码的主要部分如下:

//首先还是建立数据库的连接

Connection conn= DriverManager.getConnection(url,user,password);

 使用特殊的SQL语句实现数据库备份效果

第7章  总结与展望

7.1  总结

 经过此次门户网站的设计与实现,我从中学习到了不少知识,当然这并不足以让我满足,我深知自己还要学习的知识很多,就单纯在网站设计方面,需要学习的东西也是不计其数的,可以说我所掌握的只不过是一些比较基础、比较简单的,要想更好的进行网站开发,进一步的学习是必不可少的。

 通过门户网站的设计与实现,理解了Ajax技术的基本原理,并初步了解了基于Ajax和java技术开发Web应用的流程,对于各类开发工具的安装配置(如:JDK、My eclipse、tomcat、sqlserver等)以及开发环境的搭建有了初步的认识。

本次开发中所取得的成果前面都已经介绍过,在此总结一下主要完成的工作:

阐述了Java技术和基于Java的集成开发环境Eclipse的功能特性,提出选用Eclipse作为门户网站系统的主要开发工具。

对门户网站系统进行了需求分析和系统分析,完成了基于Web的门户网站系统的体系结构设计。

对门户网站系统的一些功能模块进行一些介绍,并以截图的方式,展现给用户,以便用户能很好的了解本系统。

根据前面对门户网站系统的分析和体系结构设计,以及对系统开发技术和工具的研究,成功应用sqlserver2000作为数据库,基于Windows平台和IE 6.0实现了基于Web的门户网站系统实例。

但是由于技术水平有限,此门户网站的实现还存在不足之处,下面就作简要介绍:

 首先:本门户网站比较简单,并不像现有门户网站那样功能强大,毕竟还处于学习阶段,很难做到尽善尽美,但是总的来说,其基本功能已经实现,而且,我也确实从此次开发中了解了基于Ajax和java技术开发Web应用的流程,我想这比什么都重要。

    其次:页面的想过给人的感觉不是那么美观,因为我在开发过程当中,没有把美观作为开发工作的重点,因此没有加入背景图片,也没有对页面进行更高水平的CSS样式规范,因此整个页面给人比较单调的感觉。但是我相信,基本功能我能够实现了,美化工作我也能够做得很好,这或许不会在这次毕业设计项目中得到体现,但在以后的学习工作中,在实际的项目开发中,美化也是必须的一步,当然这完全可以交给专门的美化工作组去完成,但是,我们还是应该学习更多的东西,多不代表浅,对于网站开发的各方面的知识,我们都应该有更深更广的学习。

7.2  展望

随着Internet/Intranet等技术的迅速发展和广泛应用,很多都构建了自己的局域网,他们能通过网络迅速地发布和传达信息,也能通过网络迅速地搜寻和获取信息。网络改变了人们的日常生活、学习和工作方式,提高了人们的生存效率,同时通过构建门户网站也给管理带来深刻的变革,可见建立基于Web的门户网站系统正是顺应时代发展的需要。

目前来说我国门户网站正处于内容导向阶段的关键时期,通过研究国内外门户网站的发展历程可知,此阶段的发展情况将直接关系公共对门户网站的关注度和满意度。而且由于发展基础、所处时期、以及社会、经济环境的特殊性,我过门户网站的发展也呈现其特有的趋势,现阶段已成为打造阳光、构建和谐社会的重要渠道。总的来说,我国门户网站呈现如下发展趋势:

门户网站内容的实用性、规范性、有效性建设不断强大

信息公开的影响力正在不断的提升;实用化、人性化的办事服务需求正在不断加大,资源整个成为必然要求;整合互动渠道资源、规范互动保障机制成为提升公众参与效果的重要途径。

网络的引导力度将逐步加强

互联网的应用已经快速渗透到社会政治、经济、文化生活的各个角落,对于社会的影响力正日益提升,因此加强引导是各级在推进社会主义民主政治建设过程中的一项重要任务。

新技术应用逐渐成为提升门户网站功能的重要手段

政民共建模式成为网络发展的方向

门户网站建设的初衷是使公民、企业与工作人员能够快速便捷地获取政务信息,接入相关部门的业务应用,使何时的人能够在恰当的时间获得恰当的服务。

行业、地域门户网站群评估成为出尽服务落实的重要方式

参考文献

作者 书名 出版社  出版时间

1、孙鑫 《Java Web开发详解》 电子工业出版社 2006年4月

2、王珊、萨师煊 《数据库系统概论》 高等教育出版社 2006年5月

3、吉根林、崔海源 《Web程序设计》 电子工业出版社 2006年1月

4、余昀 《JSP 2.0技术从入门到精通》 中国铁道出版社 2005年12月

5、邹建 《深入浅出SQL Server 2000》 人民邮电出版社 2008年8月

6、王国辉、王易 《JSP数据库系统开发》人民邮电出版社 2006年5月

附  录

外文原文:

Overview of JSP Technology

Benefits of JSP

JSP pages are translated into servlets. So, fundamentally, any task JSP pages can perform could also be accomplished by servlets. However, this underlying equivalence does not mean that servlets and JSP pages are equally appropriate in all scenarios. The issue is not the power of the technology, it is the convenience, productivity, and maintainability of one or the other. After all, anything you can do on a particular computer platform in the Java programming language you could also do in assembly language. But it still matters which you choose.

JSP provides the following benefits over servlets alone:

• It is easier to write and maintain the HTML. Your static code is ordinary HTML: no extra backslashes, no double quotes, and no lurking Java syntax.

• You can use standard Web-site development tools. Even HTML tools that know nothing about JSP can be used because they simply ignore the JSP tags.

• You can divide up your development team. The Java programmers can work on the dynamic code. The Web developers can concentrate on the presentation layer. On large projects, this division is very important. Depending on the size of your team and the complexity of your project, you can enforce a weaker or stronger separation between the static HTML and the dynamic content.

Now, this discussion is not to say that you should stop using servlets and use only JSP instead. By no means. Almost all projects will use both. For some requests in your project, you will use servlets. For others, you will use JSP. For still others, you will combine them with the MVC architecture . You want the appropriate tool for the job, and servlets, by themselves, do not complete your toolkit.

Advantages of JSP Over Competing Technologies

A number of years ago, Marty was invited to attend a small 20-person industry roundtable discussion on software technology. Sitting in the seat next to Marty was James Gosling, inventor of the Java programming language. Sitting several seats away was a high-level manager from a very large software company in Redmond, Washington. During the discussion, the moderator brought up the subject of Jini, which at that time was a new Java technology. The moderator asked the manager what he thought of it, and the manager responded that it was too early to tell, but that it seemed to be an excellent idea. He went on to say that they would keep an eye on it, and if it seemed to be catching on, they would follow his company's usual "embrace and extend" strategy. At this point, Gosling lightheartedly interjected "You mean disgrace and distend."

Now, the grievance that Gosling was airing was that he felt that this company would take technology from other companies and suborn it for their own purposes. But guess what? The shoe is on the other foot here. The Java community did not invent the idea of designing pages as a mixture of static HTML and dynamic code marked with special tags. For example, ColdFusion did it years earlier. Even ASP (a product from the very software company of the aforementioned manager) popularized this approach before JSP came along and decided to jump on the bandwagon. In fact, JSP not only adopted the general idea, it even used many of the same special tags as ASP did.

So, the question becomes: why use JSP instead of one of these other technologies? Our first response is that we are not arguing that everyone should. Several of those other technologies are quite good and are reasonable options in some situations. In other situations, however, JSP is clearly better. Here are a few of the reasons.

Versus .NET and Active Server Pages (ASP)

.NET is well-designed technology from Microsoft. ASP.NET is the part that directly competes with servlets and JSP. The advantages of JSP are twofold.

First, JSP is portable to multiple operating systems and Web servers; you aren't locked into deploying on Windows and IIS. Although the core .NET platform runs on a few non-Windows platforms, the ASP part does not. You cannot expect to deploy serious ASP.NET applications on multiple servers and operating systems. For some applications, this difference does not matter. For others, it matters greatly.

Second, for some applications the choice of the underlying language matters greatly. For example, although .NET's C# language is very well designed and is similar to Java, fewer programmers are familiar with either the core C# syntax or the many auxiliary libraries. In addition, many developers still use the original version of ASP. With this version, JSP has a clear advantage for the dynamic code. With JSP, the dynamic part is written in Java, not VBScript or another ASP-specific language, so JSP is more powerful and better suited to complex applications that require reusable components.

You could make the same argument when comparing JSP to the previous version of ColdFusion; with JSP you can use Java for the "real code" and are not tied to a particular server product. However, the current release of ColdFusion is within the context of a J2EE server, allowing developers to easily mix ColdFusion and servlet/JSP code.

Versus PHP

PHP (a recursive acronym for "PHP: Hypertext Preprocessor") is a free, open-source, HTML-embedded scripting language that is somewhat similar to both ASP and JSP. One advantage of JSP is that the dynamic part is written in Java, which already has an extensive API for networking, database access, distributed objects, and the like, whereas PHP requires learning an entirely new, less widely used language. A second advantage is that JSP is much more widely supported by tool and server vendors than is PHP.

Versus Pure Servlets

JSP doesn't provide any capabilities that couldn't, in principle, be accomplished with servlets. In fact, JSP documents are automatically translated into servlets behind the scenes. But it is more convenient to write (and to modify!) regular HTML than to use a zillion println statements to generate the HTML. Plus, by separating the presentation from the content, you can put different people on different tasks: your Web page design experts can build the HTML by using familiar tools and either leave places for your servlet programmers to insert the dynamic content or invoke the dynamic content indirectly by means of XML tags.

Does this mean that you can just learn JSP and forget about servlets? Absolutely not! JSP developers need to know servlets for four reasons:

1. JSP pages get translated into servlets. You can't understand how JSP works without understanding servlets.

2. JSP consists of static HTML, special-purpose JSP tags, and Java code. What kind of Java code? Servlet code! You can't write that code if you don't understand servlet programming.

3. Some tasks are better accomplished by servlets than by JSP. JSP is good at generating pages that consist of large sections of fairly well structured HTML or other character data. Servlets are better for generating binary data, building pages with highly variable structure, and performing tasks (such as redirection) that involve little or no output.

4. Some tasks are better accomplished by a combination of servlets and JSP than by either servlets or JSP alone. 

Versus JavaScript

JavaScript, which is completely distinct from the Java programming language, is normally used to dynamically generate HTML on the client, building parts of the Web page as the browser loads the document. This is a useful capability and does not normally overlap with the capabilities of JSP (which runs only on the server). JSP pages still include SCRIPT tags for JavaScript, just as normal HTML pages do. In fact, JSP can even be used to dynamically generate the JavaScript that will be sent to the client. So, JavaScript is not a competing technology; it is a complementary one.

It is also possible to use JavaScript on the server, most notably on Sun ONE (formerly iPlanet), IIS, and BroadVision servers. However, Java is more powerful, flexible, reliable, and portable.

Versus WebMacro or Velocity

JSP is by no means perfect. Many people have pointed out features that could be improved. This is a good thing, and one of the advantages of JSP is that the specification is controlled by a community that draws from many different companies. So, the technology can incorporate improvements in successive releases.

However, some groups have developed alternative Java-based technologies to try to address these deficiencies. This, in our judgment, is a mistake. Using a third-party tool like Apache Struts that augments JSP and servlet technology is a good idea when that tool adds sufficient benefit to compensate for the additional complexity. But using a nonstandard tool that tries to replace JSP is a bad idea. When choosing a technology, you need to weigh many factors: standardization, portability, integration, industry support, and technical features. The arguments for JSP alternatives have focused almost exclusively on the technical features part. But portability, standardization, and integration are also very important. For example, the servlet and JSP specifications define a standard directory structure for Web applications and provide standard files (.war files) for deploying Web applications. All JSP-compatible servers must support these standards. Filters can be set up to apply to any number of servlets or JSP pages, but not to nonstandard resources. The same goes for Web application security settings.

Besides, the tremendous industry support for JSP and servlet technology results in improvements that mitigate many of the criticisms of JSP. For example, the JSP Standard Tag Library and the JSP 2.0 expression language address two of the most well-founded criticisms: the lack of good iteration constructs and the difficulty of accessing dynamic results without using either explicit Java code or verbose jsp:useBean elements.

Misconceptions About JSP

Forgetting JSP Is Server-Side Technology

Here are some typical questions Marty has received (most of them repeatedly).

• Our server is running JDK 1.4. So, how do I put a Swing component in a JSP page?

• How do I put an image into a JSP page? I do not know the proper Java I/O commands to read image files.

• Since Tomcat does not support JavaScript, how do I make images that are highlighted when the user moves the mouse over them?

• Our clients use older browsers that do not understand JSP. What should we do?

• When our clients use "View Source" in a browser, how can I prevent them from seeing the JSP tags?

All of these questions are based upon the assumption that browsers know something about the server-side process. But they do not. Thus:

• For putting applets with Swing components into Web pages, what matters is the browser's Java version—the server's version is irrelevant. If the browser supports the Java 2 platform, you use the normal APPLET (or Java plug-in) tag and would do so even if you were using non-Java technology on the server.

• You do not need Java I/O to read image files; you just put the image in the directory for Web resources (i.e., two levels up from WEB-INF/classes) and output a normal IMG tag.

• You create images that change under the mouse by using client-side JavaScript, referenced with the SCRIPT tag; this does not change just because the server is using JSP.

• Browsers do not "support" JSP at all—they merely see the output of the JSP page. So, make sure your JSP outputs HTML compatible with the browser, just as you would do with static HTML pages.

• And, of course you need not do anything to prevent clients from seeing JSP tags; those tags are processed on the server and are not part of the output that is sent to the client.

Confusing Translation Time with Request Time

A JSP page is converted into a servlet. The servlet is compiled, loaded into the server's memory, initialized, and executed. But which step happens when? To answer that question, remember two points:

• The JSP page is translated into a servlet and compiled only the first time it is accessed after having been modified.

• Loading into memory, initialization, and execution follow the normal rules for servlets.

Table 1 gives some common scenarios and tells whether or not each step occurs in that scenario. The most frequently misunderstood entries are highlighted. When referring to the table, note that servlets resulting from JSP pages use the _jspService method (called for both GET and POST requests), not doGet or doPost. Also, for initialization, they use the jspInit method, not the init method.

Table 1. JSP Operations in Various Scenarios

  JSP page translated into servlet Servlet compiled Servlet loaded into server's memory jspInit called _jspService called

Page first written

Request 1 Yes Yes Yes Yes Yes

Request 2 No No No No Yes

Server restarted

Request 3 No No Yes Yes Yes

Request 4 No No No No Yes

Page modified

Request 5 Yes Yes Yes Yes Yes

Request 6 No No No No Yes

中文翻译:

JSP技术概述

JSP的好处

JSP页面最终会转换成servlets。因而从根本上讲,JSP页面能够执行的任何任务都可以用servlets来完成。然而这种底层的等同性并不意味着servlets和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。

和单独使用servlets相比,JSP提供下述好处:

JSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。

能够使用标准的网站开发工具。即使对那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。

可以对开发团队进行划分。Java程序员可以致力于动态代码。Web开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。

到此,这个讨论并不是让您停止使用servlets,只使用JSP。几乎所有的项目都会同时用到这两种技术。针对项目中的某些请求,您可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlets并不能填满您的工具箱。

JSP相对于竞争技术的优势

许多年前,Marty受到邀请,参加一个有关软件技术的小型(20个人)研讨会。坐在Marty旁边的人是James Gosling——Java编程语言的发明者。隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的提出了Jini的议题,这在当时是一项新的Java技术。向该经理询问他的想法。他继续说,他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embrace and extend)”的策略。此时, Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgrace and distend)。”

在此,Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的。但你猜这次怎么样?这次鞋子穿在了另一只脚上。Java社团没有发明这一思想——将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成。ColdFusion多年前就已经这样做了。甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。

因此,问题变成:为什么使用JSP,而不使用其他技术呢?我们的第一反应是我们不是在争论所有的人应该做什么。其他这些技术中,有一些也很不错,在某些情况下也的确是合情合理的选择。然而,在其他情形中,JSP明显要更好一些。下面给出几个理由。

与.NET和Active Server Pages (ASP)相比

.NET是Microsoft精心设计的一项技术。ASP.NET是与servlets和JSP直接竞争的技术。JSP的优势体现在两个方面。

首先,JSP可以移植到多种操作系统和Web服务器,您不必仅仅局限于部署在Windows 和IIS上尽管核心。NET平台可以在好几种非Windows平台上运行,但ASP这一部分不可以。您不能期望可以将重要的ASP.NET应用部署到多种服务器和操作系统。对于某些应用,这种差异没有什么影响。但有些应用,这种差异却非常重要。

其次,对于某些应用,底层语言的选择至关重要。例如,尽管.NET的C#语言设计优良,且和Java类似,但熟悉核心C#语法和众多工具库的程序员很少。此外,许多开发者依旧使用最初版本的ASP。相对于这个版本,JSP在动态代码方面拥有明显的优势。使用JSP,动态部分是用Java编写的,而非VBScript过其他ASP专有的语言,因此JSP更为强劲,更适合于要求组件重用的复杂应用。

当将JSP与之前版本的ColdFusion对比时,您可能会得到相同的结论。应用JSP,您可以使用Java编写“真正的代码”,不必依赖于特定的服务器产品。然而,当前版本的ColdFusion满足J2EE服务器的环境,允许开发者容易的混合使用ColdFusion和Servlet/JSP代码。

与PHP相比

PHP(“PHP:Hypertext Preprocessor”的递归字母缩写词)是免费的、开放源代码的、HTML嵌入其中的脚本语言,与ASP和JSP都有某种程度的类似。JSP的一项优势是动态部分用Java编写,而Java已经在联网、数据库访问、分布式对象等方面拥有广泛的API,而PHP需要学习全新的、应用相对广泛的语言。JSP的第二项优势是,和PHP相比,JSP拥有极为广泛的工具和服务器提供商的支持。

与纯Servlets相比

原则上,JSP并没有提供Servlets不能完成的功能。实际上,JSP文档在后台被自动转换成Servlets。但是编写(和修改)常规的HTML,要比无数println语句生成HTML要方便得多。另外,通过将表示与内容分离,可以为不同的人分配不同的任务:网页设计人员使用熟悉的工具构建HTML,要么为Servlet程序员留出空间插入动态内容,要么通过XML标签间接调用动态内容。

这是否表示您只可以学习JSP,将Servlet丢到一边呢?当然不是!由于以下4种原因,JSP开发人员需要了解Servlet:

(1)JSP页面会转换成Servlets。不了解Servlet就无法知道JSP如何工作。

(2)JSP由静态HTML、专用的JSP标签和Java代码组成。哪种类型的Java代码呢?当然是Servlets代码!如果不了解Servlets编程,那么就无法编写这种代码。

(3)一些任务用Servlets完成比用JSP来完成要好。JSP擅长生成由大量组织有序的结构化HTML或其他字符数据组成的页面。Servlets擅长生成二进制数据,构建结构多样的页面,以及执行输出很少或者没有输出的任务(比如重定向)。

(4)有些任务更适合于组合使用Servlets和JSP来完成,而非单独使用Servlets或JSP。

与JavaScript相比

JavaScript和Java编程语言完全是两码事,前者一般用于在客户端动态生成HTML,在浏览器载入文档时构建网页的部分内容。这是一项有用的功能,一般与JSP的功能(只在服务器端运行)并不发生重叠。和常规HTML页面一样,JSP页面依旧可以包括用于JavaScript的SCRIPT标签。实际上,JSP甚至能够用来动态生成发送到客户端的JavaScript。因此,JavaScript不是一项竞争技术,它是一项补充技术。

JavaScript也可以用在服务器端,最因人注意的是SUN ONE(以前的iPlanet)、IIS和BroadVision服务器。然而,Java更为强大灵活、可靠且可移植。

与WebMacro和Velocity相比

JSP决非完美。许多人都曾指出过JSP中能够改进的功能。这是一件好事,JSP的优势之一是该规范由许多不同公司组成的社团控制。因此,在后续版本中,这项技术能够得到协调的改进。

但是,一些组织已经开发出了基于Java的替代技术,试图弥补这些不足。据我们的判断,这样做是错误的。使用扩充JSP和Servlet技术的第三方工具,如Apache Structs,是一种很好的思路,只要该工具带来的好处能够补偿工具带来的额外复杂性。但是,试图使用非标准的工具代替JSP则不理想。在选择一项技术时,需要权衡许多方面的因素:标准化、可移植性、集成性、行业支持和技术特性。对于JSP替代技术的争论几乎只是集中在技术特性上,而可移植性、标准化和集成性也十分重要。例如,Servlet和JSP规范为Web应用定义了一个标准的目录结构,并提供用于部署Web应用的标准文件(.war文件)。所有JSP兼容的服务器必须支持这些标准。我们可以建立过滤器作用到任意树木的Servlet和JSP页面上,但不能用于非标准资源。Web应用安全设置也同样如此。

此外,业界对JSP和Servlet技术的巨大支持使得这两项技术都有了巨大的进步,从而减轻了对JSP的许多批评。例如,JSP标准标签库和JSP 2.0表达式语言解决了两种最广泛的批评:缺乏良好的迭代结构;不使用显式的Java代码或冗长的jsp:useBean元素难以访问动态结果。

对JSP的误解

忘记JSP技术是服务器端技术

下面是Marty收到的一些典型问题(大部分问题不止一次的出现)。

我们的服务器正在运行JDK1.4,如何将Swing组件用到JSP页面中?

我如何将图像放到JSP页面中?我不知道读取图像文件应该使用哪些Java I/O命令。

Tomcat不支持JavaScript,当用户在图像上移动鼠标时,我如何使图像突出显示呢?

我们的客户使用不理解JSP的旧浏览器。我应该怎么做?

当我们的客户在浏览器中使用“View  Source”(查看源代码)时,如何阻止他们看到JSP标签?

所有这些问题都基于浏览器对服务器端的过程在有所了解的假定之上。但事实上浏览器并不了解服务器端的过程。因此:

如果要将使用Swing组件的applet放到网页中,重要的是浏览器的Java版本,和服务器的Java版本无关。如果浏览器支持Java 2平台,您可以使用正常的APPLET(或Java插件)标签,即使在服务器上使用了非Java技术也须如此。

您不需要Java I/O来读取图像文件,您只需将图像放在存储Web资源的目录中(即WEB-INF/classes向上两级的目录),并输出一个正常的IMG标签。

您应该用SCRIPT标签,使用客户端JavaScript创建在鼠标下会更改的图像,这不会由于服务器使用JSP而改变。

浏览器根本不“支持”JSP----它们看到的只是JSP页面的输出。因此,如同对待静态HTML页面一样,只需确保JSP输出的HTML与浏览器兼容。

当然,您不需要采取什么措施来阻止客户看到JSP标签,这些标签在服务器上进行处理,发送给客户的输出中并不出现。

混淆转换期间和请求期间

JSP页面需要转换成servlet。Servlet在编译后,载入到服务器的内容中,初始化并执行。但是每一步发生在什么时候呢?要回答这个问题,要记住以下两点:

JSP页面仅在修改后第一次被访问时,才会被转换成servlet并进行编译;

载入到内存中、初始化和执行遵循servlets的一般规则。

表1列出一些常见的情形,讲述在该种情况下每一步是否发生。最常被误解的项已经突出标示出来。在参考该表时,要注意,由JSP页面生成的servlet使用_jspService方法(GET和POST请求都调用该函数),不是doGet或doPost方法。同样,对于初始化,它们使用jspInit方法,而非init方法。

表1 各种情况下的JSP操作

将JSP 页面转换成servlet编译Servlet将Servlet载入到服务器内存中调用jspInit调用_jspService

页面初次创建

请求 1 有 有 有 有 有

请求 2 无 无 无 无 有

服务器重启后

请求3 无 无 有 有 有

请求 4 无 无 无 无 有

页面修改后

请求 5 有 有 有 有 有

请求 6 无 无 无 无 有

文档

门户网站设计与实现

门户网站设计与实现中文摘要门户网站,是在各部门的信息化建设基础之上,建立起跨部门的、综合的业务应用系统,使公民、企业与工作人员都能快速便捷地接入所有相关部门的业务应用、组织内容与信息,并获得个性化的服务,并遵循"精简、统一、效能"的原则,转变职能,建立行为规范、运转协调、公正透明、廉洁高效的行政管理。本文对基于Web的门户网站的设计与实现进行了研究。首先阐述了门户网站的重要地位、发展趋势、新时期的一些主要特点等理论知识,分析了建立了基于Web的门户网站的
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top