毕业设计管理系统的设计与实现-设计说明书 联系客服

发布时间 : 星期三 文章毕业设计管理系统的设计与实现-设计说明书更新完毕开始阅读d1f78f0116fc700abb68fcd4

陕西理工学院

bean 在会话级或请求级表示模型的状态,而不是在持久级。JSP 文件使用 JSP 标记读取来自 ActionForm bean 的信息。

View(视图),视图就是一个 JSP 文件。其中没有流程逻辑,没有业务逻辑,也没有模型信息 -- 只有标记。标记是使 Struts 有别于其他框架(如 Velocity)的因素之一。

Struts 的控制器是将事件(事件通常是 HTTP post)映射到类的一个 servlet.正如您所料 —— 控制器使用配置文件以使您不必对这些值进行硬编码。时代变了,但方法依旧。

Action类,ActionForm 维护 Web 应用程序的会话状态。 ActionForm 是一个抽象类,必须为每个输入表单模型创建该类的子类。当我说 输入表单模型 时,是指 ActionForm 表示的是由 HTML 表单设置或更新的一般意义上的数据。 Action类是业务逻辑的一个包装。 Action 类的用途是将 HttpServletRequest 转换为业务逻辑。要使用 Action ,请创建它的子类并覆盖 process() 方法。

ActionServlet (Command) 使用 perform() 方法将参数化的类传递给 ActionForm .仍然没有太多讨厌的 request.getParameter() 调用。当事件进展到这一步时,输入表单数据(或 HTML 表单数据)已被从请求流中提取出来并转移到 ActionForm 类中。

考虑 Action 类的另一种方式是 Adapter 设计模式。 Action 的用途是“将类的接口转换为客户机所需的另一个接口。Adapter 使类能够协同工作,如果没有 Adapter,则这些类会因为不兼容的接口而无法协同工作。”。本例中的客户机是 ActionServlet ,它对我们的具体业务类接口一无所知。因此,Struts 提供了它能够理解的一个业务接口,即 Action .通过扩展 Action ,我们使得我们的业务接口与 Struts 业务接口保持兼容。 5 CSS简介

CSS的编辑方法同HTML一样,也可以是任何文本编辑器或网页编辑软件,还有专门用来编辑CSS的软件。 如果你写的CSS语句是当成外部样式表而在HTML文件中调用,那它的扩展名存成.css就可。当初技术人员想出HTML,主要侧重于定义内容,比如 p表示一个段落,h1表示标题,而并没有过多设计HTML的排版和界面效果。

随着Internet的迅猛发展,HTML被广泛应用,上网的人们当然希望网页做得漂亮些,因此HTML排版和界面效果的局限性日益暴露出来。为了解决这个问题,人们也走了不少弯路,用了一些不好的方法,比如给HTML增加很多的属性结果将代码变得很臃肿,将文本变成图片,过多利用Table来排版,用空白的图片表示白色的空间等。直到CSS出现。

CSS可算是网页设计的一个突破,它解决了网页界面排版的难题。可以这么说,HTML的Tag主要是定义网页的内容(Content),而CSS决定这些网页内容如何显示(Layout)。CSS的英文是

Cascading Style Sheets,中文可以翻译成串联式样式表。CSS按其位置可以分成三种:内嵌样式(Inline Style) ,内部样式表(Internal Style Sheet) ,外部样式表(External Style Sheet)。 6 HTML功能简介

Hyper Text Markup Language 超文本标记语言是一种用来制作超文本文档的简单标记语言。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX,WINDOWS等)。自1990年以来HTML就一直被用作World Wide Web上的信息表示语言,用于描述Homepage的格式设计和它与WWW上其它Homepage的连结信息。

HTML文档(即Homepage的源文件)是一个放置了标记的ASCII文本文件,通常它带有.html或.htm的文件扩展名。生成一个HTML文档主要有以下三种途径:1.手工直接编写(例如用你所喜爱的ASCII文本编辑器或其它HTML的编辑工具)。2.通过某些格式转换工具将现有的其它格式文档(如WORD文档)转换成HTML文档。3.由Web服务器(或称HTTP 服务器)一方实时动态地生成。

HTML语言是通过利用各种标记(tags)来标识文档的结构以及标识超链(Hyperlink)的信息。 虽然HTML语言描述了文档的结构格式,但并不能精确地定义文档信息必须如何显示和排列,而只是建议Web浏览器(如Mosiac,Netscape等)应该如何显示和排列这些信息,最终在用户面前的显示结果取决于Web浏览器本身的显示风格及其对标记的解释能力。这就是为什么同一文档在不同的浏览器中展示的效果会不一样。目前HTML语言的版本是2.0,它是基于SGML(Standard Generalized

第 30 页 共 41 页

陕西理工学院

Markup Language,标准广义置标语言,是一套用来描述数字化文档的结构并管理其内容的复杂的规范)中的一个子集演变而来的。虽然下一版本的标准HTML3.0(也称为HTML+)正在制订之中,但其中某

些部分的实验性标准草案已被广泛采用,大多优秀的Web浏览器(如Netscape等)都能解释HTML3.0中的部分新标记,因此在本章中介绍的一些HTML3.0新标记均已被多数浏览器所接受。 7 Js脚本语言简介

JS即javascrip,Javascript是一种由Netscape的LiveScript发展而来的脚本语言,主要目的是为了解决服务器终端语言,比如Perl,遗留的速度问题。当时服务端需要对数据进行验证,由于网络速度相当缓慢,只有28.8kbps,验证步骤浪费的时间太多。于是Netscape的浏览器Navigator加入了Javascript,提供了数据验证的基本功能。

JavaScript 的正式名称是 \。这个标准由 ECMA 组织发展和维护。ECMA-262 是正式的 JavaScript 标准。这个标准基于 JavaScript (Netscape) 和 JScript (Microsoft)。Netscape (Navigator 2.0) 的 Brendan Eich 发明了这门语言,从 1996 年开始,已经出现在所有的 Netscape 和 Microsoft 浏览器中。ECMA-262 的开发始于 1996 年,在 1997 年 7 月,ECMA 会员大会采纳了它的首个版本。

脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。举个最常见的例子,当我们点击网页上的E-mail地址时能自动调用Outlook Express或Foxmail这类邮件软件,就是通过脚本功能来实现的。也正因为脚本的这些特点,往往被一些别有用心的人所利用。例如在脚本中加入一些破坏计算机系统的命令,这样当用户浏览网页时,一旦调用这类脚本,便会使用户的系统受到攻击。所以用户应根据对所访问网页的信任程度选择安全等级,特别是对于那些本身内容就非法的网页,更不要轻易允许使用脚本。通过“安全设置”对话框,选择“脚本”选项下的各种设置就可以轻松实现对脚本的禁用和启用。

现在的脚本语言是比较多的,一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本(Script),就是含有bind和alias等命令的集合,你可以把这个集合存为一个独立的文件然后在需要的时候执行,这样就可以方便你在CS中的使用。脚本可以存为后缀名为.cfg的文件放在cstrike文件夹下,执行时在控制台输入:exec(脚本文件名).cfg即可。比如将一个脚本存为 buys.cfg文件,则在控制台中输入:execbuys.cfg则可以实现我们所需要的功能。要实现一个命令只要把这一过程定义(alias)好,并且分配一个键位给这个命令,以后只要按分配好的键位,就可以实现这一过程。所有的脚本都是通过这一方法实现的。

第 31 页 共 41 页

陕西理工学院

附录A:源码

1. BaseDaoImpl.java: 基本的方法实现类 package com.snut.dao.impl; import java.io.Serializable; import java.sql.SQLException; import java.util.List;

import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session;

import org.springframework.beans.factory.annotation.Autowired; import org.springframework.orm.hibernate3.HibernateCallback; import org.springframework.orm.hibernate3.HibernateTemplate; import com.snut.dao.BaseDao; import com.snut.util.Page;

public abstract class BaseDaoImpl implements BaseDao { public void delete(Object entity) { this.getHibernateTemplate().delete(entity); } public void delete(Class clazz,Serializable id) { if(get(clazz,id)!=null) this.getHibernateTemplate().delete(get(clazz,id)); } /** * 用于批量删除 * @param hql 删除语句 * @param param 删除条件的元素 */ public void delete(final String hql,final Object ... param) { this.getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session) throws HibernateException, SQLException { //return session.createSQLQuery(nativeSQL).executeUpdate(); Query query=session.createQuery(hql); if(param!=null){ for(int i=0;i

第 32 页 共 41 页

陕西理工学院

/**

* 可用于批量及批量删除的功能 * @param hql 更新或删除语句 */

public void execute(String hql) { this.getHibernateTemplate().bulkUpdate(hql); }

public void save(Object entity) { this.getHibernateTemplate().save(entity); }

public void saveOrUpdate(Object entity){ this.getHibernateTemplate().saveOrUpdate(entity); } /**

* 实体查询带分页功能 * @param page 分页信息 * @param hql 查询语句

* @param params 查询语句带的参数[没参数时可写 null] * @param values 查询语句带参数的值[没参数时可不写] */

@SuppressWarnings(\

public List findEntityListByHql(final Page page,final String hql,final String[] params,final Object ... values){ return (List) getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session)throws HibernateException, SQLException { Query query=session.createQuery(hql); query.setFirstResult((page.getPageNum() - 1) * page.getPageSize()).setFetchSize(page.getPageSize()).setMaxResults(page.getPageSize()); if(params!=null&&values!=null){ if(params.length!=values.length){ throw new RuntimeException(\?? values 长度不匹配! \ } for(int i=0;i

* 用于分页统计总数

* @param hql 统计总数的查询语句

* @param params 统计总数的查询语句所带的参数 * @return

第 33 页 共 41 页