河南理工大学
计算机科学与技术学院
课程设计报告
2009— 2010
学年第 1
学期
课程名称
应用技术
设计题目 新闻发布系统
学生姓名 韩公达
学号
专业班级 应用技术
班
年 月 日
目录
目 录
目 录
第 章 基础知识
数据库
与
框架
第 章 总体设计
需求分析
数据库设计
功能模块简介
框架的应用
第 章 详细设计
第 章 详细设计
新闻显示功能
用户注册功能
修改注册信息功能
管理新闻功能
添加新闻功能
管理用户
注销
第 章 功能实现
新闻显示功能
用户注册功能
修改注册信息功能
管理新闻功能
修改新闻功能
管理用户
注销
第 章 总结
第 章基础知识
第1章 基础知识
1.1 MySql 数据库
今天 MySQL 已被广泛地应用在 Internet 上的中小型网站中。由于其体积小、
速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降
低网站总体拥有成本而选择了 MySQL 作为网站数据库。
MySQL 是一个真正的多用户、多线程 SQL 数据库服务器。系统采用加载
纯 数据库驱动程序的方式操作数据库,目前 还不支持桥连接。
SQL ( 结 构 化 查 询 语 言 ) 是 世 界 上 最 流 行 的 和 标 准 化 的 数 据 库 语 言 。
MySQL 是 以 一 个 客 户 机 / 服 务 器 结 构 的 实 现 , 它 由 一 个 服 务 器 守 护 程 序
mysqld 和很多不同的客户程序和库组成,并且能够支持多平台。
1.2 JSP 与 Servlet
是一种独立于平台和协议的服务器端的 应用程序,可以生成动
态的 页面。
Java Servlet 是位于 Web 服务器内部的服务器端的 Java 应用程序,与传
统的从命令行启动的 Java 应用程序不同,Servlet 由 Web 服务器进行加载,
该 Web 服务器必须包含支持 Servlet 的 Java 虚拟机。
Java Servlet 与 Applet 的比较:
相似之处:
它们不是独立的应用程序,没有 main()方法。
它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
它们都有一个生存周期,包含 init()和 destroy()方法。
不同之处:
Applet 具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
Java Servlet 则没有图形界面,运行在服务器端。
第 章基础知识
Java Servlet 与 CGI(Common Gateway Interface) 的比较:
与传统的 CGI 和许多其他类似 CGI 的技术相比,Java Servlet 具有更高的
效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来
的技术发展过程中,Servlet 有可能彻底取代 CGI。
高效
在传统的 CGI 中,每个请求都要启动一个新的进程,如果 CGI 程序本身的
执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在
Servlet 中,每个请求由一个轻量级的 Java 线程处理(而不是重量级的操作系
统进程)。
在传统 CGI 中,如果有 N 个并发的对同一 CGI 程序的请求,则该 CGI 程序
的代码在内存中重复装载了 N 次;而对于 Java Servlet,处理请求的是 N 个线
程,只需要一份 Servlet 类代码。在性能优化方面,Servlet 也比 CGI 有着更
多的选择。
方便
Java Servlet 提供了大量的实用工具例程,例如自动地解析和解码 HTML
表单数据、读取和设置 HTTP 头、处理 Cookie、跟踪会话状态等。
功能强大
在 Java Servlet 中,许多使用传统 CGI 程序很难完成的任务都可以轻松地
完成。例如,Java Servlet 能够直接和 Web 服务器交互,而普通的 CGI 程序
不能。Servlet 还能够在各个程序之间共享数据,使得数据库连接池之类的功
能很容易实现。
可移植性好
Java Servlet 用 Java 编写,Servlet API 具有完善的标准。因此,为
IPlanet Enterprise Server 写的 Servlet 无需任何实质上的改动即可移植到
Apache、Microsoft IIS 或者 WebStar。几乎所有的主流服务器都直接或通过
插件支持 Servlet。
节省投资
不仅有许多廉价甚至免费的 Web 服务器可供个人或小规模网站使用,而且
对于现有的服务器,如果它不支持 Servlet 的话,要加上这部分功能也往往是
免费的(或只需要极少的投资)。
Java Servlet 与 JSP(JavaServer Pages) 的比较:
!是一种实现普通静态 "#$ 和动态 "#$ 混合编码的
技术, 并没有增加任何本质上不能用 实现的功能。但是,在 中
编写静态 "#$ 更加方便,不必再用 %&'' 语句来输出每一行 "#$ 代码。更
重要的是,借助内容和外观的分离,页面制作中不同性质的任务可以方便地分
开:比如,由页面设计者进行 "#$ 设计,同时留出供 程序员插入
动态内容的空间。
第 章基础知识
1.3 Struts 框架
在我学习 框架时,我本人更愿意看到 的本质,其实 框架
就是一个核心类 ()&*',这个类把所有请求都劫走了,然后根据请求的
+,$ 转发到相应的 ()&*' 上,让 ()&*' 处理相应的系统业务,表单数据由
替我们进行封装 -*.' 中,我们只需取出来进行操作。在有 框
架编程时我们不需要认真考虑里面的机制,而是要学会如何更好的去运用它。
如果有一天我愿意,我会在我做的项目中手动编写一个框架。
Strusts 框架的基本组成如下:
,/&'*0(客户浏览器) 来自客户浏览器的每个"##请求创
建一个事件。容器将用一个"##响应作出响应。
111111,/*'*(控制器) 控制器接收来自浏览器的请求,并决定将这个
请求发往何处。 就而言,控制器是以实现的一个命令设计模式。
2)*'3&4文件配置控制器命令。
,业务逻辑 业务逻辑更新模型的状态,并帮助控制应用程序的流程。
就而言,这是通过作为实际业务逻辑“瘦”包装的()&*'类完成的。
,*5(模型)的状态 模型表示应用程序的状态。业务对象更新应用
程序的状态。 ()&*'-*'在会话级或请求级表示模型的状态,而不是在
持久级。 文件使用标记读取来自()&*'-*'的信息。
1111111,6&0(视图) 视图就是一个文件。其中没有流程逻辑,没有业
务逻辑,也没有模型信息——只有标记。 标记是使有别于其他框架
(如6*)&)的因素之一。
11 中的 /*'*(控制器) 命令设计模式的实现: 的控制器将
事件(事件通常是"##%*)映射到类的一个
()&*' ( /*'5 ) 创 建 并 使 用 ()&*' 、 ()&*'-* 和
()&*'-*0511通过 2)*'3&4文件配置该/*'5从而扩展()&*'和
()&*'-*来解决特定的问题。 可以通过扩展()&*'来添加/*'5
功能。 在 框架中控制器组件由三个部分构成: ,消息控制模块;
用户所有的提交请求都发往消息控制模块,在由消息总线模块根据视图映射模
块找到消息处理模块来执行处理逻辑。 消息控制模块接收所有用户的请求,
并根据请求视图找到处理。 中通过 ()&*' 和 ,*)* 类
来完成。 ,消息处理模块; 该模块执行该消息的逻辑处理,因此通常由用
户扩展实现。 中通过 ()&*' 类来实现。 ,视图映射模块; 控制器
逻辑和视图逻辑之间的结合是通过配置模块和配置文件建立其的链接。
中配置模块通过 *5/*'3& 类来完成,而配置文件由 2)*'3&4 文件提
供。
中的 6&0(视图) 视图组件通过 组件实现的。 框架对视
图组件进行了扩展和封装。 对视图的扩展提供了一组扩展服务器标签用
来提供视图显示以及传递数据到处理缓冲,而处理缓冲由 ()&*'-* 的扩展类
来实现。 框架利用 ()&*'-*.' 来实现视图与控制器之间的数据的
交互,维持会话级或请求级的模型的状态。 服务器标签主要包括: " 视