admin 管理员组文章数量: 1184232
2023年12月23日发(作者:tvvtw个人博客)
第23卷第2期 计算机技术与发展 Vo1.23 NO.2 2013年2月 COMPUTER TECHNOLOGY AND DEVELOPMENT Feb. 2013 Struts2框架核心配置文件的研究与应用 刘艳春,洪晓慧 (1.渤海大学大学计算机教研部,辽宁锦州121013; 2.中国联通公司锦州分公司,辽宁锦州121000) 摘要:Struts2是强大的Java web开源框架,处理过程通过配置文件完成。针对Struts2框架配置文件内容多、配置复杂、 难以掌握的特点,对核心配置文件进行研究。首先,列出了Stmt ̄框架的所有配置文件及其之间的相互关系,指出了 struts.xml和struts.properties是核心配置文件;接着,研究sturts.xml配置文件,包括sturts.xml常用配置解析、struts.xml构 建步骤及构建方法;最后研究sturts.properties配置文件,着重研究struts.propetries中包含主要的Struts2属性及配置方法。 文中的研究内容,能够使开发者清晰地理解配置文件的写法与调用关系,有利于团队成员并行工作,提高开发效率。 关键词:Struts2框架;配置文件;struts.xml;struts.properties 中图分类号:TP311 文献标识码:A 文章编号:1673-629X(2013)02-0077-05 doi:10.3969/j.issn.1673—2013.02.021 Research and Application of Core Configuration Files 0f Struts2 Framework LIU Yan-chun,HONG Xiao-hui (1.Teaching and Research Insittute of College Computer,Bohai University,Jinzhou 121013,China; 2.China Unicom Jinzhou Brnach,Jinzhou 121000,China) Abstract:Struts2 is a powerful open source framework of Java Web,the processing procedure of Struts2 framework has been finished by configuration files.For the characteristic of framework configuration files more content,configuration complexity and hard to master,the two core configuration ifles are researched.At first list all hte configuration files of Sturts2 and their erlationship.Then research struts.xml configuration file,including struts.xml common configuration analysis,construction setps and building method of hte struts.xm1.Finally- research configuration files of hte struts.prope ̄ies。focus on the main Struts2 attribute and configuration method contained in struts.prop— erties.The research content in this paper Can make developers clear understanding the way of writing and calling relationships of configu— ration files,it makes for team members to work in parallel and improve efifciency of development. Key words:Struts2 framework;configuration files;struts.xml;sturts.properties O 引 言 面存在缺陷,开发效率较低且系统各个组成部分之间 Struts是目前最流行的Web框架,使用该框架使 的脉络不够清晰。基于此,Struts框架整合WebWork 开发MVC程序非常简单容易 。经过多年发展, 框架,构建全新的MVC框架,形成了Struts2框架。 Struts已经成为一个高度成熟的框架,在国内使用非常 Struts2是Strutsl和WebWork的更新产品 。 广泛,成为Java程序员必备的一项基本技能。但随着 Struts2采用的是多层体系结构,包括表示层、业务 交互性更强的Web应用程序Ajax、以组件为中心来开 逻辑层、持久层、数据库层。其中表示层提供用户界面 发Java Web用户界面JSF等技术的产生和发展,最初 的显示与用户进行交互操作,业务逻辑层进行软件核 的Struts暴露出很多明显的缺陷,运用起来越来越不 心业务逻辑的处理,持久层进行对象的持久化操作,数 方便。WebWork作为新出现的MVC框架,很好地融 据库层用于保存持久化的数据。这样处理的好处是可 合了Ajax、JSF等技术,但其在页面导航及标记库等方 以降低系统的耦合度,每个层次间都有明确的分工。 最初软件框架的层次间内聚度较强,通过编程实现,层 收稿日期:2012—06—02:修回日期:2012—09—04 次之间的耦合依赖于具体程序,不容易维护。Struts2 基金项目:辽宁省科学事业公益研究基金(2011004001) 中的每个层次可以各为一体,层次之间通过接口的定 作者简介:刘艳春(1977一),男,辽宁铁岭人,讲师,从事计算机应用 义和配置实现松散耦合。请求经过一系列过滤器,通 的教学与科研工作。 过配置文件struts.xml和struts.propertiesr的配置返回
・78・ 计算机技术与发展 第23卷 结果 j。 Struts2框架的处理过程是通过配置文件来完成 的。。 。对于应用Struts2框架的开发人员,需要掌握若 干个配置文件,并且开发程序的过程,就是不断地写配 置文件的过程,作者结合多年软件开发和教学过程中 的实际经验,深入研究核心配置文件,旨在使读者清晰 地理解配置文件的写法与调用关系,提高开发效率。 1 Struts2框架配置文件 Struts2框架有6个配置文件,如表1所示。各个 配置文件的相互关系如图1所示 。在这些配置文件 中,最重要的是struts.xml和struts.properties。其他配 置文件的应用较少,而且配置方法简单。sturts.xml和 sturts.properties配置复杂,而且有很多技巧,这两个配 置文件是Struts2框架的核心和基础,因此也称为核心 配置文件。 表1 Sturt ̄框架的所有配置文件 文件名称 用途 web.xml Web部署描述,包括所有必需的Sturts2 组件 struts.xml 主要配置,包括Result/View类型,Ac. tion影射,拦截器等 sturts.pmperhes Struts2的属性配置 sturts—defult.xml xwork.xml中应该有的默认配置 velocity.properties velocity配置 sturts—default.vm velocity中应该有的默认配置 图1 Sturts框架的配置文件关系图 2 struts.xml配置文件 Struts2框架的核心配置文件是sturts.xml,主要负 责管理Struts2框架的业务控制器Action映射以及该 Action包含的Result定义等。sturts.xml这个文件名是 默认情况下的文件名,但并不是固定不变的,可以通过 sturts.configuration.files改变为其它的文件名。默认情 况下是一个文件,可以使用<include>标签把内容分配 到几个文件中去,也可以把其他文件的内容导人进来, 被导人的配置文件必须和sturts.xml具有同样的格 式 。 2.1 struts.xml常用配置解析 ●使用<include>标签重用配置文件。 在Sturts2中提供了一个默认的sturts.xml文件, 但如果当package、action、interceptors等配置比较多时, 都放到一个sturts.xml文件不太容易维护 ]。因此,就 需要将sturts.xml文件分成多个配置文件,然后在 sturts.xml文件中使用<include>标签引用这些配置文 件。这样做的优点是:结构更清晰,更容易维护配置信 息;配置文件可以复用。如果在多个Web程序中都使 用类似或相同的配置文件,那么可以使用<include>标 签来引用这些配置文件,这样可以减少工作量。 ●action的别名。 在默认情况下,Struts2会调用动作类的execute方 法。但有些时候,需要在一个动作类中处理不同的动 作。也就是用户请求不同的动作时,执行动作类中的 不同的方法。为了达到这个目的,可以在<action>标签 中通过method方法指定要指行的动作类的方法名,并 且需要为不同的动作起不同的名子(也称为别名)。 ●为action指定参数。 在Sturts2中还可以为action指定一个或多个参 数。在sturts1.xml中可以使用<action>标签的parame. ter属性为其指定一个action参数,如果要指定多个, 就只能通过逗号(,)或其他的分隔符将不同的参数隔 开。而在Sturts2中可以通过<param>标签指定任意多 个参数。 ●选择result类型。 在默认时,<result>标签的type属性值是“dis— patcher”(实际上就是转发,forward)。开发人员可以根 据自己的需要指定不同的类型,如redirect、stream等。 如下面代码所示: result-type可以在sturts2-core-2.0.11.1.jar包 或Sturts2源代码中的sturts—default.xml文件中找到, 在这个文件中找到<result—types>标签,所有的result— type都在里面定义了 。 ●全局resulto 有些时候一个<result>被很多<action>使用,这时 可以使用<global—results>标签来定义全局的<result>。 如果<action>中没有相应的<result>,Sturts2就会 使用全局的<result>。 2.2 struts.xml构建步骤 sturts.xml文件构建步骤如图2所示。
第2期 刘艳春等:Struts2框架核心配置文件的研究与应用 ・79・ 文件声明及头描述信息 ◆ 加载国际化资源文件 配置包 ◆ 配置登录控制拦截器 ◆ 配置未处理的异常控制 ◆ 配置Action 图2 struts.xml文件构建步骤 ●步骤1:文件声明及头描述信息。 文件声明及头描述信息如下: ●步骤2:加载国际化资源文件。 可以在struts.properties中配置,也可以在struts. xml中配置。在sturts.xml中配置是加入一个常量,指 定国际化资源文件的baseName为messageResource。 如下: ●步骤3:配置包。 可以定义Sturts2的默认包空间,如下: l三旦!! 竺! !竺三!! 二 ! 三 J 默认包空间里定义了Struts2内建的Result类型, 还定义了Sturts2内建的拦截器,以及由不同拦截器组 成的拦截器栈。 也可定义包空间,如下: name为包空间,可以随意起名,表明包中内容所 占用的空间。extends通常继承sturts—default的包空 间,struts-defau1.xml文件在sturts2一core一2.0.8.jar包 里。如果用sturts2下的AJAx插件,用来进行数据校 验,则继承json-defauh。json—default.xml文件在json。 plugin-0.7.jar包里。如下: ●步骤4:配置登录控制拦截器。 拦截器体系是Sturts2的重要组成部分,完成了框 架的大部分操作。拦截器是对调用方法的改进,通过 拦截器机制,不仅允许改变被调用的方法体,甚至可以 完全改变调用的目标方法。当需要使用某个拦截器 时,只需要在配置文件中配置即可。如果用户的Ac. tion需要使用某些特定的通用功能,只需要在sturts. xml中指定拦截器,就可以使拦截器方法在目标方法 执行前或者执行后自动执行,从而完成通过操作的动 态插人 。 如果在每个Action里都有相同的登录控制代码, 不利于代码重复利用。采用Struts2的拦截器机制进 行登录控制。拦截所有用户请求,然后检查用户Ses. sion,如果用户Session中包含了用户ID,即表明用户 已经登录;否则系统将自动转入登录页面。这样能保 证所有功能只有登录用户才可以使用。 拦截器的配置示例如下: <!一配置登录控制拦截器一> <interceptors> <!一定义系统的登录控制的拦截器一> <interceptor name=”authority” class:”org.yeeku.action.interceptor.Aut}10rityIntercept0r¨/> <!一定义系统auctionStack拦截器_-> <interceptor-stack name=”auctionStack”> <!一引用系统的默认拦截器栈一> <interceptor—ref name=”defauhStack”/> <!一引用登录控制拦截器~> <interceptor—ref name=”authority”/> </interceptor-stack> </interceptors> ●步骤5:配置未处理的异常控制。 在Action的execute方法中使用try…catch块来捕 捉异常,当捕捉到指定的异常时,系统返回到指定的逻 辑视图名,这种方式完全是手动处理异常,非常繁琐, 而且可维护性差。 Sturts2的异常处理机制是通过在sturts.xml文件 中配置异常处理,通过配置<exception—mapping…/>元 素完成,配置该元素时,需要指定两个属性: exception:指定异常映射所设置的异常类型; result:指定Action出现异常时,系统转入result属 性所指向的结果。 例如,当Sturts2系统捕捉到未处理的异常时,系 统自动转入指定的JSP页面,并在JSP页面中输出异 常提示信息,通过这种方法极好地简化了系统的异常 控制。配置如下: <!一配置全局的Result一> <global-results> <!一下面定义的结果对所有的Action都有效__> <result name=”exception”>/error.jsp</resuh> <result name=”success”>/success.jsp</resuh> /<global-results> <!一配置全局的异常映射一> <global—-exception・-mappings>
・80・ 计算机技术与发展 第23卷 <!一指Action抛出Exception异常时,转人名为excep. tion的结果~> <exception—mapping exception=”java.1ang.Exception”re— suit=”exception”/> </global—-exception—-mappings> 如果不需要向用户精确显示每种异常,可在业务 方法捕捉全部异常,然后抛出业务异常。 ●步骤6:配置Action。 包括处理用户登录的Action和正常的Action。 Action处理完用户请求后,将返回一个普通字符 串,整个普通字符串就是一个逻辑视图名。Struts2通 过配置逻辑视图名和物理视图之间的映射关系,一旦 系统收到Action返回某个逻辑视图名,系统就会把对 应的物理视图呈现给浏览者口]。 Action的name属性,既是Action的名字,也是该 Action需要处理的URL的前半部分。 Action的class属性,指定了该Action的实现类。 Result的name属性,为Action处理用户请求结束 后,返回的逻辑视图名(普通字符串)。 Result的type属性,为Sturts2支持的处理结果类 型。 处理用户登录Action的配置方法如下: <!一配置处理用户登录的Action一> <action name:”processLogin” class=”org.yeeku.action.LoginAction”> <!一配置处理用户登录后的Result~> <result nalne:”input”>/WEB-INF/jsp/login.jsp</result> <result name=”success”>/WEB—INF/jsp/main.jsp</resuh > <result name=”failure”>/WEB-INF/jsp/login.jsp</result > <!一显示引用系统默认拦截栈一> <interceptor-ref name=”defauhStack”/> /<action> 3 struts.properties配置文件 struts.properties文件是标准配置文件,用于配置 Sturts2的属性。sturts.properties文件包含了系列的 key—value对象,是一个标准的Properties文件,每个 key就是一个Sturts2属性,key对应的value就是一个 Sturts2属性值 “。sturts.properties是全局配置文件, 但并不是必须的,可以在sturts.xml中通过<constant> 配置这些静态属性,与在sturts.properties中配置的效 果一样,但会使sturts.xml文件内容过多,不易维护。 3.1直接配置属性示例 直接配置就是在struts.properties文件中配置,配 置方法如下: <!一指定加载Struts2的配置文件管理器__> <!一也可以实现一个Conifguration接口的类一> <!一自己加载Struts2配置文件一> struts.configuration=org.apache.Struts2.config.DefauhCon— ifguration <!一设置Struts2支持动态方法调用一> sturts.enable.DynamicMethodInvocation=true <!一每次HqTP请求到达时,系统都重新加载资源文件一 一> struts.il8n.reload=true <!一指定Web应用的默认Locale一> <!一是国际化与本土化过程中的一个非常重要的概念一 一> <!一指定Web应用的默认编码集一> <!一当获取中文请求参数值,设置为GBK或者GB2312一 sturts.il8n.encoding GBK <!__指定Spring框架的自动装模式一> <!一默认根据Bean的name属性自动装配一> sturts.objectFactory.spring.autoWire=name <!一设置Sturts 2允许在Action名中使用斜线一> sturts.enable.SlasheslnActionNames=ture <!一该属性设置浏览器是否缓存静态内容__> <!一当应用处于开发阶段时设置为true,否则设计为 false--> struts.serve.static.browserCache=false <!一指定Struts2框架默认加载的配置文件__> <!__多个配置文件之间以逗号(,)隔开__> struts.configuration.files struts—student.xm1.struts—teachet. xm】 <!一指定将H1TrP请求映射到指定Action的映射器一> struts.mapper.class=org.apache.struts2.dispatcher.mapper. DefaultActionMapper <!~指定Sturts 2使用的FreeMarker管理器一> sturts.freemarker.manager.classname=org.apache.sturts2. views.freemarker.FreemarkerManager 3.2间接配置属性示例 间接配置就是在sturts.xml文件中配置,对于3.1 中的示例,配置方法如下: <constant name=”struts.conifguration”value=”org.apache. Sturts2.config.DefauhConfiugration”/> <constant name=”struts.enable.DynamicMethodTnvocation” value=”ture”/> <constant name=”struts.il8n.reload”value=”true”/> <constant name=”struts.1ocale”value=”zh—CN”/> <constant name=”struts.il8n.encoding”value=”GBK”/>
第2期 刘艳春等:Struts2框架核心配置文件的研究与应用 。81・ <constant name=”struts.objectFactory.spring.autoWire”value 开发模式 。是Struts2的核心技术,有利于团队成员 :”name”/> 行工作,对从事Struts2框架的开发人员具有很高的 <constant name:”struts.enable.SlasheslnActionNames”value 参考价值。 =”true”/> <constant name=”struts.serve.static.browserCache’’value=’‘ 参考文献: false”/> [i]宋士安,邹俊伟,刘丽华.基于Sturts+Spring+Hibernate缺 <constant name=”sturts.configuration.files” value=”struts— student.xm1.sturts—teacbet.xml”/> 陷管理系统实现[J].计算机技术与发展,2012,22(2):146 —148. <constant name ”struts.mapper.class”value=”org.apache. [2]李纲.Struts2权威指南[M].北京:电子工业出版社, struts2.dispatcher.mapper.DefauhActionMapper”/> 20o8. <constnat name=”sturts.freemarker.manager.classname”val- ue=”org.apache.sturts2.views.freemarker.FreemarkerManager”/ [3]Liu Y J,Kang J c,Lu W F.Overview of Mode1.driven Ar- chitecturc[J].Computer Science,2006,33(3):226—228. > [4] 吕 凯.基于MVC设计模式的Struts框架的应用研究 [J].沈阳工程学院学报(自然科学版),2010,6(4):366— 4结束语 368. Struts2是强大的Java Web开源框架,是基于PO— [5]Brown D,Davis C M.Struts2 in Action[M].America:Man— JO的Action的MVC Web框架。Struts2的优点主要体 ning Publications Co,2008. 现在¨引:基于MVC架构,框架结构清晰,开发流程一 [6]郑若颖.一种对Struts配置文件加载过程的改进方法[J]. 目了然,开发人员可以很好地掌控开发的过程;使用 大众科技,2007,9(9):89-90. OGNL进行参数传递,可以方便地获取Request、Attrib・ [7] 白广元.Java Web整合开发完全自学手册[M].北京:机械 ute、Application、Session、Parameters中的数据;强大的 工业出版社,2009. 拦截器,Struts2的拦截器是一个Action级别的AOP,许 [8] 张毅.基于Sturts框架的J2EE WEB应用研究与实现 [D].成都:西南交通大学,2006. 多特性都是通过拦截器来实现;易于测试,Struts2的 [9]Roughley I.Practicla Apache Sturts2 Web 2.0 Projects[M]. Action都是简单的POJO,可以方便地编写测试用例; [s.I.]:Springer,2007. 易于扩展的插件机制,只需要将所需要的Jar包放到 [10]欧阳宏基,马广平,葛萌.基于Sturts框架的Web应用研 WEB—INF/lib文件夹中,在struts.xml中作一些简单的 究与实现[J].计算机与数字工程,2010,38(3):197—200. 设置就可以实现扩展;模块化,可以通过将配置信息拆 [11]迟却懂.sturts.porperties配置文件[EB/OL].2011—06—08. 分成多个文件、把自包含的应用模块创建为插件、将与 http://czqjay4818.blog.163.com/blog/static/618408820093 特定应用无关的新功能组织成插件等方法来将应用程 943021934/. 序模块化;全局结果与声明式异常,为应用程序添加全 [12]阿锋.sturt ̄优点[EB/OL].2011—06-08:http://czq— 局的Resuh,和在配置文件中对异常进行处理。所有 jay4818.blog.163.com/bl0g/static/618408820093943021 934/. 这些优点的体现,依赖于强大的配置文件。 [13]Ren Y C.Research and Application 0n Automatic Generation 文中的研究内容,降低了对软件开发人员的技术 Technology of JavaScript Input Validation[J].Advances in In- 要求,提高了软件开发劳动生产率,改变了传统的软件 telligent and Soft Computing,2012,148(1):595-600. (上接第76页) awlcr『C 1//The 1st International Conference on Information ing:Bringing order to the web[M].Palo Alto,California:Stan- cSience and Engineering ICISE.Piscataway,N.J.:IEEE ford University Press,1998. Press,2009:1889-1891. [5]李稚楹,杨武,谢治军.PageRank算法研究综述[J].计 [9]邵晶晶,李波,刘汉平.PageRank的改进算法一调整阻尼 算机科学,2011(s1):185—188. 因子[J].应用数学,2008(S1):57-61. [6] 李凯,赫枫龄,左万利.PageRank—Pro一一种改进的网页 [10]高宝军.Web结构挖掘中PageRank算法优化研究[D].兰 排序算法[J].吉林大学学报(理学版),2003(2):175— 州:兰州大学,201I. 179. [1I]李远方,邓世昆,闻玉彪,等.Hadoop-MapReduce下的Pag— [7] Brin S,Page L.The anatomy of a large scale hypertextual web eRank矩阵分块算法[J].计算机技术与发展,2011,21 search engine[C]//Proceedings of the Seventh International (8):6-9. World Wide Web Conference.Brisbane:ACM Press,1998:107 [12]Fu H H,Dennis K J L,Tsai H T.Damping factor in 一Il7. Googlepage ranking[J].Applied Stochastic Models Business [8]Ling Zhang,Zheng Qin.The Improved Pagerank in Web Cr- and Industry,2006,22(5-6):431—444.
版权声明:本文标题:Struts2框架核心配置文件的研究与应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1703304402a446182.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论