• 网页入口ControlServlet分析


    init()

    configureBsf(); //配置自定义bsf,即在bean script中注册ofbiz实现的脚本引擎

    getRequestHandler(); //初始化request handler,即加载该模块的controller.xml

     

    doPost()->doGet()

     

    doGet()

    操作

    描述

    设置请求头

    设置charset,若ServletContext里有则取值,否则取request中的,再没有则设置为"UTF-8"

    设置响应头

    设置contentType"text/html"charset

    GenericDelegator.pushUserIdentifier()

    若有:从会话中取出userLoginuserLoginId存入Delegator

    request设置属性 _CONTROL_PATH_

    for JSP dispatching

    初始化delegator

    若会话中已存在delegatorName,则从缓存中取得delegator

    会话没有则从ServletContextdelegator

    分别把对象写入request和把名称写入session

    再没有则记录错误后继续。

    初始化dispatcher

    从会话中取,若没有则从ServletContext取,存入request

    初始化authz

    从会话中取,若没有则从ServletContext取,存入request

    初始化security

    从会话中取,若没有则从ServletContext取,存入request

    request设置属性_REQUEST_HANDLER_

    存入的对象为requestHandler,即加载controller.xml

    request设置属性ftlServletContext

    即初始化freemarker的上下文

    setInitialRequestInfo

    request一些请求头信息如locale、浏览器等存入会话

    GenericDelegator.pushSessionIdentifier()

    创建或取出visitId,类似于sessionId,存入会话

    logRequestInfo(request)

    记录日志

    request设置属性_FORWARDED_FROM_SERVLET_

    标记是内部转发,让其他filter做相应的处理(比如不拦截)

    requestHandler.doRequest()

    处理请求

    errorPage非空则表示有错误

    includeerrorPage,若失败则直接输出错误信息

    事务回滚处理

    若有事务在做则回滚,若有事务挂起则清空

    ServerHitBin处理

    即负载均衡中本机的响应,追踪请求和时间等信息

    清除delegator的会话信息

    clearUserIdentifierStack()clearSessionIdentifierStack()

     

    destroy()

    无特殊处理

  • 相关阅读:
    基于Python的人脸动漫转换
    let 与 var的区别
    【LeetCode】汇总
    【HDU】4632 Palindrome subsequence(回文子串的个数)
    【算法】均匀的生成圆内的随机点
    【LeetCode】725. Split Linked List in Parts
    【LeetCode】445. Add Two Numbers II
    【LeetCode】437. Path Sum III
    【LeetCode】222. Count Complete Tree Nodes
    【LeetCode】124. Binary Tree Maximum Path Sum
  • 原文地址:https://www.cnblogs.com/syjkfind/p/4857117.html
Copyright © 2020-2023  润新知