From cb2b4bf33b2633a42478260ccd2754dff88f4d2c Mon Sep 17 00:00:00 2001 From: cqsuper Date: Tue, 24 Jul 2012 18:01:27 +0800 Subject: [PATCH] add some service userguide --- webx-guide/pom.xml | 3 + .../src/main/docbook/Webx3_Guide_Book.xml | 6 + .../src/main/docbook/form/Webx3_Form.xml | 2 +- .../main/docbook/userguide/Webx3_pipeline.xml | 97 +++++++ .../docbook/userguide/Webx3_pullservice.xml | 113 +++++++++ .../userguide/Webx3_uribrokerService.xml | 237 ++++++++++++++++++ .../docbook/userguide/images/uribroker/1.png | Bin 0 -> 36845 bytes 7 files changed, 457 insertions(+), 1 deletion(-) create mode 100644 webx-guide/src/main/docbook/userguide/Webx3_pipeline.xml create mode 100644 webx-guide/src/main/docbook/userguide/Webx3_pullservice.xml create mode 100644 webx-guide/src/main/docbook/userguide/Webx3_uribrokerService.xml create mode 100644 webx-guide/src/main/docbook/userguide/images/uribroker/1.png diff --git a/webx-guide/pom.xml b/webx-guide/pom.xml index 7bdf4dd..e0e30bf 100644 --- a/webx-guide/pom.xml +++ b/webx-guide/pom.xml @@ -72,6 +72,9 @@ + + + diff --git a/webx-guide/src/main/docbook/Webx3_Guide_Book.xml b/webx-guide/src/main/docbook/Webx3_Guide_Book.xml index fecc5f7..8f6e331 100644 --- a/webx-guide/src/main/docbook/Webx3_Guide_Book.xml +++ b/webx-guide/src/main/docbook/Webx3_Guide_Book.xml @@ -43,4 +43,10 @@ + + 简单使用 + + + + diff --git a/webx-guide/src/main/docbook/form/Webx3_Form.xml b/webx-guide/src/main/docbook/form/Webx3_Form.xml index f9e0c52..173fbd3 100644 --- a/webx-guide/src/main/docbook/form/Webx3_Form.xml +++ b/webx-guide/src/main/docbook/form/Webx3_Form.xml @@ -1213,7 +1213,7 @@ $group.mapTo($user) source内容,在中文环境中(locale=zh_CN),将显示错误信息“必须填写用户名”;而在英文环境中(locale=en_US),将显示默认的错误信息“User ID is required”。 系统的当前locale是由SetLocaleRequestContext来决定的。关于SetLocaleRequestContext的设定和使用,请参见 + linkend="webx.requestcontexts"/> 此外,你还可以可以改变message source中key的前缀。 改变message source key的前缀 diff --git a/webx-guide/src/main/docbook/userguide/Webx3_pipeline.xml b/webx-guide/src/main/docbook/userguide/Webx3_pipeline.xml new file mode 100644 index 0000000..290aef3 --- /dev/null +++ b/webx-guide/src/main/docbook/userguide/Webx3_pipeline.xml @@ -0,0 +1,97 @@ + + + %placeholders; +]> + + + Pipeline 使用 +
+ 功能介绍 + pipeline是用来处理页面请求的。一个pipeline有多个valve组成,这些valve一般是按顺序执行,也就是一个请求进来,会经过一个个valve处理。 + 也有些valve有条件关系,如if/else,try,catch/finally类似有语义的valve组合,用于处理复杂的业务逻辑。 +
+
+ 概念解释 + valve:(阀门),页面请求的一个处理环节。如:analyzeURL,用来分析页面请求中所带参数,以方便业务代码中使用(target,action,actionEvent)。 +
+
+ 使用 + 常见pipelline的配置: <services:pipeline xmlns="http://www.alibaba.com/schema/services/pipeline/valves"> + + <!-- 初始化turbine rundata,并在pipelineContext中设置可能会用到的对象(如rundata、utils),以便valve取得。 --> + <prepareForTurbine /> + + <!-- 设置日志系统的上下文,支持把当前请求的详情打印在日志中。 --> + <setLoggingContext /> + + <!-- 分析URL,取得target。 --> + <analyzeURL homepage="homepage" /> + + <!-- 检查csrf token,防止csrf攻击和重复提交。假如request和session中的token不匹配,则出错,或显示expired页面。 --> + <checkCsrfToken /> + + <loop> + <choose> + <when> + <!-- 执行带模板的screen,默认有layout。 --> + <pl-conditions:target-extension-condition extension="null, vm, jsp, jspx" /> + <performAction /> + <performTemplateScreen /> + <renderTemplate /> + </when> + <when> + <!-- 执行不带模板的screen,默认无layout。 --> + <pl-conditions:target-extension-condition extension="do" /> + <performAction /> + <performScreen /> + </when> + <otherwise> + <!-- 将控制交还给servlet engine。 --> + <exit /> + </otherwise> + </choose> + + <!-- 假如rundata.setRedirectTarget()被设置,则循环,否则退出循环。 --> + <breakUnlessTargetRedirected /> + </loop> + + </services:pipeline> + +
+
+ 原理 + pipeline的配置表明了页面处理顺序: + 如果是一个target后缀为null, vm, jsp, + jspx,则先执行action请求,再处理带模板的screen请求,最后才是渲染模板。所以不管是post表单提交也好,还是简单的页面请求也好,都是走这个顺序。 + 如果target后缀为do,则跟上面稍微有区别,不需要渲染模板,它在json请求等会有很大作用。 +
+
+ 扩展 + + + + 增加一个valve + 需要继承AbstractValve,并在配置文件配置,这样即可 + + <valve class="*.*" /> + + + + 增加一个后缀处理 + 如: + + <pl-conditions:target-extension-condition extension="json" /> + + 后面跟上要扩展的业务逻辑。 + + + 业务逻辑扩展 + 如csrftoken校验;页面权限校验。这些都可以通过pipeline来解决。 + 建议:增加的valve放到analyzeURL valve后面。前面几个valve涉及环境初始化工作。 + + + +
+
diff --git a/webx-guide/src/main/docbook/userguide/Webx3_pullservice.xml b/webx-guide/src/main/docbook/userguide/Webx3_pullservice.xml new file mode 100644 index 0000000..b523646 --- /dev/null +++ b/webx-guide/src/main/docbook/userguide/Webx3_pullservice.xml @@ -0,0 +1,113 @@ + + + %placeholders; +]> + + + Pipeline使用 +
+ 介绍 + pullService提供了一个自动组装template context的机制。除了框架提供的工具类之外,也可以自己做扩展。 +
+
+ 使用 +
+ 框架自带的tool +
+ <utils /> + + 注入了arrayUtil,classLoaderUtil,classUtil,exceptionUtil,fileUtil,localeUtil,messageUtil,objectUtil,streamUtil,stringEscapeUtil,stringUtil,systemUtil,mathUtil,这些工具类。 +   + + StringUtil类webx2时候差别蛮大的,使用前最好先查下类 + +
+
+ <rundata-tool /> + 注入了rundata,rundata对应的实例是:TurbineRunData +
+
+ <csrfToken /> + 注入了csrfToken,csrfToken对应的实例是:CsrfToken +
+
+ <form-tool /> + 注入了form +
+
+ <control-tool /> + 注入了ControlTool +
+
+ <uris-tool /> + 注入了所有uriBrokerService里面配的uriBroker。 +
+
+
+ toolName的生成规则顺序 + + + + refName + + + 根据class名字生成,如果类带后缀(Tool, ToolFactory, ToolSet, + ToolSetFactory),先去掉后缀,再变成camel case。如注入AbcTooFactory类,则页面可以引用abc。 + + + + 根据配置文件名称生成:如果配置带后缀(-tool, -tool-factory, -tool-set, + -tool-set-factory),先去掉后缀,再变成camel case。如rundata-tool,页面引入的是rundata。 + + + + +
+
+
+ 扩展 +
+ 引入多个bean + <context-exposer> +     <tool id="bean1" /> +     <tool id="bean2" /> +     <tool id="bean3" /> +     <tool id="bean4" /> +</context-exposer> +
+
+ 注入类的常量(指的是public,static,finally的那些field),配置举例: + <constants id="myconst" constantClass="javax.servlet.http.HttpServletResponse" exposed="true/false"/> + 这样页面上就可以这么用常量,$myconst.SC_OK,$myconst.SC_FOUND  + + 默认exposed=true,这样模板上甚至可以这么用:$SC_OK,当然也可以这么$myconst.SC_OK,建议用后者。如果exposed=false,那模板上只能这么用:$myconst.SC_FOUND +
+
+ 注入一个类,举例: + <bean-tool id="beanName" class="com.alibaba...XXX" scope="global/request" autowire="true" /> +
+
+ 将静态util类的方法组合在一起,举例 + + <mixin id="myUtils"> + <!-- 引进class中所有public static方法 --> + <class name="com.alibaba.citrus.util.StringUtil" /> + + <!-- 引进class中部分public static方法 --> + <class name="com.alibaba.citrus.util.StringEscapeUtil"> + + <!-- 引进指定的public static方法 --> + <method name="escapeHtml" /> + + <!-- 引进指定的public static方法,并改名 --> + <method name="escapeURL" renameTo="escapeUrl" /> + + </class> +</mixin> + 这样在页面上可以这样使用:$myUtils.isEmpty("$ddd"),$myUtils.escapeHtml("$avar") + +
+
+
diff --git a/webx-guide/src/main/docbook/userguide/Webx3_uribrokerService.xml b/webx-guide/src/main/docbook/userguide/Webx3_uribrokerService.xml new file mode 100644 index 0000000..d4d3c72 --- /dev/null +++ b/webx-guide/src/main/docbook/userguide/Webx3_uribrokerService.xml @@ -0,0 +1,237 @@ + + + %placeholders; +]> + + + uriBrokerService 使用 +
+ 功能介绍 + uriBrokerService提供了uri的定制功能。以解决URI的拼接,转码,以及开发与正式环境切换的问题。 +
+
+ 使用 + + + + + + + + uri配置名称 + 含义 + 举例 + + + + + uri + 最通用的uri配置 + http://user:pass@myserver.com:8080/view?id=1#top + + + content-uri  + 通用的content URI,用于显示一般的WEB资源(如图片等) (静态资源一般用这种) + http://user:pass@myserver.com:8080/img/webx.jpg + + + servlet-uri  + Servlet风格的URI  + http://user:pass@myserver.com:8080/mycontext/myservlet/view?id=1#top + + + + servlet-content-uri  + 通用的servlet content URI,用于显示webapp context path下的资源(如图片等)  + http://user:pass@myserver.com:8080/mycontext/img/webx.jpg + + + turbine-classic-uri  + Turbine传统风格的URI(可以不考虑了)  + http://user:pass@myserver.com:8080/mycontext/turbine/template/product,ViewItem?id=1#top + + + + turbine-uri  + Turbine风格的URI (我们通常用这种) + + http://user:pass@myserver.com:8080/mycontext/myservlet/mycomponent/myTarget.jhtml + + + turbine-content-uri  + Turbine风格的content URI  + + http://user:pass@myserver.com:8080/mycontext/myservlet/mycomponent/myContent.jpg + + + uri-bean + 提供扩展机制 + + + + + +
+
+ uribroker配置介绍 +
+ uir配置介绍 + uri的配置由四部分组成:服务器信息,请求参数,属性,path。先举例: + + + + + + 1、请求参数;2、path;3、服务器信息;4、属性 + + 这个url生成后是:http://myuser2:mypass2@myservername2:1234/aaa/a1/bbb/ccc/ddd?aaa=1111&bbb=2222&ccc=3333#myreference2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
服务器参数配置说明
参数含义举例
serverURI 服务器URI http://www.alibaba.com
serverScheme 协议http 或者 https
loginUser 登录用户名 +
loginPassword 登录密码 +
serverName URL的服务器名称www.taobao.com
serverPort URL的服务器端口号 80
reference URL的参数参考说明 +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
url配置属性说明
参数默认值含义
requestAware false 是否自动从request中填充值,默认不填充 
charset + 取得URL encoding的编码字符集。假如值为null,将从LocaleUtil中取得 
exposed false页面是否可引用,默认不可以
extends + 继承前一个uribroker
type null有四种:auto/full/absolute/relative auto:自动选择URI的类型  + full:完整URI,包括serverInfo, path; + absolute:绝对URI,不包括serverInfo,但包括完整的path;  + relative:相对URI,不包括serverInfo,其path为相对于当前请求的URI的相对路径 
+
+
+
+ content-uri 配置介绍 + content-uri 配置跟 uri 类似,不一样的是比uri配置增加了两个配置 : + prefixPath:Content前缀路径 ; + contentPath: Content路径  +
+
+ servlet-uri 配置介绍 + serlvet-uri 配置跟 uri 类似,不一样的是比uri配置增加了三个配置  + contextPath:Web应用程序context路径  + servletPath:Servlet路径  + pathInfo: URL的pathInfo部分  +
+
+ servlet-content-uri 配置 + serlvet-uri 配置跟 uri 类似,不一样的是比uri配置增加了三个配置  + contextPath:Web应用程序context路径  + prefixPath:Content前缀路径  + contextPath:Content路径 +
+
+ turbine-uri 配置 + turbine-uri 配置比uri增加了不少配置和属性。 + 配置如下: + contextPath:Web应用程序context路径 + servletPath: Servlet路径 + componentPath: Component路径 + target: target路径 + action: action名称 + 属性配置增加如下: + mappingRuleServiceRef: 引用mappingRuleService + targetMappingRule:目标mappingRule + actionParam: action   参数 + convertTargetCase: 是非将将target转换成target_name形式 +
+
+ turbine-content-uri 配置 + 比serlvet-content-uri多了一个componentPath +
+
+ uri-bean 配置 + 有两个属性:exposed和extend跟之前的使用一样。举例如下: + <uris:uri id="mybeanBase"> + <uris:serverURI>http://myserver/aa/bb/cc</uris:serverURI> +</uris:uri> + +<!-- 任意bean --> +<uris:uri-bean id="mybean" class="com.alibaba.citrus.service.uribroker.uri.GenericURIBroker" exposed="true" extends="mybeanBase" p:serverScheme="https" /> + myBean生成的url是:https://myserver/aa/bb/cc。如果有特殊的需求,可以在GenericURIBroker类或者直接在URIBroker上做扩展。 +
+
+
diff --git a/webx-guide/src/main/docbook/userguide/images/uribroker/1.png b/webx-guide/src/main/docbook/userguide/images/uribroker/1.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddeafa723f3435d5cf42e2bf3d0452efd4917b0 GIT binary patch literal 36845 zcmYhh1B@>|&^G#8+q-9N+qP}nHqP3%ZQHhO?^)Zncklmwzx(ChCT-fLnM`LU?UQFF zLP1U(4jKy@006*AN{A={06>NR%~v47{~OV?pZ;5*Ut0#0~ZIEgJC&fSOX9h zf3SHZUg9AZS{j*tKibPfz=jVW+Gfi0?)#5%!NWuB6DXk3zadP$*qk9c3n0+y5h^MI z3jbjHelLnMaq= z(}ej$0EBT5j`4w;oCY;!mg3I908QM}#8@~uol#AOG-vnnPTs$1GI4!O5hA;NZ?8Hp z&=IkICK`y0Kfji-zg?gZqQ96yxV3NN0@lWFk_el$vq|OFaK>U7c@K|lEbC?JVWO6r z*Gt@AMX3pYD8I^J*xg)eJk(u&g`BVb{S1u=fniVT`QN9=yaYIlfaO z-xu2EG_!-9$ApdHO>V z`Lo{v2o10ufKl?{Twb*0((!=XatTmD2Ur7>4(70*yq+jL|L}(9iuJus)qIB`yn)ca zy@%br%ez>|1Na7&dIXR178Ir_Sd*bALG4)gsA7~vD8D_}ySF;O)T?$oKL&k9UMRIb zH^#o2UhIA*kbW1(4(;Ro)+7O2t7od1f4GBfBmL0ilP<X9* zeNTVgK)ZNrzJFzoP z7avry@w;K&hX%su)f&B?B~9RtaJWZt+g`pcum%qo6?gag9Cff9>?UomC^v*C@2Dte zDM@Kr-}U;Vx1nG2@}d&{bI)(F^9aE4KTLNy!f*Cp0xUlR^~b*>VD&KrWC{T~eg~Mi zNRL^e8@BTR2#UQk^FTLvJOao|O1Pr{=y^bAKV&)x_8z2;;pInwfySYR10+cROFWp9 zAR!0Db&}|8G5%AmSgQFbe{*aFBx_5dupI zB&8r1LX>f6r{FC@eG1UXP}6X3>OIsW7kl_gA#!=ZwU1|5h*4CJy1tQYbq?w1pn z+bnY~o2tN6qCcau25AX?3ndk4E)ZFmHWO|DT}Q==mK8+Jubi2=;CJWl7OXL1!19U# ziU8tW#AJY^@QKl6LoCMabj4{LGq|V`CPUHsN)2ZkB65|pa z62+2F64??$5{Z(L5*HGk61nl-1nVRvB*(<6WUS=RL^0$ugf&FA=B<*Vq&ARr6OjMC-Sb*S2XLajSwcxCfM#)-3)rzw}Ek^d4p?v zUH9~N`V$iq?-Q)!Ipam+@(F8+yTo}!zk>OM;V7_Bdcj4($U-ptQ2QuglwkNFWFgd| zz@kVavXNt`Q_022U&$NEB9p|)q{(d*

Y=7Ujj|(-nagjTIN=;N>S34a;B4oy&U5 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

sW~4N}-KN zfb0<)!#HbR{L3RKiO)+|n`5$8X zPRYG^$P(u%4Vclf`!`-~5$e00okuY|JPaVwD711+Zlqi9jo@gkHm3Q~!OrL;>3e=$ z(9QuX*pf2zyY4FifOYd}%m(C?Jl`k&CAaSg0)N@V<97C05rFr#oVFT-Mn04DD3O=n zuUfeF0&>a^u-A7KlJJY9;e&Y>C9``Yn>#rK&L;?oqOT^^|D*7^*n| z{Pt^`wDk={m-?Rs`0sxZh`9pTKE*DdHxs%`ByMR~ss(*fJ+Ua#{Wos&C!R7qp5X@H zZ4wwByh=fK<<~c@1=`j1=^^$a7V^$qpMYumV=8fnY5iai`Pm6Dn`KeWhcc;f7~Mv7T_3P Okb$15Zl%tn(Ek9jSTDW+ literal 0 HcmV?d00001