门户网站的设计与开发.docx
《门户网站的设计与开发.docx》由会员分享,可在线阅读,更多相关《门户网站的设计与开发.docx(41页珍藏版)》请在冰豆网上搜索。
![门户网站的设计与开发.docx](https://file1.bdocx.com/fileroot1/2023-4/16/42ab8631-7d0c-44a0-8ffd-2a98a542c552/42ab8631-7d0c-44a0-8ffd-2a98a542c5521.gif)
门户网站的设计与开发
门户网站的设计与开发
摘要
21世纪的发展已经很大程度的依赖于计算机网络的发展,随着计算机网络的快速发展而带来的一系列的基于网络的事物的飞速增长和世界信息化步伐的加快,于是越来越多的企事业单位包括各类院校都需要一个自己的信息发布和资源共享的平台。
为了满足这个需求,我们开发此门户网站,用于用户发布自己的信息和资源以实现信息的共享和传递。
。
在基于JSP页面、MySQL数据库及Tomcat服务器端的基础上开发的新闻发布系统。
系统地阐述该网站系统开发的分析及设计过程,包括数据流图,功能分析设计,数据库设计等;
关键词:
门户网站系统新闻发布JSP;
ABSTRACT
【Keywords】 portalsystem,pressreleases,jsp;
第一章绪论
1.1门户网站的发展现状及发展趋势
门户网站,是指通向某类综合性互联网信息资源并提供有关信息服务的应用系统。
门户网站最初提供搜索服务、目录服务,后来由于市场竞争日益激烈,门户网站不得不快速地拓展各种新的业务类型,希望通过门类众多的业务来吸引和留住互联网用户,以至于目前门户网站的业务包罗万象,成为网络世界的“百货商场”或“网络超市”。
实际上,我们今天所谈论的门户与当初yahoo初创时所说的门户已经有了很大的不同。
那个时候,大多数网民面对茫茫网海无从下手,正是yahoo这种以提供搜索服务为主的网站扮演了引网民“入门”的角色,成为网民进入互联网的“门户”。
将提供新闻服务作为门户网站的主业乃至核心竞争力,这其实只是后来的事情,原本就与门户网站的“本质”或者“正根”没有什么关系。
因此,今天在门户问题上,极力强调新闻业务的重要性,似乎不做新闻甚至少做新闻就是对门户的“背叛”,让人有些不知所云。
相反,简单回顾门户的起源和历史,可以让我们清楚地看到,无论是搜索还是新闻,都只是门户发展的一个阶段,门户可以从搜索服务演进到新闻服务,未必就不能从新闻服务演进到别的什么服务。
随着网络媒体的发展,原先的门户不一定再将搜索作为主业(例如yahoo和搜狐),而提供搜索引擎服务的又不一定非门户不可(例如XX和google);今人可以这样看过去,后人未必就不能如此看今日。
这场争论同时暗含一个关于门户网站与大众媒体的关系问题。
大众媒体的模式是成熟的,其特点集中体现在“一对多”的传播渠道和以新闻为主的传播内容上,不用作理论分析,传统媒体上百年的历史已然充分证明了其在传统信息环境下的合理性和有效性,也充分证明了其能够满足大多数对于新闻、信息的通用需求。
问题在于,这种模式在目前和未来的信息环境下依然那么合理和有效吗?
作为信息交流平台的网络媒体不会改变这种状况吗?
新闻永远是大多数人们的通用需求吗?
网络媒体一定要向大众媒体靠拢吗?
这些问题都不是显而易见、一目了然的,正确的答案存在于不断的尝试、选择和进化之中,而“先知”们的“定论”却未必那么可信。
网络媒体不同于大众媒体,信息时代的网民及其需求也不同于过去时代的受众及其需求,千万不要轻视网络媒体所具有的信息交流平台功能,千万不要轻视数量日增的网民对新闻服务以外的信息需求。
通过向网民发布新闻固然是门户网
站的一种模式选择,但是,为网民提供信息交流平台,使网民从多种渠道(例如其他网民)获取多元信息(不仅限于新闻)也是门户网站的一种模式选择,也许,这是更好、更有前途的模式选择——以这种模式成功的网站正在涌现。
随着中国互联网10年的过去,已经诞生出几家全国大型的门户。
中国城市百分之九十都是属于中小二三级城市,电脑终端在中国的普及和网民快速增长,中国城市未来的网络发展是趋势,市场空间也是很巨大的。
在此同时也出现地方门户,通常我们所说的地方门户系统是指“地方门户网站系统”,它由多个网站功能系统构成,主要有分类信息系统、社区论坛系统、地方信息资讯系统、商家企业黄页系统等。
并非单指地方某个行业垂直网站系统,如单一的论坛系统、单一的分类信息系统等。
1.2课题的目的与意义
在Internet飞速发展的今天,互联网成为人们快速获取、发布和传递信息的重要渠道,它在人们政治、经济、生活等各个方面发挥着重要的作用.因此网站建设在Internet应用上的地位显而易见,它已成为政府、企事业单位信息化建设中的重要组成部分,从而倍受人们的重视。
现今的社会,人们已经离不开了网络,网络已经成为人与人之间交流的一种形式,他能够把事情的复杂化转为简单。
新闻发布系统的提出使电视不再是唯一的新闻媒体,从此以后网络也充当了一个重要的新闻媒介的功能。
简单地说,新闻发布系统就是充当一个网络新闻媒介的功能,主要实现对新闻的分类、上传、审核、发布,模拟了一般新闻媒介的新闻发布的过程,通过不同权限的账号分别实现以上所说功能,当然这些功能也可以是某一个账号全部具有。
随着互联网的进一步发展,网络媒体在人们心中的地位进一步提高,新闻发布系统做为网络媒体的核心系统,其重要性是越来越重要:
一方面,它提供一个新闻管理和发布的功能;另一方面,现在的新闻发布要求实现与普通的用户实现交互,用户可以很方便地参加一些调查和相关新闻的评论,这一点也是其他一些媒体现在无法做到的(电视、电台等),同时,Internet发展到当今,可以说,只要你上Internet,你就会接触到新闻发布系统,新闻发布系统的用户是相当惊人的,其重要性是不容置疑的,当然这也对新闻发布系统的开发提出了更高的要求。
网站新闻发布系统,是将网站上需要经常变动的信息,社会的动态等更新信息集中管理,并通过信息的某些共性进行分类,最后系统化、标准化发布到网站上的一种网站应用程序。
传统的网站新闻管理方式有两种,一是静态HTML页面,更新信息时需要重新制作页面然后上传页面并修改相应链接,这种方式因为效率太低已不多用。
二是基于JSP和脚本语言,将动态网页和数据库结合,通过应用程序来处理新闻,这是目前较为流行的做法。
人们对最新信息的需求和发布迫切的需要及时性,而动态交互式网页刚好提供了这些功能,本系统就是一个能够在网上实现新闻的网上多用户发布,多栏目管理,实时的进行行为统计和记录的网上交互。
1.3本论文所做的工作
本论文实现了一个新闻发布系统的门户网站,主要的功能有七大模块:
1新闻浏览模块
首页显示网站所有新闻列表,根据新闻的数量分页,网站顾客可以自由浏览新闻。
2用户登录模块
用户登界面,用户需根据自己的类型(普通用户,管理员)进行选择性登陆,登录时需要填写验证码。
注意本系统部分功能只有在登陆后才被激活,且不同用户类型登陆后所具有的功能也不同。
3用户注册模块
注册模块仅服务于普通用户,在网站上注册的用户身份仅是普通用户,管理员需到服务器注册信息。
4用户修改信息模块
普通用户登陆后才能修改自己的信息,为了确保系统安全系统管理员不能在客户端修改信息,必须到服务器数据库直接修改信息。
5管理新闻模块
用户登陆后此模块被激活,为了确保其他用户在本站的利益,用户仅可以管理自己的新闻,管理新闻包括(删除,修改),系统管理员可以管理所有用户发表的新闻。
6添加新闻模块
用户登录后可以发布新闻,发布的新闻将在系统首页新闻列表中显示出来,用户在发表新闻时若不填写作者,系统默认当前用户为作者。
发表时间不用填写,由系统根据服务器时间默认。
7管理用户模块
此模块专属于系统管理员,系统管理员登陆后,可以查看本系统存在的所有普通用户的信息,信息包括(用户名,密码,联系电话,即时通信QQ)。
管理员可以根据需要,对系统中的任何用户进行封号处理。
8注销模块
当用户登录后,不再进行操作时,为了减少服务器资源的浪费和自身账户的安全性,可以进行注销。
第二章开发工具,语言,及数据库简介
2.1MySql数据库
随着门户类网站的发展,尤其是新闻类门户网站的发展,今天MySQL已被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL是一个真正的多用户、多线程SQL数据库服务器。
系统采用加载纯Java数据库驱动程序的方式操作数据库,目前mysql还不支持桥连接。
SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言。
MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成,并且能够支持多平台。
2.2JSP与Servlet
JavaServlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。
JavaServlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。
JavaServlet与Applet的比较:
相似之处:
它们不是独立的应用程序,没有main()方法。
它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
它们都有一个生存周期,包含init()和destroy()方法。
不同之处:
Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
JavaServlet则没有图形界面,运行在服务器端。
JavaServlet与CGI(CommonGatewayInterface)的比较:
与传统的CGI和许多其他类似CGI的技术相比,JavaServlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。
在未来的技术发展过程中,Servlet有可能彻底取代CGI。
高效
在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。
而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于JavaServlet,处理请求的是N个线程,只需要一份Servlet类代码。
在性能优化方面,Servlet也比CGI有着更多的选择。
方便
JavaServlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
功能强大
在JavaServlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。
例如,JavaServlet能够直接和Web服务器交互,而普通的CGI程序不能。
Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
可移植性好
JavaServlet用Java编写,ServletAPI具有完善的标准。
因此,为IPlanetEnterpriseServer写的Servlet无需任何实质上的改动即可移植到Apache、MicrosoftIIS或者WebStar。
几乎所有的主流服务器都直接或通过插件支持Servlet。
节省投资
不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。
JavaServlet与JSP(JavaServerPages)的比较:
JavaServerPages(JSP)是一种实现普通静态HTML和动态HTML混合编码的技术,JSP并没有增加任何本质上不能用Servlet实现的功能。
但是,在JSP中编写静态HTML更加方便,不必再用println语句来输出每一行HTML代码。
更重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分开:
比如,由页面设计者进行HTML设计,同时留出供JavaServlet程序员插入动态内容的空间。
2.3Struts框架
在我学习Struts框架时,我本人更愿意看到Struts的本质,其实Strurts框架就是一个核心类ActionServlet,这个类把所有请求都劫走了,然后根据请求的URL转发到相应的Action上,让Action处理相应的系统业务,表单数据由Struts替我们进行封装FormBean中,我们只需取出来进行操作。
在有Struts框架编程时我们不需要认真考虑里面的机制,而是要学会如何更好的去运用它。
如果有一天我愿意,我会在我做的项目中手动编写一个框架。
Strusts框架的基本组成如下:
1:
Clientbrowser(客户浏览器) 来自客户浏览器的每个HTTP请求创建一个事件。
Web容器将用一个HTTP响应作出响应。
2:
Controller(控制器) 控制器接收来自浏览器的请求,并决定将这个请求发往何处。
就Struts而言,控制器是以servlet实现的一个命令设计模式。
struts-config.xml文件配置控制器命令。
3:
业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。
就Struts而言,这是通过作为实际业务逻辑“瘦”包装的Action类完成的。
4:
Model(模型)的状态 模型表示应用程序的状态。
业务对象更新应用程序的状态。
ActionFormbean在会话级或请求级表示模型的状态,而不是在持久级。
JSP文件使用JSP标记读取来自ActionFormbean的信息。
5:
View(视图) 视图就是一个JSP文件。
其中没有流程逻辑,没有业务逻辑,也没有模型信息——只有标记。
标记是使Struts有别于其他框架(如Velocity)的因素之一。
6:
Struts中的Controller(控制器) 命令设计模式的实现:
Struts的控制器将事件(事件通常是HTTPpost)映射到类的一个servlet.
ActionServlet(Command)创建并使用Action、ActionForm和ActionForward.通过struts-config.xml文件配置该Command.从而扩展Action和ActionForm来解决特定的问题。
可以通过扩展ActionServlet来添加Command功能。
在Struts框架中控制器组件由三个部分构成:
(1)消息控制模块; 用户所有的提交请求都发往消息控制模块,在由消息总线模块根据视图映射模块找到消息处理模块来执行处理逻辑。
消息控制模块接收所有用户的请求,并根据请求视图找到处理。
Strtus中通过ActionServlet和RequestProcessor类来完成。
2,消息处理模块; 该模块执行该消息的逻辑处理,因此通常由用户扩展实现。
Struts中通过Action类来实现。
3,视图映射模块; 控制器逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。
Struts中配置模块通过ModuleConfig类来完成,而配置文件由struts-config.xml文件提供。
7:
Struts中的View(视图) 视图组件通过JSP组件实现的。
Struts框架对视图组件进行了扩展和封装。
Struts对视图的扩展提供了一组扩展服务器标签用来提供视图显示以及传递数据到处理缓冲,而处理缓冲由ActionForm的扩展类来实现。
Struts框架利用ActionFormBean来实现视图与控制器之间的数据的交互,维持会话级或请求级的模型的状态。
服务器标签主要包括:
Html视图标签; Logic逻辑流程控制标签; Bean数据缓冲读取标签;
8:
Struts中的Model(模型) 1,Struts框架中并没有定义特定的模型组件,而是希望由用户自己决定选择合理的模型组件。
J2EE中可用的模型组件包括:
JavaBean用户定义组件; EJB组件,由EJB容器实现组件; JDO未来J2EE数据访问模型; 一些扩展框架如:
Hibernate; 2,模型中状态的级别 会话级或请求级:
ActionFormbean来维持; 持久级:
模型组件来。
第三章总体设计
3.1需求分析
本系统是新闻发布系统。
由于网站新闻需要频繁性更新,每次更新管理员都要到服务器上更新,给管理员管理网站造成不便,因这种需求本系统诞生了。
在系统开发过程中寻找需求是一件十分重要的工作,在认真分析和调查后确定了本系统的需求要求。
本系统参与者:
管理员、普通用户、浏览者。
系统功能模块:
新闻浏览
用户登陆
用户注册
用户修改信息
管理新闻
添加新闻
管理用户
注销
系统功能模块图3.1
图3.1
3.2数据库设计
数据库命名为mynews,三张表user,news,admin。
User表字段(username,password,phone,qq)
图3.2
News表字段(id,title,author,message,post_time,username)
图3.3
Admin表字段(username,password)
图3.4
3.3功能模块简介
新闻浏览
首页显示网站所有新闻列表,根据新闻的数量分页,网站顾客可以自由浏览新闻。
用户登陆
用户登界面,用户需根据自己的类型(普通用户,管理员)进行选择性登陆,登录时需要填写验证码。
注意本系统部分功能只有在登陆后才被激活,且不同用户类型登陆后所具有的功能也不同。
图3.5是用户登录用例图
图3.5
用户注册
注册模块仅服务于普通用户,在网站上注册的用户身份仅是普通用户,管理员需到服务器注册信息。
图3.6新用户注册状态图
图3.6
用户修改信息
普通用户登陆后才能修改自己的信息,为了确保系统安全系统管理员不能在客户端修改信息,必须到服务器数据库直接修改信息。
图3.7用户修改信息序列图
图3.7
管理新闻
用户登陆后此模块被激活,为了确保其他用户在本站的利益,用户仅可以管理自己的新闻,管理新闻包括(删除,修改),系统管理员可以管理所有用户发表的新闻。
图3.8用户管理新闻用例图
图3.8
添加新闻
用户登录后可以发布新闻,发布的新闻将在系统首页新闻列表中显示出来,用户在发表新闻时若不填写作者,系统默认当前用户为作者。
发表时间不用填写,由系统根据服务器时间默认。
管理用户
此模块专属于系统管理员,系统管理员登陆后,可以查看本系统存在的所有普通用户的信息,信息包括(用户名,密码,联系电话,即时通信QQ)。
管理员可以根据需要,对系统中的任何用户进行封号处理。
图3.9管理员管理用户用例图
图3.9
注销
当用户登录后,不再进行操作时,为了减少服务器资源的浪费和自身账户的安全性,可以进行注销。
3.4框架的应用
使用struts框架需要搭建环境
拷贝strutslib下的所有jar到WEB-INF/lib下
Ø修改web.xml文件,配置ActionServlet
●指定struts-config.xml的位置
●ActionServlet的日志输出等级
●配置Apache的第三方组件的日志输出等级
●当Tomcat启动的时候执行ActionServlet的初始化方法
Ø提供struts-config.xml文件
Ø应用struts创建登录项目
Ø创建jsp页面(login.jsp,success.jsp,error.jsp)
Ø创建LoginActionForm.java,做数据收集的。
属性名与表单元素名一致
Ø创建LoginAction.java
Ø配置struts-config.xml文件
ØActionServlet
●由Struts提供:
org.apache.struts.action.ActionServlet
●是一个Servlet,需要在web.xml中配置
ØActionForm
●封装页面提交的数据
●继承自org.apache.struts.action.ActionForm
●需要在struts-config.xml中配置
●与JSP的交互:
从页面获取数据loginActionForm.getUsername();发送数据到页面request.setAttribute("username",username);
ØAction[****Action.java]
●封装一类客户操作
●继承自org.apache.struts.action.Action,实现execute方法
●需要在struts-config.xml中配置
Østruts-config.xml
●配置FormBean和ActionBean
●服务器启动时,Struts装载struts-config.xml信息
服务器启动后,根据web.xml加载ActionServlet读取struts-config.xml文件内容到内存。
输入用户名密码提交表单、提交到action属性的login.do,通过ActionServlet读struts-config.xml文件找到action下的path属性找到.do,通过name属性找form-beans中的form-bean的name属性得到ActionForm的包名类名,先实例化form,把表单的值填充给form,调用form的validate方法验证、ActionErrors返回null表示验证通过,否则失败返回input指定的页面.验证通过会实例化Action,执行Action的excute方。
整个项目的Struts-config.xml配置文件代码:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstruts-configPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration1.3//EN"
"struts-config_1_3.dtd">