【VC++开源代码栏目提醒】:网学会员VC++开源代码为您提供struts+hibernate - 讲义教程参考,解决您在struts+hibernate - 讲义教程学习中工作中的难题,参考学习。
2004-4-20strushibernate1基于Struts和Hibernate的J2EE应用??张红宇??hongyu.zhangchinacreator.com 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate2内容??Struts简介Struts??Hibernate简介Hibernate??基于struts和hibernate的J2EE应用基于这两个框架的J2EE架构??学习资料和参考文献struts和hibernate的一些学习资料及本文的参考文献 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate3Struts??Struts简介??Struts与MVC??Struts核心组件??Struts流程??Struts开发流程??Struts开发工具 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate4Struts简介??Struts最早于2002年5月作为Apache Jakarta项目的组成部分问世。
项目的创立者希望通过对该项目的研究改进和提高Java Server Pages JSPs、Servlet、标签库以及面向对象的技术水准。
像其他的Apache组织的项目一样Struts也是开放源码项目。
当前最高发行版本为Struts1.1可以到http://jakarta.apache.org/struts下载。
??Struts是一种web框架framework一个比较好的MVC框架提供了对开发MVC系统的底层支持它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate5MVCSun公司在jsp早期制定了两种规范称为model1和model2。
??Model 1–以JSP为中心的开发模型。
在JSP页面中同时实现显示、业务逻辑和流程控制从而可以快速地完成应用开发。
适于小项目的开发。
–不利于应用扩展和更新不利于应用系统业务的重用和改动。
??Model 2–基于MVC的模型。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate6MVC??“Model”代表的是应用的业务逻辑通过JavaBeanEJB组件实现??“View”是应用的表示层由JSP页面产生??“Controller”是提供应用的处理过程控制一般是一个Servlet通过这种设计模型把应用逻辑处理过程和显示逻辑分成不同的组件实现以实现
代码重用和易于修改。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate7MVC??Model2容易使系统出现多个Controller并且队页面导航的处理比较复杂。
有些人觉得Model2不够好于是Craig R. McClanahan 2000年5月提交了一个WEB framework给Java Community。
这就是后来的Struts。
??Struts其实就是Model2基础上实现的一个MVC架构。
它只有一个中心控制器。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate8Struts与MVC??Struts提供了Controller组件并且整合了其它技术来实现Model和View。
–对于Modelstruts可以使用标准数据访问技术如JDBC和EJB也可以使用第三方工具如Hibernate、iBATIS、O/R桥。
–至于Viewstruts支持jsp包括JSTLJSP Standard Tag Library和JSFJava Server Faces也可以是Velocity模板、XSLTthe Extensible Stylesheet Language Transformations及其它表示系统。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate9Struts核心组件ActionServlet 控制器Action 包含事务逻辑ActionForm 显示模块数据ActionMapping 帮助控制器将请求映射到操作ActionForward 用来指示操作转移的对象ActionError 用来存储和回收错误Struts标记库可以减轻开发显示层次的工作 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate10Struts核心组件??ActionServlet是一个FrontController它是一个标准的Servlet是javax.servlet.http.HttpServlet类的扩展。
它将request转发给RequestProcessor来处理??RequestProcessor根据提交过来的url如.do从ActionMapping 中得到相应的ActionForm和Action。
然后将request的参数对应到ActionForm中进行form验证。
如果验证通过则调用Action的execute方法来执行Action最终返回ActionFoward。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate11Struts核心组件??ActionFoward是对mapping中一个foward的包装对应于一个url??ActionMapping是ActionConfig的子类实质上是对struts-config.xml的一个映射从中可以取得所有的配置信息??Action是用于执行业务逻辑的RequsestHandler。
每个Action都只建立一个instance。
Action不是线程安全的所以不应该在Action中访问特定资源。
对于多个类似的Action可以使用DispatchAction。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate12Struts核心组件??ActionForm使用了ViewHelper模式是对HTML中form的一个封装。
其中包含有validate方法用于验证form数据的有效性。
ActionForm是一个符合JavaBean规范的类所有的属性都应满足get和set对应。
对于一些复杂的系统还可以采用DynaActionForm来构造动态的Form即通过预制参数来生成Form。
这样可以更灵活的扩展程序。
ActionServlet使用ActionForm来保存请求的参数这些bean的属性名称与HTTP请求参数中的名称相对应控制器将请求参数传递到ActionForm bean的实例然后将这个实例传送到Action类。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate13Struts核心组件??ActionErrors是对错误信息的包装一旦在执行action或者form.validate中出现异常即可产生一个ActionError并最终加入到ActionErrors。
在Form验证的过程中如果有Error发生则会将页面重新导向至输入页并提示错误 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate14Struts流程 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate15Struts流程1.视图中的JSP 由于用户的交互作用而生成一个请求Struts 定制标记库来构建JSP2.Struts ActionServlet 接收请求。
这个ActionServlet 使用配置文件来确定要对请求执行的操作从而调用Struts Action 类合适的特定于应用程序的子类。
此外它必须从请求生成被发送到这个操作的表单bean。
3.Action 子类与永久存储器和组成模型的一些应用程序交互——调用业务模块接口返回结果。
4.ActionServlet接受Action 的Execute方法的返回值ActionForward确定显示结果的合适的视图组件。
5.ActionServlet 将这个信息转发给操作所选择的视图组件一般来说是JSP然后这个组件将结果显示出来。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate16 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate17Struts1.收集和定义应用需求。
2.基于数据采集和显示的原则定义和开发“屏幕显示”需求。
3.为每一个“屏幕显示”定义访问路径。
4.定义ActionMappings建立到应用业务逻辑之间的联系。
5.开发满足“屏幕显示”需求的所有支持对象。
6.基于每一个“屏幕显示”需求提供的数据属性莱创建对应的ActionForm对象。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate18Struts7. 开发被ActionMapping调用的Action对象。
8. 开发应用业务逻辑对象BeanEJB等等。
9. 对应ActionMapping数据的流程创建JSP页面。
10建立合适的的配置文件struts-config.xmlweb.xml。
通过它们配置Struts中的各个模块之间的交互。
11开发/测试/部署。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate19Struts开发工具??目前很多大型公司也注意到Struts它们的工具也提供相应的对Struts开发的支持。
比如IBM WSAD5.0Websphere Studio Application DeveloperBEA 的WebLogic Workshop 8.1等。
另外一些公司专么提供可视化的Struts集成开发环境。
如下页表所列??其实这些主要是提供对taglib的图形化的操作。
从这个角度来说我觉得直接在Dreamweaver里装个支持Tag的插件比较好很小只有几K又方便。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate20Struts开发工具应用程序性质网址Adalon 商业软件http://www.synthis.com/products/adalon Easy Struts 开放源码http://easystruts.sourceforge.net/ Struts Console 免费http://www.jamesholmes.com/struts/console JForms 商业软件http://www.solanasoft.com/ Camino 商业软件http://www.scioworks.com/scioworks_camino.html Struts Builder 开放源码http://sourceforge.net/projects/rivernorth/ StrutsGUI 免费http://www.alien-factory.co.uk/struts/struts-index.html 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate21Hibernate简介??Hibernate–一种对象和关系之间映射ORM的框架–它对JDBC进行了轻量级的对象封装使得Java程序员可以使用对象编程思维来操作关系数据库。
–
开源、有丰富的文档和稳定的开发背景。
–Hibernate 目前最高版本2004年2月4日发布的是2.1.2版。
–Hibernate官方网站http://hibernate.bluemars.net/http://www.hibernate.org/ 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate22Hibernate简介??配置Hibernate–Classpath–初始化文件Hibernate.properties或hibernate.cfg.xml ??创建持久对象??编写对象关系映射描述Classname.hbm.xml ??编写业务逻辑类。
这些JavaBean 实现了具体的业务逻辑也封装了对Hibernate的访问。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate23Hibernate简介 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate24Strutshibernate??应用环境的配置??Struts和hibernate的MVC实现??基于这两个框架的J2EE web应用??一个strutshibernate的小例子 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate25应用环境的配置??struts和hibernate均为
开源的应用程序开发包。
??到相应网站下载压缩包后添加到环境变量里。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate26Struts和hibernate的MVC实现??Struts和Hibernate这两个框架结合起来很好地实现了MVC的设计模式ActionServletMappingActionHibernateJSPTaglibViewModelControlController:ActionServletModel:ActionHibernateView:JSPTaglib 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate27StrutsHibernate的J2EE应用??基于该架构的J2EE应用架构图JSP页面JSP技术、TaglibJSP页面JSP技术、Taglib控制组件、业务逻辑ActionServlet、Action、Java类等控制组件、业务逻辑ActionServlet、Action、Java类等O/R Mapping、持久对象、JDOO/R Mapping、持久对象、JDO关系数据库RDBMS关系数据库RDBMS表示层业务层数据转换和访问层存储strutshibernate 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate28StrutsHibernate的J2EE应用Client提交请求ActionServlet寻找请求对应的Action和ActioForm执行Action的Execute方法返回ActionForwardJSP结合TaglibActionFormAction.ExecuteJavaBean业务逻辑模块接口O/R映射文件关系数据库返回请求处理结果 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate29一个strutshibernate的小例子??需求–实现员工登录。
当登录成功时下个页面显示×××员工姓名欢迎你使用本系统。
登录不成功时仍返回登录页面–所需页面signin.jsp和detail.jsp–登录时输入员工编号和口令。
–员工信息存放在oracle数据库中其中包括员工编号、姓名和口令。
–要求用struts和Hibernate两个框架来实现。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate30一个strutshibernate的小例子??分析1–有两个页面signin.jsp和detail.jsp–一个员工类Staff其属性有staffCodeString、staffName String、staffPassword String–Oracle中有一Staff表字段有staffCodechar、staffName char 、staffPassword char 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate31一个strutshibernate的小例子??分析2–有一StaffForm实现Staff类三个属性的get、set方法–StaffAction调用实现业务逻辑的接口。
–StaffMgr描述其提供的业务逻辑接口。
–StaffMgrImpl接口的实现类。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate32一个strutshibernate的小例子??部署–解压下载的struts包和hibernate包–struts包里有struts.jar和taglib等。
Hibernate包里有hibernate2.jar、dom4j.jar等22个.jar文件。
必要的加入classpath。
如struts.jar、hibernate2.jar、classes12.jar、cglib-asm.jar、odmg.jar、dom4j.jar、commons-lang.jar。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate33一个strutshibernate的小例子??设计页面–signin.jsp–先做静态页面 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate34一个strutshibernate的小例子??设计页面–detail.jsp–这是静态页面 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate35一个strutshibernate的小例子??编写资源文件–中文ApplicationResources_ISO.propertiesbutton.cancel取消button.confirm确定button.reset清除button.save保存button.submit提交button.return返回button.search搜索button.delete删除head.welcome欢迎您登录本系统signin.titleexample-signindetail.titleexample-detail登录example.code员工编号example.password登录口令example.name姓名 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate36一个strutshibernate的小例子??编写资源文件–struts国际化的方式有两种??使用filter??直接转换编码–我们使用的是第二种由ApplicationResources_ISO.properties重新编码生成ApplicationResources_cn.properties–方法在DOS下执行命令native2ascii –encoding gb2312 ApplicationResources_ISO.properties ApplicationResources_cn.properties 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate37一个实例??编写资源文件–英文ApplicationResources_en.propertiesbutton.cancelcancelbutton.confirmconfirmbutton.resetresetbutton.savesavebutton.submitsubmitbutton.returnreturnbutton.deletedeletesignin.titleexample-signindetail.titleexample-detailhead.welcomewelcome to visit the systemexample.codecodeexample.passwordpasswordexample.namename 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate38一个实例–signin.jsp
代码-1lt page contentTypequottext/html charsetgb2312quot languagequotjavaquot importquotjava.sq lt taglib uriquot/WEB-INF/struts-bean.tldquot prefixquotbeanquot gtlt taglib uriquot/WEB-INF/struts-html.tldquot prefixquothtmlquot gtlt taglib uriquot/WEB-INF/struts-logic.tldquot prefixquotlogicquot gtlthtmlgtltheadgtltmeta http-equivquotContent-Typequot contentquottext/html charsetgb2312quotgtlttitlegtltbean:message keyquotsignin.titlequotgtlt/bean:messagegtlt/titlegtltlink relquotstylesheetquot typequottext/cssquot hrefquotlthtml:rewrite forward/css/example lt/headgtltbody leftmarginquot0quot topmarginquot0quotgtlttable widthquot780quot borderquot0quot cellpaddingquot0quot cellspacingquot0quotgtlttrgtlttd alignquotcenterquot valignquotmiddlequotgtlthtml:form methodquotpostquot actionquotstaffAction.doquot gtlttable widthquot90quot borderquot0quotgt 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate39一个实例–signin.jsp
代码-2lttrgtlttd alignquotrightquotgtampnbsplt/tdgtlttdgtampnbsp lt/tdgtlt/trgtlttrgtlttd alignquotrightquotgtampnbsplt/tdgtlttdgtampnbsp lt/tdgtlt/trgtlttrgtlttd alignquotrightquotgtltbean:message keyquotexample.codequotgtlt/bean:messagegtlt/tdgtlttd alignquotleftquotgtlthtml:text propertyquotstaffCodequot/gtltfont colorquotFF0000quotgtlt/fontgtlt/tdgtlt/trgt 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate40一个实例–signin.jsp
代码-3lttrgtlttd alignquotrightquotgtltbean:message keyquotexample.passwordquotgtlt/bean:messagegtlt/lttd alignquotleftquotgtlthtml:password propertyquotstaffPasswordquot/gtltfont colorquotFF0000quotgtlt/fontgtlt/tdgtlt/trgtlttrgtlttd alignquotrightquotgtlthtml:submitgtltbean:message keyquotbutton.submitquot/gtlt/htmllttd alignquotleftquotgtlthtml:resetgtltbean:message keyquotbutton.resetquot/gtlt/html:relt/trgtlt/tablegtlt/html:formgtlt/tdgtlt/trgtlt/tablegtlt/bodygtlt/htmlgt 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate41一个实例–Detail.jsp
代码-1lthtml:form actionquotstaffAction.doquotgtlttable widthquot90quot borderquot0quotgtlttrgtlttd alignquotcenterquotgtltspan classquotstyle1quotgtlt/spangtlt/tdgtlt/trgtlttrgtlttd alignquotcenterquotgtampnbsplt/tdgtlt/trgtlttrgtlttd alignquotcenterquot classquotnoborderquotgtlthtml:text sizequot18quot readonlyquottruequot propertyquotstaffNamequot /gtltbean:message keyquothead.welcomequotgtlt/bean:messagegtampnbsplt/tdgt 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate42一个实例–Detail.jsp
代码-2lt/trgtlttrgtlttd alignquotcenterquotgtampnbsplt/tdgtlt/trgtlttrgtlttd alignquotcenterquotgtlthtml:link pagequot/signin.jspquot gtltbean:message keyquotbutton.returnquot /gtlt/html:linkgtlt/tdgtlt/trgtlt/tablegtlt/html:formgt 大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate43一个实例??StaffForm的设计:package exampleimport javax.servlet.http.HttpServletRequestimport org.apache.struts.action.ActionFormimport org.apache.struts.action.ActionMappingpublic class StaffForm extends ActionForm public StaffFormprivate String staffCodenullpublic String getStaffCodereturn staffCodepublic void setStaffCodeString staffcodethis.staffCode staffcode//以下是staffName和staffPassword的get、set方法。
大白菜收集制作 更多访问http//hi.baidu.com/xiaolincc262004-4-20strushibernate44一个实例??struts-config.xmlltxml versionquot1.0quot encodingquotISO-8859-1quot gtltDOCTYPE struts-config PUBLICquot-//Apache Software Foundation//DTD Struts Configuration 1.1//ENquotquothttp://jakarta.apache.org/struts/dtds/struts-config_1_1.dtdquotgtltstruts-configgtltform-beansgt // form bean ltform-bean namequot/staffFormquottypequotexample.StaffFormquot/gtlt/form-beansgtltglobal-forwardsgtltforward namequot/css/examplequot pathquotexample.cssquot/gtlt/global-forwardsgt 大.
上一篇:
基于Struts+Spring+Hibernate架构的设备物质招投标系统设计与实现
下一篇:
关于大学英语教学