图书管理系统Struts Web应用开发文档格式.docx
《图书管理系统Struts Web应用开发文档格式.docx》由会员分享,可在线阅读,更多相关《图书管理系统Struts Web应用开发文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
![图书管理系统Struts Web应用开发文档格式.docx](https://file1.bdocx.com/fileroot1/2023-1/23/622ccf1e-b943-4b9f-ad3a-28fbd096da4b/622ccf1e-b943-4b9f-ad3a-28fbd096da4b1.gif)
图书馆管理系统可以实现以下功能:
身份验证功能:
提示用户在页面的文本框中输入用户名和密码,然后单击提交按钮,系统在数据库表user中查询该用户是否存在。
如果操作成功,则进入图书录入页面;
如果操作不成功,则返回图书登录页面,让用户重新录入图书信息。
如图2所示:
图2身份验证
用户输入用户名与密码进行提交进入图书馆管理系统主界面,如图3所示:
图3图书馆管理系统主界面
用户可选择系统提供的选项进行所需的查询进入下一级界面图书录入并将其添加入数据库。
图书录入功能:
提示用户在页面的文本框中输入书名、作者和出版社等图书信息,然后单击提交按钮,系统就在数据表book中插入一条新的图书记录。
如果操作成功,则返回成功页面;
如果操作不成功,则返回图书录入页面,让用户重新录入图书信息。
如图4所示:
图4登录界面
图书查询功能:
提示用户在页面的文本框中输入书名、作者和出版社等查询条件,然后单击提交按钮,系统在数据库表book中查询符合条件的记录,如果存在符合条件的记录,则返回“in”的信息;
如果不存在符合条件的记录,则返回“out”的信息。
如图5所示:
图5查询界面
用户修改功能:
首先让用户输入用户名,再输入新的用户名,再输入原有密码,再输入新的密码。
单击提交按钮,则系统对数据库进行更新操作。
如图6所示:
图6用户修改界面
添加功能:
可以对图书进行添加,输入书名、书号、作者、日期,点击提交,把图书信息添加到数据库中。
如图7所示:
图7添加界面
2.2软件开发技术
2.2.1JSP和Servlet
1.JSP
JSP(JavaServerPages)是由SunMicrosystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。
JSP技术是用JAVA语言作为脚本语言的,JSP网页为整个服务器端的JAVA库单元提供了一个接口来服务于HTTP的应用程序。
在传统的网页HTML文件(*.htm,*.html)中加入Java程序片段(Scriptlet)和JSP标记(tag),就构成了JSP网页(*.jsp)。
Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序片段,然后将执行结果以HTML格式返回给客户。
程序片段可以操作数据库、重新定向网页以及发送email等等,这就是建立动态网站所需要的功能。
所有程序操作都在服务器端执行,网络上传送给客户端的仅是得到的结果,对客户浏览器的要求最低,可以实现无Plugin,无ActiveX,无JavaApplet,甚至无Frame。
JSP的优点:
对于用户界面的更新,其实就是由WebServer进行的,所以给人的感觉更新很快。
所有的应用都是基于服务器的,所以它们可以时刻保持最新版本。
客户端的接口不是很繁琐,对于各种应用易于部署、维护和修改。
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
request用户端请求,此请求会包含来自GET/POST请求的参数
response网页传回用户端的回应
pageContext网页的属性是在这里管理
session与请求有关的会话期
applicationservlet正在执行的内容
out用来传送回应的输出
configservlet的构架部件
pageJSP网页本身
exception针对错误网页,未捕捉的例外
你可以使用它们来存取执行JSP代码的servlet。
为了避免谈论到太多ServletAPI的细节,让我们来检视一些你可以利用它们来做的事:
Microsoft公司的ASP技术也是动态网页开发技术。
JSP和ASP从形式上非常相似,ASP程序员一眼就能认出<
%%>
以及<
%=%>
。
但是深入探究下去会发现它们很多的差别,其中最主要的有以下三点:
(1)JSP的效率和安全性更高
ASP以源码形式存放,以解释方式运行,每次ASP网页调用都需要对源码进行解释,运行效率不高。
另外,IIS的漏洞曾使得许多网站源程序大曝光,包括笔者以前用ASP开发的网站,ASP程序全部被人下载了去。
JSP在执行以前先被编译成字节码(bytecode),字节码由Java虚拟机(JavaVirtualMachine)解释执行,比源码解释的效率高;
服务器上还有字节码的Cache机制,能提高字节码的访问效率。
第一次调用JSP网页可能稍慢,因为它被编译成Cache,以后就快得多了。
同时,JSP源程序不大可能被下载,特别是JavaBean程序完全可以放到不对外的目录中。
(2)JSP的组件(Component)方式更方便
ASP通过COM来扩充复杂的功能,如文件上载、发送email以及将业务处理或者复杂计算分离出来成为独立可重复利用的模块。
JSP通过JavaBean实现了同样的功能扩充。
在开发方面,COM的开发远比JavaBean复杂和繁琐,学会ASP不难,但学会开发COM可不简单。
而JavaBean就简单多了,从本文上述示例中可以看出开发JavaBean很方便。
在维护方面,COM必须在服务器上注册,如果修改了COM程序,就必须重新注册,甚至必须关机和重新启动。
JavaBean则不需要注册,放在CLASSPATH包含的目录中就行了。
如果JavaBean进行了修改,则JSWDK和Tomcat现在还需要关闭和重新运行(但不是关机),但开发者已经许诺将在以后的版本中做到不需要关闭服务器。
另外JavaBean是完全的OOP,可以针对不同的业务处理功能方便地建立一整套可重复利用的对象库,例如用户权限控制、email自动回复等等。
(3)JSP的适应平台更广
ASP目前仅适用于NT和IIS。
虽然Unix下有ChiliSoft的插件来支持ASP,但是ASP本身的功能有限,必须通过ASP+COM的组合来扩充,Unix下的COM实现起来非常困难。
JSP则不同,几乎所有平台都支持Java,JSP+JavaBean可以在所有平台下通行无阻。
NT下IIS通过一个插件,例如JRUN(
从一个平台移植到另外一个平台,JSP和JavaBean甚至不用重新编译,因为Java字节码都是标准的与平台无关的。
笔者将在NT下实验的JSP网页原封不动地拿到Linux下就运行起来了,感觉非常满意。
结论:
综上所述,JSP可谓是构建动态网站的一个利器,故推荐给读者,祝愿你们掌握JSP,开发出优秀的网站。
ASP程序员也请试一下,JSP里也有session、request、response/out等对象,亲自试试看如何。
2.Servlet
Servlet是用Java编写的Server端程序,它与协议和平台无关。
Servlet运行于Java-enabledWebServer中。
JavaServlet可以动态地扩展Server的能力,并采用请求-响应模式提供Web服务。
JSP是JavaServerPage的缩写,是Sun公司出品的Web开发语言,它类似于Microsfot公司的ASP,但由于它的跨平台性,愈来愈受到广泛的应用。
Servlet与Jsp之间的交互为开发Web服务提供了优秀的解决方案。
为更好地生成动态网页,servlet提供了快捷、强大、灵活的开发环境。
开发出来的servlet可以在服务器的进程空间里运行,并能同时处理多个请求,因此,采用servlet方案系统的性能将会比其他解决方案优秀得多。
servlet可以使用各种JavaAPI和第三方厂商提供的组件类,而这些都是Java2企业版(J2EE)的有机组成部分。
当然,最值得称道的便是servlet的平台无关性--真正做到了"
一次编写,到处运行"
(Writeonce,Serveanywhere)。
JAVAServlet的优势:
Servlet可以和其他资源(文件、数据库、Applet、Java应用程序等)交互,以生成返回给客户端的响应内容。
如果需要,还可以保存请求-响应过程中的信息。
采用Servlet,服务器可以完全授权对本地资源的访问(如数据库),并且Servlet自身将会控制外部用户的访问数量及访问性质
Servlet可以是其它服务的客户端程序,例如,它们可以用于分布式的应用系统中,可以从本地硬盘,或者通过网络从远端硬盘激活Servlet。
Servlet可被链接(chain)。
一个Servlet可以调用另一个或一系列Servlet,即成为它的客户端。
采用ServletTag技术,可以在HTML页面中动态调用Servlet。
ServletAPI与协议无关。
它并不对传递它的协议有任何假设。
像所有的Java程序一样,Servlet拥有面向对象Java语言的所有优势
Servlet提供了Java应用程序的所有优势——可移植、稳健、易开发。
使用Servlet的Tag技术,Servlet能够生成嵌于静态HTML页面中的动态内容。
一个Servlet被客户端发送的第一个请求激活,然后它将继续运行于后台,等待以后的请求。
每个请求将生成一个新的线程,而不是一个完整的进程。
多个客户能够在同一个进程中同时得到服务。
一般来说,Servlet进程只是在WebServer卸载时被卸载。
2.2.2JavaBean
1.JavaBean概述
JavaSoft为JavaBean定义的任务为:
“Writeone,runanywhere,reuseeverywhere”,即“一次性编写,任何地方执行,任何地方重用”。
这个任务实际上就是要解决困扰软件工业的日益增加的复杂性,提供一个简单的、紧凑的和优秀的问题解决方案。
JavaBean组件在任何地方运行是指组件可以在任何环境和平台上使用,这可以满足各种交互式平台的需求。
由于JavaBean组件在任何地方执行不仅是指组件可以在不同的操作平台上运行,还包括在分布式网络环境下运行,这一点在现在高速发展的网络时代其意义是十分重要的。
2.JavaBean的方法
JavaBean中的方法就是通常的Java方法,它可以从其他组件或应用程序中调用,JavaBean中的所有公有(public)方法都可以直接被外部调用。
由于JavaBean归根到底是Java对象,所以调用这个对象的公有方法是与这个对象进行交互的唯一途径。
3.JavaBean的属性
JavaBean提供了高层次的属性概念。
从面向对象的角度来看,属性就是传统的对象属性,只不过是在JavaBean中还得到了属性的读取和写入的JavaBeanAPI支持。
JavaBean属性是与bean的内部状态有关的命名的性质,属性的值可以通过调用适当的bean方法进行读写。
每个JavaBean属性通常都应该遵循一定的命名规则,这样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查询或修改属性值对JavaBean进行操作。
JavaBean属性共有四种:
单值属性、索引属性、关联属性和限制属性。
4.JavaBean事件
JavaBean与其他软件组件交流信息的主要方式是发送和接受事件,事件为JavaBean组件提供了一种发送通知给其他组件的方法,在新的AWT事件模型中,一个事件源可以注册事件监听器对象,当事件源检测到发生某种事件时,它将调用事件监听器对象中的一个适当的事件处理方法来处理该事件。
2.2.3MVC设计模式
MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式,好象最早是在Smaltalk中出现。
MVC包括三类对象。
Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。
模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。
对于基于JSP的系统来说,也就是在使用JSP时,有相应的文件去实现相应的操作,通常JSP只负责View,也就是只负责显示页面。
MVC是一个设计模式,它强制性地使应用程序的输入、处理和输出分开。
使用MVC模式,应用程序被分成三个核心部件:
模型、视图、控制器,它们各自处理自己的任务。
模型(Model)模型是应用程序的主体部分。
模型表示业务数据,或者业务逻辑。
在MVC的三个部件中,模型往往拥有最多且最重要的处理任务。
它可能使用EJBs等技术来处理数据库的访问。
被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型就能为多个视图提供数据。
由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
视图(View)视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。
MVC能为应用程序处理很多不同的视图。
其实,在视图中并没有真正的处理发生,视图只是作为一种输出数据并允许用户操纵的方式。
控制器(controller)控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。
所以当用户单击Web页面中的超链接或者提交HTML表单时,控制器本身不输出任何东西和做任何处理,它只是接受请求并决定调用哪个模型构件去处理请求,然后再决定用哪个视图来显示模式处理后返回的数据。
MVC模式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的维护性、可扩展性、可移植性和组件的可复用性。
早期的程序中,如果不注意对数功能和显示的解耦合,常常会导致程序的复杂及难以维护。
很多VB,Delphi等RAD程序都有这种问题。
甚至现在的C#,Java有时候也会出现把业务逻辑写在显示模块中的现象管MVC设计模式很早就提出,但但在Web项目的开发中引入MVC却是步履维艰。
主要原因:
一是在早期的Web项目的开发中,程序语言和HTML的分离一直难以实现。
CGI程序以字符串输出的形式动态地生成HTML内容。
后来随着脚本语言的出现,前面的方式又被倒了过来,改成将脚本语言书写的程序嵌入在HTML内容中。
这两种方式有一个相同的不足之处即它们总是无法将程序语言和HTML分离。
二是脚本语言的功能相对较弱,缺乏支持MVC设计模式的一些必要的技术基础。
直到基于J2EE的JSPModel2问世时才得以改观。
它用JSP技术实现视图的功能,用Servlet技术实现控制器的功能,用JavaBean技术实现模型的功能。
MVC具有以下优点:
可靠性:
表示层和业务层明显分开,对表示层的修改不需要重新编译模型和控制器。
高复用和适应性:
MVC使用户能够将视图的类型多样化,而访问的服务器不需要修改任何代码。
客户端可以是Web浏览器和无线浏览器(WAP)。
低开发量低生命周期开销:
MVC可以尽可能少地使用程序员来开发和维护用户接口。
开发速度快:
由于控制器程序员只需关注业务层程序(Java程序)的开发,视图程序员只关心表示层程序(HTML和JSP)的开发,开发时间可以大大缩短。
可维护性:
表示层和业务逻辑分开使得维护和修改StrutsWeb应用更加容易。
2.2.4Struts技术
1.Struts的概念和体系结构
Struts有一组相互协作的类、Serlvet以及JspTagLib组成。
基于Struts构架的web应用程序基本上符合JSPModel2的设计标准,可以说是MVC设计模式的一种变化类型。
根据上面对framework的描述,我们很容易理解为什么说Struts是一个webframwork,而不仅仅是一些标记库的组合。
但Struts也包含了丰富的标记库和独立于该框架工作的实用程序类。
Struts有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)。
在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和ObjectRelationBridge。
在视图层,Struts能够与JSP,VelocityTemplates,XSL等等这些表示层组件想结合。
Struts是一个为开发基于模型(Model)-视图(View)-控制器(Controller)(MVC)模式的应用架构的开源框架,是利用JavaServlet和JSP构建Web应用的一项非常有用的技术。
由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,因而吸引了众多的开发人员的关注。
Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
其最初萌芽于CraigMcClanahan的构思,诞生至今也一年有余了。
现在,Struts是Apache软件基金会旗下Jakarta项目组的一部分,其官方网站是http:
//jakarta.apache.org/struts。
由于Struts能充分满足应用开发的需求,简单易用,敏捷迅速,在过去的一年中颇受关注。
Struts把Servlet、JSP、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。
Struts框架可分为以下四个主要部分,其中三个就和MVC模式紧密相关:
模型(Model),本质上来说在Struts中Model是一个Action类(这个会在后面详细讨论),开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的。
视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用她们我们可以快速建立应用系统的界面。
控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。
一堆用来做XML文件解析的工具包,Struts是用XML来描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息的。
使用Struts之前,咱们必先设置好JSP服务器,以便让服务器在用户请求时,知道该如何将指定后缀的请求转到相应的Controller-StrutsActionServlet处理,当然,这些配置信息都一般在服务器启动时通过web.xml文件读入的。
我们可以在web.xml定义多个Controlloer,为每一个应用定义一个。
Struts框架提供了若干个标签库,它们有各自不同的用途。
由于这些库还可以脱离Struts框架单独使用,这样我们也可以在其他系统中尝试使用这些标签库,它们包括:
*struts-html-这个标签库用来创建动态的HTML页面和表单。
*struts-bean-提供了类似甚至更强于中的功能。
*struts-logic-用于在页面输出文本信息时的条件、循环等流程的控制。
*struts-template-用于产生有共同风格的动态JSP页面模板。
此外,可定制标签库在Struts中还有一大用处是,通过资源文件的方式来实现应用系统的多语言特性,应用Struts的系统若想将系统中的用户交互信息换一种语言的会很简单,更换一个不同的资源文件就可以了。
Struts框架可能对于大多数开发人员来说,是一门比较新的技术。
但我们现在已经可以在不少的应用系统中看到Struts的身影了,而我们大可在新的应用或正在开发的JSP项目中使用Struts框架。
图8Struts体系结构
Struts提供了用来封装逻辑的各种定制JSP标记,因此页面设计者可以将主要精力花在页面的可视特征上,而不必主要考虑Java语法或其它JSP语法,在下列标识库描述符中引用了Struts标记:
Struts-bean.tld
使访问bean以及新bean的定义更容易,,为了实现国际化,应使用不同的属性文件
struts-html.tld
提供显示HTML对象(例如,表单、按钮和复选框)的简便方法
struts-logic.tld
支持逻辑构造,以便可以有条件地显示文本或者作为处理循环的结果来显文本
struts-template.tld
支持使用在运行时可以修改的JSP模板
2.Struts的与WebApp的关系
既然struts叫做webframework,那么其肯定主