chapter2-struts2详细配置

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

张向军subtitlestyleStruts2详细配置(第二章)2009/5/28第2页Struts2的基本流程Struts2的基本配置Struts2的Action类Struts2支持的处理结果Struts2的基本流程核心控制器业务控制器模型组件视图组件山东经济学院Struts2的基本流程经过前边的了解,我们知道struts2框架有三部分组成:核心控制器FilterDispatcher业务控制器用户实现的业务逻辑组件山东经济学院核心控制器FilterDispatcher是Struts2框架的核心控制器该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求(拦截所有还是部分是由url-pattern来决定的),当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts2框架处理。Struts2框架获得了*.action请求后,将根据*.action请求的前面部分决定调用哪个业务逻辑组件,例如,对于login.action请求,Struts2调用名为login的Action来处理该请求。Struts2应用中的Action都被定义在struts.xml文件中,在该文件中定义Action时,定义了该Action的name属性和class属性,其中name属性决定了该Action处理哪个用户请求,而class属性决定了该Action的实现类。山东经济学院核心控制器Struts2用于处理用户请求的Action实例,并不是用户实现的业务控制器,而是Action代理——因为用户实现的业务控制器并没有和ServletAPI耦合,显然无法处理用户请求。而Struts2框架提供了系列拦截器,该系列拦截器负责将HttpServletRequest请求中的请求参数解析出来,传入到Action中,并回调Action的execute方法来处理用户请求。山东经济学院Struts2的处理流程山东经济学院FilterDispatcherInterceptorActionResultJsp/html用户请求Struts2内置的一些拦截器或用户自定义拦截器用户编写的action类,类似struts1中的Action类似struts1中的forward响应核心控制器从图中可以看出,用户实现的Action类仅仅是Struts2的Action代理的代理目标。用户实现的业务控制器(Action)则包含了对用户请求的处理。用户的请求数据包含在HttpServletRequest对象里,而用户的Action类无需访问HttpServletRequest对象。拦截器负责将HttpServletRequest里的请求数据解析出来,并传给业务逻辑组件Action实例。山东经济学院业务控制器业务控制器就是用户实现Action类的实例,Action类里通常包含了一个execute方法配置ActionAction所处理的URLAction类组件所对应的实现类Action里包含的逻辑视图和物理资源之间的对应关系山东经济学院模型组件在MVC框架里,业务控制器调用模型组件来处理用户的请求山东经济学院Struts2的模型组件:业务逻辑组件通常会调用模型组件来实现数据的控制,而业务逻辑组件则是由控制器(Action)来调用的。控制器要获得业务逻辑组件的实例的时候,通常使用工厂模式来获得,或者利用其它的IOC容器(如Spring)来管理业务组件的实例。FilterDispatcherAction业务逻辑组件用户请求调用转发请求视图组件可以使用jsp、FreeMarker等山东经济学院深入Struts2深入Struts2的配置文件Struts2的Action处理结果属性驱动和模型驱动Struts2的异常机制山东经济学院深入Struts2的配置文件bean配置常量配置包配置命名空间配置包含配置拦截器配置山东经济学院web.xml中的其他配置!--定义Struts2的FilterDispathcer的Filter--filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-classinit-paramparam-nameconfig/param-nameparam-valuestruts1.xml/param-value/filter!--FilterDispatcher用来初始化struts2并且处理所有的WEB请求。filter-mappingfilter-namestruts2/filter-nameurl-pattern/*/url-pattern/filter-mapping2009/5/28第14页config参数是一个以,隔开的字符串,每一个字符串都是一个xml配置文件的位置,struts会自动加载此处指定的配置文件bean配置创建bean的实例,将该实例作为struts2框架的核心组件使用。Bean包含的静态方法需要一个值注入。注意:通常情况下,我们无须重新定义struts2框架的核心组件。打开struts-default.xml简单讲解一下bean的属性。2009/5/28第15页常量配置在struts.xml文件中配置常量是一种指定struts2属性的方式。和在struts.properties文件中配置是一样的。山东经济学院提示:推荐在struts.xml中配置常量,保留了struts.properties是考虑到webwork的向后兼容性常量配置续Struts2框架按如下搜索顺序加载struts2常量struts-default.xml:struts2-core-2.0.8.jarstruts-plugin.xml:struts2-Xxx-2.0.8.jar等struts2的插件jar文件中struts.xmlstruts.propertiesweb.xml后面文件中的常量配置覆盖了前面文件中的常量配置。2009/5/28第17页常量配置续struts.xml中配置常量struts•constantname=“struts.custom.i18n.resources”value=“mess”/strutsweb.xml中配置常量init-param•param-namestruts.custom.i18n.resources/param-name•param-valuemessageResource/param-value/init-param山东经济学院包配置Struts2框架中的核心组件就是Action、拦截器等,Struts使用包来管理Action和拦截器。每个包就是多个action,多个拦截器,多个拦截器引用的集合。package元素可以指定如下属性name:包的名字,该名字是该包被其他包应用的keyextends:该属性指定该包继承其他包namespace:定义包的命名空间。abstract:指定是否是抽象包。抽象包不能包含action2009/5/28第19页命名空间配置同一个命名空间不能有同名的action,不同的命名空间可以有相同名称的action.包指定namespace属性来为包下所有的action指定共同的action.namespace=“/”指定根命名空间。默认名称空间””如果在指定的命名空间找不到action,就一层一层的向上找,到最后才进入默认的命名空间底下找,如果还未找到,则报错。如果直接访问的是/webapp/login.do,那就先到根命名空间下找,找不到再到默认的空间下找。2009/5/28第20页命名空间配置续1.获得请求路径的URI,例如url是:.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3;3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4;4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。山东经济学院命名空间配置续packagename=getextends=struts-defaultnamespace=/bookactionname=getBooksclass=“com.struts.GetBooksActionresultname=login/login.jsp/resultresultname=success/showBook.jsp/result/action/package山东经济学院访问时:localhost:8080/struts/book/getBooks.action包含配置struts.xml是struts框架的核心配置文件,该文件主要负责管理struts2框架的业务控制器Action默认情况下,struts2框架会自动加载WEB-INF/classes/struts.xml在action非常多的情况下,我们可以做如下配置---包含配置strutsincludefile=“struts-part1.xml”/includefile=“struts-part2.xml”//struts山东经济学院拦截器配置拦截器允许在action处理之前或者action处理之后,插入开发者自定义的代码。通常完成的操作:进行权限控制。跟踪日志跟踪性能打开struts-default.xml简单看一下interceptors元素的定义。2009/5/28第24页拦截器配置续interceptorsinterceptorname=authorityclass=“com.interceptor.AuthorityInterceptor//interceptorsactionname=viewBookresult/WEB-INF/jsp/viewBook.jsp/result!--拦截器一般配置在result元素之后!--interceptor-refname=defaultStack/interceptor-refname=authority//action山东经济学院struts.properties配置该文件定义了struts2框架大量属性,开发者可以通过改变这些属性来满足应用的需求。2009/5/28第26页struts.action.extensionstruts.action.extension用URL扩展名来确定是否这个请求是被用作Strutsaction,其实也就是设置action的后缀.该属性默认值是:action如果设置多个请求后缀请用英文(,)逗号隔开。2009/5/28第27页struts.action.extension=dostruts.serve.static.browserCache设置浏览器是否缓存内容开发阶段一般设置为fa

1 / 77
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功