《最新Struts应用技术(共27张PPT课件).pptx》由会员分享,可在线阅读,更多相关《最新Struts应用技术(共27张PPT课件).pptx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、MVCMVC的的WebWeb实现实现(shxin)(shxin)-Struts-Struts框架技术框架技术在本讲您能了解如下知识点在本讲您能了解如下知识点qStrutsStruts应用框架应用框架(kun ji)(kun ji)及特性及特性q为什么要提出为什么要提出StrutsStrutsqStrutsStruts框架的体系构成框架的体系构成qStruts WebStruts Web应用开发的步骤应用开发的步骤第一页,共二十七页。(1 1)Struts Struts 是是 应用最广的应用最广的 Java Web Java Web 开发框架开发框架p20012001年年6 6月,这个框架由月,
2、这个框架由 Craig McClanahan Craig McClanahan 开发完成,现在作为开发完成,现在作为 Apache Apache 软件软件(run jin)(run jin)基金会的一个开源项目基金会的一个开源项目pStrutsStruts的推出,极大地简化了的推出,极大地简化了 JSP/Servlet JSP/Servlet 编程实现编程实现p它不仅简化了编程模型,同时它还是开源的并且有一个它不仅简化了编程模型,同时它还是开源的并且有一个 庞大的社区。庞大的社区。 您了解您了解(lioji)(lioji)ApacheApache和和SourceforgeSourceforge
3、社区吗?社区吗?1 1、StrutsStruts应用应用(yngyng)(yngyng)框框架架(2 2)Struts WebStruts Web应用框架是什么应用框架是什么p它是开源框架:它是开源框架:Struts Struts 是是 Apache Apache 软件基金会资助的一个为开发软件基金会资助的一个为开发基于基于MVCMVC模式的模式的WebWeb应用而设计的一个开源框架应用而设计的一个开源框架pStrutsStruts框架中的各种框架中的各种WebWeb组件:它是利用组件:它是利用ServletServlet、JavaBeanJavaBean和和JSPJSP、定制标签库等、定制标
4、签库等WebWeb组件、组件、XMLXML等方面的技术来实现构建等方面的技术来实现构建WebWeb应用应用p它同时也是基于它同时也是基于MVCMVC模式的模式的WebWeb应用最经典的框架。应用最经典的框架。 第二页,共二十七页。(3 3)StrutsStruts的工作的工作(gngzu)(gngzu)流流程程第三页,共二十七页。(4 4)StrutsStruts的的MVCMVC与标准与标准MVCMVC的不同点的不同点p在原有视图在原有视图( HTML/JSP )( HTML/JSP )和和Control(Servlet)Control(Servlet)之间,添加了一个之间,添加了一个Acti
5、onSerlvetActionSerlvet作为新的作为新的ControlControl,所有其它动作,都要经过,所有其它动作,都要经过ActionServletActionServlet来分发。来分发。p使用一个总控的使用一个总控的ActionServletActionServlet管理所有的行为,由它决定哪个管理所有的行为,由它决定哪个ActionAction被真正调用并处理导航流被真正调用并处理导航流p将将ServletServlet改成了改成了ActionAction,同时,同时(tngsh)(tngsh)ActionAction可以通过配置文件来可以通过配置文件来管理,在一定程度上增
6、加了整体结构的灵活性。管理,在一定程度上增加了整体结构的灵活性。第四页,共二十七页。(2 2)Struts MVCStruts MVC框架产生及提出的目的框架产生及提出的目的(md)(md)p为了使开发者在构建基于标准的为了使开发者在构建基于标准的J2EE WebJ2EE Web技术的技术的WebWeb应用时更加容应用时更加容易易-隐藏了繁琐的实现细节。隐藏了繁琐的实现细节。p它提供了一个统一的标准框架,这样让开发者能够更专注于系统的它提供了一个统一的标准框架,这样让开发者能够更专注于系统的商业逻辑的具体实现。商业逻辑的具体实现。2 2、StrutsStruts框架产生的技术背景框架产生的技术
7、背景(bijng)(bijng)(1 1)对)对J2EE WebJ2EE Web开发技术回顾开发技术回顾pJSP Model OneJSP Model One方式方式pJSP Model TwoJSP Model Two(MVCMVC)方式)方式常规常规(chnggu)(chnggu)MVCMVC的实现的实现方式中的控制层结构不清方式中的控制层结构不清晰,易与业务层混淆晰,易与业务层混淆第五页,共二十七页。3 3、为什么要提出、为什么要提出(t (t ch)ch)StrutsStruts (1 1)设计目的)设计目的(md)(md)p从整体上减轻构造从整体上减轻构造J2EE WebJ2EE W
8、eb应用项目的设计和开发的负担(请见应用项目的设计和开发的负担(请见前面的描述)前面的描述)p并为并为WebWeb应用提供国际化、异常处理和数据库连接池等方面的共性的技应用提供国际化、异常处理和数据库连接池等方面的共性的技术支持,从而提供基础服务术支持,从而提供基础服务(2 2)StrutsStruts的缺点的缺点q有限的适用范围有限的适用范围Struts Struts 是一种基于是一种基于(jy)(jy) Web Web 的的 MVC MVC 解决方案解决方案所以必须用所以必须用 HTML HTML、JSP JSP 文件和文件和 Servlet Servlet 来实现它。来实现它。qJ2EE
9、 J2EE 应用程序和平台的支持应用程序和平台的支持q复杂性复杂性在将问题分为几个部分的同时也引入了复杂性在将问题分为几个部分的同时也引入了复杂性在强健性增强的同时,也意味着复杂性的增加(事物的在强健性增强的同时,也意味着复杂性的增加(事物的“一分为一分为二二” ” 观点)。观点)。 您了解您了解J2EEJ2EE平台中的应用服平台中的应用服务吗?务吗?您在应用您在应用JSP/ServletJSP/Servlet技术实现技术实现WebWeb应用应用系统时的复杂性有系统时的复杂性有所体验吗?所体验吗?第六页,共二十七页。(3 3)StrutsStruts的优点的优点p“填空填空”式地开发式地开发
10、Struts Struts 实现了实现了MVCMVC但又发展了但又发展了MVCMVC模式,开发者可以采用模式,开发者可以采用“填填空空”式来进行开发。式来进行开发。q降低系统的藕合性降低系统的藕合性 采用采用StrustStrust可以加快开发速度、增强系统的灵活性、降低可以加快开发速度、增强系统的灵活性、降低系统的藕合性(因为它的三个应用层松散地耦合在一起)和系统的藕合性(因为它的三个应用层松散地耦合在一起)和易于系统的维护。易于系统的维护。p分工明确分工明确 控制层、业务层与表示层三者各自相互分离(网页设计人员控制层、业务层与表示层三者各自相互分离(网页设计人员与与JAVAJAVA程序员各
11、司其职程序员各司其职( s q zh)( s q zh))。)。p简化页面设计简化页面设计 在表示层的页面中大量地使用定制的标签库技术,把业务逻辑处在表示层的页面中大量地使用定制的标签库技术,把业务逻辑处理的代码分离开来。理的代码分离开来。您熟悉您熟悉(shx)(shx)VC+VC+6+6平台吗?平台吗?第七页,共二十七页。4 4、StrutsStruts框架的体系构成框架的体系构成(1 1)组成:)组成:主要是由两个相对独立的组成部分所构成主要是由两个相对独立的组成部分所构成(2 2)第一个部分)第一个部分(b fen)(b fen)是是Struts APIStruts API利用这些利用这
12、些APIAPI中的相关的类和接口,可以用于编写支持中的相关的类和接口,可以用于编写支持StrutsStruts的的WebWeb应应用组件用组件第八页,共二十七页。(3 3)第二部分是)第二部分是StrutsStruts的表示层中各种标签库的表示层中各种标签库q主要由主要由htmlhtml、beanbean、logiclogic和和tilestiles等标签库组成;等标签库组成;q利用这些标签库可以进一步改善表示利用这些标签库可以进一步改善表示(biosh)(biosh)层中的层中的JSPJSP页面,真正实页面,真正实现表示现表示(biosh)(biosh)与业务处理的分离与业务处理的分离第九页
13、,共二十七页。5 5、Struts WebStruts Web应用开发应用开发(kif)(kif)的步骤的步骤(1 1)问题)问题下面通过一个简单的下面通过一个简单的WebWeb应用的实例应用的实例(shl)(shl)来说明来说明StrutsStruts的开发过程的开发过程(2 2) Struts Web Struts Web应用开发可以分为两个阶段应用开发可以分为两个阶段p平台的搭建平台的搭建q各个各个WebWeb组件的编程实现组件的编程实现6 6、应用示例实现过程、应用示例实现过程-第一个阶段中的平台的搭建第一个阶段中的平台的搭建(1 1)创建出)创建出StrutsStruts的的WebW
14、eb目录目录 在在webappwebapp目录下新建一个目录下新建一个Struts WebStruts Web程序的目录路径(如下程序的目录路径(如下图的图的WebBBSWebBBS)、)、WEB-INFWEB-INF、classesclasses和和liblib目录等目录等当然如果当然如果(rgu)(rgu)是是采用采用IDEIDE工具则没工具则没有这些细有这些细节!节!下面假定是采用下面假定是采用“记事本记事本”手手动开发实现!动开发实现!第十页,共二十七页。(2 2)拷贝)拷贝StrutsStruts的各个的各个(gg)(gg)APIAPI所在的所在的* *.jar.jar包文件包文件将
15、将StrutsStruts的各个的各个APIAPI库文件拷贝到库文件拷贝到WebWeb程序的的程序的的WEB-INFlibWEB-INFlib下。下。 注意在注意在StrutsStruts的核心包中并的核心包中并没有包含没有包含DBCPDBCP的实现类!的实现类!因此如果需要数据库连接因此如果需要数据库连接池的支持,则需要再添加池的支持,则需要再添加(tin ji)(tin ji)对应的系统对应的系统* *.jar.jar包文件包文件第十一页,共二十七页。(3 3)拷贝)拷贝StrutsStruts的各个的各个(gg)(gg)标签库的标签库的* *.tld.tld文件文件将将StrutsStr
16、uts的全部标签库描述文件(的全部标签库描述文件(struts-struts-* *.tld.tld)拷贝到)拷贝到Struts Struts WebWeb程序的目录路径下的程序的目录路径下的WEB-INFWEB-INF下下 (4 4)配置)配置Struts WebStruts Web程序程序(chngx)(chngx)的的web.xmlweb.xml文件文件在在该配置文件主要定义该配置文件主要定义ActionServletActionServlet类、配置文件类、配置文件struts-struts-config.xmlconfig.xml的存放位置、的存放位置、StrutsStruts的标签
17、库等。的标签库等。 第十二页,共二十七页。注意注意:web.xmlweb.xml配置文件配置文件在在J2EE WebJ2EE Web应用中的作用应用中的作用p它是它是Sun J2EE WebSun J2EE Web应用程序中的标准部署描述应用程序中的标准部署描述(mio sh)(mio sh)文件文件p所有的所有的J2EE WebJ2EE Web应用程序中的标准的配置项目都应该在该文应用程序中的标准的配置项目都应该在该文件中进行设置件中进行设置 您了解您了解WebWeb应用应用(yngyng)(yngyng)的目的目录结构要求吗?录结构要求吗?第十三页,共二十七页。q在在web.xmlweb.
18、xml中与中与strutsstruts相关的配置项目相关的配置项目在该文件中需要增加对用户的请求进行接收并响应的在该文件中需要增加对用户的请求进行接收并响应的ActionServletActionServlet类类 以及以及strutsstruts自己的配置文件自己的配置文件struts-config.xmlstruts-config.xml的存放的存放的位置的位置最后也还涉及到在本最后也还涉及到在本WebWeb应用中所引用应用中所引用(ynyng)(ynyng)的的StrutsStruts的各个标的各个标签库的签库的* *.tld.tld文件的声明文件的声明注意该参数注意该参数(cnsh)(
19、cnsh)的名称的名称您知道该参数您知道该参数(cnsh)(cnsh)的作的作用吗?用吗?设置其请求的设置其请求的URLURL方方式式第十四页,共二十七页。(5 5)定义将被)定义将被ActionServletActionServlet类处理的类处理的URL URL 可以采用前缀匹配和扩展匹配两种方式,并且可以混合地可以采用前缀匹配和扩展匹配两种方式,并且可以混合地使用使用p前缀匹配(前缀匹配(路径映射路径映射)u将所有以一个特殊将所有以一个特殊(tsh)(tsh)值开头(在上下文路径部分之后)值开头(在上下文路径部分之后)的的URLURL传递给这个传递给这个ServletServlet。u此
20、时在此时在web.xmlweb.xml文件中应该如下:文件中应该如下: action action / /executeexecute/ /* * u匹配前面描述的匹配前面描述的 / /executeexecute 路径的请求路径的请求URLURL应该如下(其中应该如下(其中/myApp /myApp 是是WebWeb应用程序展开所在的上下文路径):应用程序展开所在的上下文路径): http:/ 第十五页,共二十七页。p扩展映射扩展映射(yngsh)(yngsh)u它是以一个跟着定义的一组字符的句点结束的它是以一个跟着定义的一组字符的句点结束的URLURLu为了使用为了使用 * *.do .d
21、o 扩展(它意味着扩展(它意味着“做某件事做某件事”)映射条目,)映射条目,在在web.xmlweb.xml文件中应该如下:文件中应该如下: action action * *.do.do u并且一个匹配并且一个匹配/logon /logon 路径的请求的路径的请求的URIURI应该如下:应该如下: http:/ http:/ 6)配置配置struts-config.xmlstruts-config.xml文件文件p作用作用(zuyng)(zuyng):将框架中的视图:将框架中的视图(V)(V)、控制器、控制器(C) (C) 等部分联系在一起;等部分联系在一起;所有与所有与StrutsStru
22、ts相关的特殊配置项目都应该在此文件中进行设置相关的特殊配置项目都应该在此文件中进行设置它是它是Struts系统系统(xtng)在在运行时运行时的配置的配置文件文件第十七页,共二十七页。(6 6)配置)配置struts-config.xmlstruts-config.xml文件(续)文件(续)p为什么要提供为什么要提供StrutsStruts本身的配置文件本身的配置文件遵守遵守J2EEJ2EE中松藕合的原则中松藕合的原则 在应用系统变动时,只用修改该配置文件中的配置项目在应用系统变动时,只用修改该配置文件中的配置项目(xingm)(xingm),而不用再重新编译发布相关的类。,而不用再重新编译
23、发布相关的类。同时它还描述了客户提供的数据与同时它还描述了客户提供的数据与ActionFormActionForm组件的对应映射组件的对应映射关系。关系。 p所应该注意的问题:所应该注意的问题:其中的各个配置标签其中的各个配置标签(bioqin)(bioqin)是有一定的顺序是有一定的顺序要求的要求的 第十八页,共二十七页。注意:注意:可以参考其可以参考其DTDDTD文件中的说明来了解其各个文件中的说明来了解其各个(gg)(gg)标签的顺序要求标签的顺序要求第十九页,共二十七页。(7 7)定义并编写资源文件)定义并编写资源文件(wnjin)(wnjin)(因为(因为StrutsStruts提供
24、了国际化提供了国际化的支持)的支持)q可以把错误提示文字信息和其它文字信息放在可以把错误提示文字信息和其它文字信息放在 ApplicationResources.properties ApplicationResources.properties 文件中文件中q从而可以实现在从而可以实现在JSPJSP中显示的内容从资源绑定中获得,因为资源绑中显示的内容从资源绑定中获得,因为资源绑定可以支持国际化定可以支持国际化其格式其格式(g shi)为为“名称名称=值值”您熟悉您熟悉(shx)(shx)J2SEJ2SE中的中的国际化技术的实现国际化技术的实现吗?吗?第二十页,共二十七页。q资源信息文件的存放
25、的位置资源信息文件的存放的位置 以以classesclasses为起始为起始(q sh)(q sh)相对路径,本例包含有包名称为相对路径,本例包含有包名称为com.px1987.sshprojectcom.px1987.sshproject。因此应该将该文件存放在如图所示。因此应该将该文件存放在如图所示的目录下。的目录下。q在在struts-config.xmlstruts-config.xml中设置其位置中设置其位置(wi zhi)(wi zhi)信息信息 message-resources ApplicationResources/第二十一页,共二十七页。7 7、实现过程、实现过程-第二个
26、阶段第二个阶段各个各个WebWeb组件的编程实现组件的编程实现(1 1)MVCMVC中的各个组件中的各个组件表示层(表示层(JSPJSP页面)、控制层(页面)、控制层(ActionAction类)、业务模型层类)、业务模型层(ActionFormActionForm类和业务组件类和业务组件JavaBeanJavaBean)(2 2)编程视图)编程视图(sht)(sht)页面页面index.jsp index.jsp 以实现对系统的请求(如果包含以实现对系统的请求(如果包含有表单,则应该采用有表单,则应该采用StrutsStruts中的标签)中的标签)(3 3)编程)编程ActionFormAc
27、tionForm类以实现表单数据的校验类以实现表单数据的校验(xio yn)(xio yn)和复位表单和复位表单组件中的各个属性值组件中的各个属性值第二十二页,共二十七页。(4 4)编程)编程ActionAction类实现类实现(shxin)(shxin)业务的预处理和对业务组件的调度业务的预处理和对业务组件的调度(5 5)编程业务模型类以实现具体)编程业务模型类以实现具体(jt)(jt)的业务操作实现的业务操作实现(6 6)执行)执行(zhxng)(zhxng)该页面该页面http:/127.0.0.1:8080/WebBBS/userLogin.jsphttp:/127.0.0.1:808
28、0/WebBBS/userLogin.jsp第二十三页,共二十七页。在在JBuilderJBuilder中编程实现中编程实现StrutsStruts应用应用(yngyng)(yngyng)1 1、请见文档、请见文档2 2、利用开发工具简化开发过程、利用开发工具简化开发过程-否则我们会太累!否则我们会太累!第二十四页,共二十七页。在在EclipseEclipse中编程实现中编程实现StrutsStruts应用应用(yngyng)(yngyng)1 1、请见文档、请见文档2 2、应用开源开发工具避免我们陷入应用、应用开源开发工具避免我们陷入应用“盗版盗版”的嫌疑!的嫌疑!第二十五页,共二十七页。1
29、 1、子曰:、子曰:“学而不思则罔,思而不学则殆。学而不思则罔,思而不学则殆。” “学而时习之学而时习之” 2 2、子曰:子曰:“知之者不如知之者不如(br)(br)好之者好之者, ,好之者不如好之者不如(br)(br)乐之者乐之者”3 3、子曰:、子曰:“三人行三人行, ,必有我师焉必有我师焉”4 4、子曰:子曰:“我非生而知之我非生而知之(shng r zh zh)(shng r zh zh)者者, ,好古好古, ,敏以求之敏以求之者也者也”5 5、师者:师者:“传道传道(chundo)(chundo)、授业和、授业和解惑解惑”努力学习以实现自己的人生理想和目标努力学习以实现自己的人生理想和目标第二十六页,共二十七页。内容(nirng)总结MVC的Web实现-Struts框架技术。下面通过一个简单的Web应用的实例来说明Struts的开发过程。将Struts的各个API库文件拷贝到Web程序(chngx)的的WEB-INFlib下。以及struts自己的配置文件struts-config.xml的存放的位置。最后也还涉及到在本Web应用中所引用的Struts的各个标签库的*.tld文件的声明。它是以一个跟着定义的一组字符的句点结束的URL第二十七页,共二十七页。
限制150内