ISDP平台系统web部分程序设计说明书.docx
Product Name产品名称Product Version产品版本ISDPConfidentiality Level密级3.0Total s页数共25页ISDP平台把握(kòngzhì)内核局部(bù fen)具体(xiángxì)设计说明书Prepared by拟制Reviewed by 评审人Approved by 批准Authorized by签发吴伟Date日期Date 日期Date 日期Date日期2023-07-26yyyy-mm-ddyyyy-mm-dd yyyy-mm-ddAll rights reserved版权全部 侵权必究ISDP平台把握(kòngzhì)内核局部(bù fen)具体(xiángxì)设计说明书密级Revision record 修订(xidìng)记录DateRevisCRSectionChange DescriptionAuthor日期ionID /Numbe修改描述作者VersiDefecron修订t ID CR号修改章节版本2023-7-26Distribution List 分发(fnf)记录Copy No.1Holder”s Name & Role持有者和角色Issue Date分发日期2023-6-192yyyy-mm-dd3yyyy-mm-dd4yyyy-mm-dd5yyyy-mm-ddAll rights reserved版权全部侵权必究 2 , Total 25 第2页,共25页Catalog 目 录1 Introduction 文档简介(jin jiè)71.1 Purpose 文档目的(mùdì)71.2 Scope 范围(fànwéi)72 平台(píngtái)把握核心根本介绍72.1 Context Security Filter82.2 Control Servlet92.3 Request Handler92.4 Event Handler102.5 View Handler103 平台(píngtái)把握核心程序具体设计113.1 control局部具体设计113.1.1 类org.ofbiz.core.control.ContextSecurityFilter113.1.2 类org.ofbiz.core.control.ControlServlet113.1.3 类org.ofbiz.core.control.RequestHandler113.1.4 类org.ofbiz.core.control.RequestManager123.1.5 类org.ofbiz.core.control.ConfigXMLReader143.2 event局部具体设计173.2.1 工厂类org.ofbiz.core.event.EventFactory173.2.2 接口org.ofbiz.core.event.EventHandler173.2.3 实现类org.ofbiz.core.event.ISDPServiceEventHandler183.2.4 实现类org.ofbiz.core.event.JavaEventHandler183.2.5 实现类org.ofbiz.core.event.ServiceEventHandler183.3 view局部具体设计193.3.1 工厂类org.ofbiz.core.view.ViewFactory.193.3.2 接口org.ofbiz.core.view.ViewHandler.203.3.3 实现类org.ofbiz.core.view. ViewHandler203.3.4 实现类org.ofbiz.core.view.JspViewHandler203.3.5 实现类org.ofbiz.core.view.RegionViewHandler213.4 region局部具体设计213.4.1 类org.ofbiz.core.region.RegionManager213.4.2 类org.ofbiz.core.region.Content223.4.3 类org.ofbiz.core.region.Section233.4.4 类org.ofbiz.core.region.RegionStack233.4.5 类org.ofbiz.core.region.Regionregion.Region233.4.6 类org.ofbiz.core.region.RenderTag243.5 tag局部具体设计243.5.1 类AbstractParameterTag243.5.2 类EntityFieldTag243.5.3 类FormatTag243.5.4 类I18nBundleTag243.5.5 类I18nMessageArgumentTag243.5.6 类I18nMessageTag243.5.7 类IfTag243.5.8 类InputValueTag243.5.9 类IterateNextTag243.5.10 类IteratorHasNextTag253.5.11 类IteratorTag253.5.12 类ObjectTag253.5.13 类ParamTag253.5.14 类ServiceTag253.5.15 类UnlessTag253.5.16 类UrlTag25Table List 表名目(mùlù)Abbreviations缩略语6ISDP平台把握核心(héxn)WEB局部 具体(xiángxì)设计说明书Keywords 关键词:能够表达(txiàn)文档描述内容主要方面的词汇。Abstract 摘 要:Abbreviations缩略语Full spelling 英文全名Chinese explanation 中文解释List of abbreviations 缩略语清单(qngdn):对本文所用缩略语进展说明,要求(yoqiú)供给每个缩略语的英文全名和中文解释。Controller.x mlTag 标签1Introduction文档简介(jin jiè)1.1 Purpose文档目的(mùdì)本文档是平台把握(kòngzhì)核心模块(mó kuài)的具体(xiángxì)设计文档。本文(bnwén)主要编写的目的是为了帮助开发人员更加了解平台系统的功能,内容描述了平台把握核心实现的功能,开发人员如何设置平台配置和编写平台类,扩展平台功能。1.2 Scope 范围主要包括了平台把握核心包中主要函数的功能及如何正确配置。2 平台把握核心根本介绍平台把握核心主要分为以下五局部Context Security Filter Control Servlet Request Handler Event HandlerView HandlerFilterControl 把握器EventHandler扫瞄器View 视图ViewHandlerWeb.xmlJspViewHandlerJsp 页面描绘处理器调用 一般页面描绘处理器 ViewHandler视图的描绘处理ViewHandler平台的扩展点实现ViewHandler 接口即可大事的处理调用效劳引擎处理器ServiceEventHandler调用 java 静态方法处理器JavaEventHandlerEventHandler平台的扩展点实现EventHandler接口即可2.1 Context Security Filter内容安全过滤器在/WEB-INF/web.xml 中定义,把握web 应用程序访问文件。可以增加记录(jìlù)和 debug 扫瞄器恳求的功能。这是全部web 恳求的起点。在 web.xml 中过滤器可以定义的初始(ch sh)参数allowedPaths允许(ynx)访问的资源,各个资源路径之间用 : 连接(liánji)例子(lì zi): ”/images” 表示(bioshì)imges 名目下全部文件和名目。例子(lì zi): ”/site-s/contactus.html” 仅运行访问contactus.html 例子: ”/site-s/info/*” 允许访问 info 名目下全部文件<init-param><param-name>allowedPaths</param-name><param-value>/control:/index.html:/index.jsp:/images:/scripts:</param-value></init-param>当一个恳求访问一个被保护的资源,过滤器可以有两种返回类型,一个重定向之地址,一个返回错误代码,errorCode 和 redirectPath 只需要设置一个errorCode,redirectPath例子:<init-param><param-name>errorCode</param-name><param-value>403</param-value></init-param><init-param><param-name>redirectPath</param-name><param-value>/control/main</param-value></init-param>2.2 Control ServletControlServlet 是 web 应用恳求处理的中心,当过滤器过滤通过的恳求提交之此。当恳求过来时,servlet 首先初始化一些环境关心的类,初始化一个session,然后把一些关心类对象实体处理,效劳发起,安全处理引用设置到request 中去。这个处理最终提交给RequestHandler 处理。2.3 Request HandlerRequestHandler 类利用RequestManager 类来治理xml 格式的恳求流程定义具体文件名:/WEB-INF/controller.xml。这个恳求流程关系一般包含恳求资源标识,可选的回显视图名称和需要调用的大事。按回显视图名称对应到视图的定义,视图定义也在cotroller.xml 中设置。ISDP平台把握(kòngzhì)内核局部(bù fen)具体(xiángxì)设计说明书密级大事可以通过实体委派类(EntityDelegator)直接调用(diàoyòng)实体引擎,也可以通过效劳发起类(ServiceDispatcher)调用效劳service来处理业务规律。当 RequestHandler 收到一个恳求(qngqiú),首先依据恳求资源标识查找对应的恳求流程配置,如找不到就直接返回不知道恳求(qngqiú)类型。然后由安全处理类验证当前(dngqián) 恳求是否要求验证,用户是否已被授权访问。假设不满足条件,将返回登陆界面。通过验证之 后,程序将查找大事的配置,假设找到配置,大事处理将提交给EventHandler 进展处理。大事处理完成,假设EventHandler 未指定回显视图名,就使用缺省视图,依据视图名获得视图配置,然后提交给ViewHandler 进展处理。下面就是(jiùshì)一个恳求映射配置:<request-map uri=“checkLogin“ edit=“false“><description>Verify a user is logged in.</description><security s=“false“ auth=“false“/><event type=“java“ path=“org.ofbiz monapp.security.login.LoginEvents“ invoke=“checkLogin“ /><response name=“success“ type=“view“ value=“name“ /><response name=“error“ type=“view“ value=“login“ /></request-map>2.4 Event HandlerEventHandler 的配置在controller.xml 中如:<handler name=“java“ type=“request“class=“org.ofbiz.webapp.event.JavaEventHandler“/>EventHandler 类型其实就区分为view 和其他类型。如需自己开发EventHandler,具体的类只要实现EventHandler 接口就可以了。2.5 View HandlerViewHandler 的配置在controller.xml 中如:<handler name=“region“ type=“view“class=“org.ofbiz.webapp.view.RegionViewHandler“/>ViewHander 处理描绘下一个我们能看到的页面,缺省的ViewHandler 支持标准的html/jsp 页面。其他类型的ViewHandler如 region 和 veloctity使用特别的规律描绘页面。All rights reserved版权全部侵权必究 10 , Total 25 第10页,共25页3 平台(píngtái)把握核心程序具体(xiángxì)设计把握(kòngzhì)核心模块主要类的功能说明(shumíng)如下:3.1 control局部(bù fen)具体设计3.1.1 类org.ofbiz.core.control.ContextSecurityFilter用途:内容安全过滤器在/WEB-INF/web.xml中定义,把握web 应用程序访问文件。可以增加记录和 debug 扫瞄器恳求的功能。3.1.2 类org.ofbiz.core.control.ControlServlet用途:web 应用的把握Servlet3.1.3 类org.ofbiz.core.control.RequestHandler用途:servlet 接收到恳求将由此类进展处理Method Summaryvoid doRequest(javax.servlet. . ServletRequest requesjavax.servlet. . ServletResponse response, java.lang.String chain, org.ofbiz.core.entity.GenericValue userLogin, org.ofbiz.core.entity.GenericDelegator delegator)恳求处理入口java.lang.String getDefaultError(javax.servlet. . ServletReques st)返回缺省的显示错误页面org.ofbiz.core.event.EventFa getEventFactoryctory获得大事处理类产生工厂staticjava.lang.String getNextUri(java.lang.String path)方法:获得下一页面资源标识RequestManager getRequestManager获得恳求治理总控javax.servlet.ServletContext getServletContext获得 ServletContext 对象org.ofbiz.core.view.ViewFact getViewFactoryory获得页面处理类产生工厂void init(javax.servlet.ServletContext context)初始化 创立了页面处理类产生工厂,大事处理类产生工厂处理总控java.lang.String makeLink(javax.servlet. . ServletRequest reques javax.servlet. . ServletResponse response, java.lang.String url)构建安全连接的 URLjava.lang.String runEvent(javax.servlet. . ServletRequest request javax.servlet. . ServletResponse response, java.lang.String type, java.lang.String path, java.lang.String method)依据大事类型找到相应处理类运行大事3.1.4 类org.ofbiz.core.control.RequestManagerField Summary用途(yòngtú):治理恳求 ,配置(pèizhì),视图映射(yìngshè)关系staticintEVENT_HANDLER_KEYEvent 大事处理类型staticintVIEW_HANDLER_KEYView 视图处理类型Method Summaryboolean allowDirectRequest(java.lang.String uriStr) 推断是否允许直接访问boolean allowExtView(java.lang.String uriStr) 是否允许内部视图void clear方法(fngf):去除配置java.lang.String getDefaultError获得缺省错误页面java.lang.String getError(java.lang.String uriStr)从恳求映射关系request-map中获得错误显示页面, 假设没有使用缺省全局的java.lang.String getEventMethod(java.lang.String uriStr)获得恳求映射关系中的大事处理方法java.lang.String getEventPath(java.lang.String uriStr)获得恳求映射关系中大事处理路径java.lang.String getEventType(java.lang.String uriStr)获得恳求映射关系中的处理类型java.util.Collection getFirstVisitEvents获得首次访问处理大事集java.lang.String getHandlerClass(java.lang.String name, int type)获得处理类名java.util.Map getHandlerMap获得全部恳求处理器配置java.util.Collection getPostProcessor获得每次恳求完成之后处理大事集java.util.CollectiongetPreProcessor获得每次访问预处理大事集java.lang.StringgetRequestAttribute(java.lang.String java.lang.String attribute)uriStr,获得恳求映射关系的属性值java.util.MapgetRequestMapMap(java.lang.StringuriStr)获得此恳求资源标识对应的恳求处理映射Request-Map)java.lang.String getViewContentType(java.lang.String viewStr) 获得页面 content-typejava.lang.String getViewEncoding(java.lang.String viewStr) 获得页面编码方式java.lang.String getViewInfo(java.lang.String viewStr)获得视图描述信息java.lang.String getViewName(java.lang.String uriStr)获得恳求映射关系中视图配置名java.lang.String getView(java.lang.String viewStr)获得视图配置中的页面定义java.lang.String getViewType(java.lang.String获得视图处理类型boolean requiresAuth(java.lang.String此恳求是否需要安全验证boolean requires s(java.lang.String是否要求安全连接viewStr)uriStr)uriStr)3.1.5 类org.ofbiz.core.control.ConfigXMLReader用途(yòngtú):解析(ji x)x配ml置文件Field Summarystatic java.lang.String DEFAULT_ERROR_缺省错误页面定义域名static java.lang.String ERROR_错误页面定义域名static java.lang.String EVENT大事定义域名static java.lang.String EVENT_METHOD大事方法定义域名static java.lang.String EVENT_PATH大事路径定义域名static java.lang.String EVENT_TYPE大事类型定义域名static java.lang.String FIRSTVISIT首次访问定义域名static java.lang.String HANDLER处理器定义域名static java.lang.String HANDLER_CLASS处理器类定义域名static java.lang.String HANDLER_NAME处理器名称定义域名static java.lang.String HANDLER_TYPE处理器类型定义域名static org.ofbiz.core.util.UtilCache handlerCache恳求处理器配置缓存static org.ofbiz.core.util.UtilCache headCache网站根本配置缓存static java.lang.String INCLUDE包含域名static java.lang.String INCLUDE_FILE包含文件定义域名static java.lang.String INCLUDE_URL包含 URL 定义域名static java.lang.String moduleDebug 时使用的名称static java.lang.String NEXT_成功页面定义域名staticjava.lang.StringPOSTPROCESSOR后处理staticjava.lang.StringPREPROCESSOR预处理staticjava.lang.StringREQUEST_DESCRIPTION恳求描述定义域名staticjava.lang.StringREQUEST_EDITstaticjava.lang.StringREQUEST_MAPPING恳求映射关系定义域名static java.lang.String REQUEST_URI恳求资源标识static org.ofbiz.core.util.UtilCache requestCache恳求映射关系配置缓存static java.lang.String RESPONSE响应定义域名static java.lang.String RESPONSE_NAME响应名称定义域名static java.lang.String RESPONSE_TYPE响应类型定义域名static java.lang.String RESPONSE_VALUE响应值定义域名static java.lang.String SECURITY安全把握定义域名static java.lang.String SECURITY_AUTH安全把握授权定义域名static java.lang.String SECURITY_CLASSstaticjava.lang.StringSECURITY_DIRECT直接恳求定义域名staticjava.lang.StringSECURITY_EXTVIEW内部页面定义域名staticjava.lang.StringSECURITY_ Sstaticjava.lang.StringSITE_OWNER站点全部者定义域名staticjava.lang.StringVIEW_CONTENT_TYPE安全把握类定义域名页面内容类型定义域名static java.lang.String VIEW_DESCRIPTION页面描述定义域名static java.lang.String VIEW_ENCODING页面编码方式定义域名static java.lang.String VIEW_INFO页面信息定义域名static java.lang.String VIEW_MAPPING页面映射定义域名static java.lang.String VIEW_NAME页面名称定义域名static java.lang.String VIEW_页面页面定义域名static java.lang.String VIEW_TYPE页面类型定义域名static org.ofbiz.core.util.UtilCache viewCache页面配置缓存方法(fngf):Method Summarystatic void clearConfig(.URL url)去除 url 对应的 controller.xml 的配置, 目的就是为了支持修改 controller.xml 文件不需要重启,只需要重公布staticjava.util.Map getConfigMap(.URL xml)获得站点配置staticjava.util.Map getHandlerMap(.URL xml)获得全部恳求处理器配置static java.util.HashMap getRequestMap(.URL xml)获得恳求映射关系集合staticjava.util.Map getViewMap(.URL xml)获得全部页面配置3.2 event局部具体(xiángxì)设计3.2.1 工厂(gngchng)类org.ofbiz.core.event.EventFactory用途(yòngtú):某一大事(shìjiàn)的处理需要获得一个处理类对象(duìxiàng),此类就负责产生恳求处理类对象Field Summaryprotectedjava.util.Map handlers处理类对象集合protectedorg.ofbiz.core.control.RequestHandler requestHandlerservlet 恳求处理引用protectedorg.ofbiz.core.control.RequestManager requestManager恳求治理总控引用Method SummaryEventHandler getEventHandler(java.lang.String type)获得一个恳求大事处理类对象方法:3.2.2 接口org.ofbiz.core.event.EventHandler用途:定义恳求大事处理接口,它的实现类对象将有EventFactory 产生Method Summaryjava.lang.String invoke(java.lang.String eventPath,java.lang.StringeventMethod, javax.servlet. . ServletRequest request, javax.servlet. . ServletResponse response)大事的处理方法:3.2.3 实现类org.ofbiz.core.event.ISDPServiceEventHandler用途:恳求大事处理接口的一个实现类,效劳的调用Field Summarystatic java.lang.String ASYNCstatic java.lang.String SYNCMethod Summaryjava.lang.String invoke(java.lang.String eventPath,java.lang.StringeventMethod, javax.servlet. . ServletRequest request, javax.servlet. . ServletResponse response)恳求大事的处理, 类型为 java 静态方法的调用方法(fngf):3.2.4 实现(shíxiàn)类org.ofbiz.core.event.JavaEventHandler用途(yòngtú):一种恳求(qngqiú事) 件处理类型 java 静态方法调用此 java 静态(jìngtài)方法必需有输入参数必需是 ServletRequest, ServletResponse输出必需为String,且方法修饰符为public static如:public static String MethodName( ServletRequest req, ServletResponse resp)Method Summaryjava.lang.String invoke(java.lang.String eventPath,java.lang.StringeventMethod, javax.servlet. . ServletRequest request, javax.servlet. . ServletResponse response)恳求大事的处理, 类型为 java 静态方法的调用方法:3.2.5 实现类org.ofbiz.core.event.ServiceEventHandler用途:恳求大事处理接口的一个实现类,效劳的调用Field Summarystatic java.lang.String ASYNC异步类型定义static java.lang.String SYNC同步类型定义Method Summaryjava.lang.String invoke(java.lang.String eventPath,java.lang.StringeventMethod, javax.servlet. . ServletRequest request, javax.servlet. . ServletResponse response)恳求大事的处理, 类型为 java 静态方法的调用方法:3.3 view局部具体(xiángxì)设计3.3.1 工厂(gngchng)类org.ofbiz.core.view.ViewFactory 用途(yòngtú):页面(yè miàn)处理类工厂负责产生页面描绘处理类对象(duìxiàng),被生产对象的类必需实现ViewHandler 接口Field Summaryprotectedjavax.servlet.ServletContext contextServlet 上下文java.util.Map handlers页面描绘处