网页入口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()


若有:从会话中取出userLogin的userLoginId存入Delegator


在request设置属性 _CONTROL_PATH_


for JSP dispatching


初始化delegator


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

会话没有则从ServletContext取delegator。

分别把对象写入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非空则表示有错误


include到errorPage,若失败则直接输出错误信息


事务回滚处理


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


ServerHitBin处理


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


清除delegator的会话信息


clearUserIdentifierStack()和clearSessionIdentifierStack()

destroy()

无特殊处理

时间: 2024-11-08 23:22:55

网页入口ControlServlet分析的相关文章

hive入口​CliDriver分析

CliDriver类是hive的入口类. 首先CliDriver类会通过OptionsProcessor类来parse输入的命令.比如解析-e,-s,-h等参数,然后把对应的值存放到对应的CliSessionState类的属性中,最后应用于CliDriver类中. 比如在executeDriver方法中,根据CliSessionState的属性对命令进行处理 CliDriver cli = new CliDriver();     cli.setHiveVariables(oproc.getHi

[python] 常用正则表达式爬取网页信息及分析HTML标签总结【转】

[python] 常用正则表达式爬取网页信息及分析HTML标签总结 转http://blog.csdn.net/Eastmount/article/details/51082253 标签: pythonpython爬虫正则表达式html知识总结 2016-04-07 06:13 3615人阅读 评论(4) 收藏 举报  分类: Python爬虫(23)  Python基础知识(17)  版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 这篇文章主要是介绍Pytho

Unity网页游戏特点分析

Unity网页游戏是跑在浏览器的UnityWebPlayer插件中的,运行的模式是webplayer.unity3d+html 在嵌入UnityWebPlayer的网页中会调用UnityObject2的initPlugin函数,将webplayer.unity3d作为参数传入来初始化Unity网页游戏的运行环境 注:游戏dll及其他托管dll在构建Web版本时都会写入到webplayer.unity3d文件中 UnityObject2.js (其他链接1  其他链接2) 拥有检测 Unity W

Swift程序入口深度分析

1.swift为什么不需要main 在c/c++及其它语言中都有一个main函数,程序从main作为起点,开始执行程序,如下: int main(int argc, const char * argv[]) { printf("Hello, World!\n"); return 0; } main函数实际上是一个特殊的函数,为了能找到程序入口,大多楼语言都约定main()函数作为入口.那么为什么在Swift中没有这样的一个函数呢?先看一下官方的解释 Code written at gl

weui 多网页切换效果分析

weui的文档写的不怎么详尽,简单的来讲WeUI 为微信 Web 服务量身设计的h5框架. WeUI是一套同微信原生视觉体验一致的基础样式库,由微信官方设计团队为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含button.cell.dialog. progress. toast.article.icon等各式元素. 严格的讲它是一个css库.算一个精简的库. 如果要用jQuery开发的话,head部分,需要加载如下信息: <head> <meta charset=&quo

node入口文件分析和目录初始化

1.需要安装的模块 npm install express npm install jade npm install mongoose npm install bower -g npm install bootstrap 2.编写入口文件 var express = require('express'); var app = express(); app.set('view engine', 'jade'); app.set('port', 3000); app.get('/', functio

从输入网址到显示网页的全过程分析【转】

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等.本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事-1. 首先嘛,你得在浏览器里输入要网址: 2. 浏览器查找域名的IP地址 导航的第一步是通过访问的域名找出其IP地址.DNS查找过程如下:* 浏览器缓存 – 浏览器会缓存DNS记录一段时间. 有趣的是,操作系统没有告诉浏览器储存DNS记录的时间,这样不同浏览器会

node.js基础模块http、网页分析工具cherrio实现爬虫

node.js基础模块http.网页分析工具cherrio实现爬虫 一.前言      说是爬虫初探,其实并没有用到爬虫相关第三方类库,主要用了node.js基础模块http.网页分析工具cherrio. 使用http直接获取url路径对应网页资源,然后使用cherrio分析. 这里我主要学习过的案例自己敲了一遍,加深理解.在coding的过程中,我第一次把jq获取后的对象直接用forEach遍历,直接报错,是因为jq没有对应的这个方法,只有js数组可以调用. 二.知识点    ①:supera

3.4 网页分析算法

在搜索引擎中,爬虫爬取了对应的网页之后,会将网页存储到服务器的原始数据库中,之后搜索引擎会对这些网页进行分析并确定各网页的重要性,即会影响用户的检索的排名结果.对于这些重要性的确定及排名结果的确定需要算法来解决,所以先来了解一下算法. 搜索引擎的网页分析算法主要分为3类:基于用户行为的网页分析算法.基于网络拓扑的网页分析算法.基于网页内容的网页分析算法.接下来我们分别对这些算法进行讲解. 搜索引擎的网页分析算法主要分为3类:基于用户行为的网页分析算法.基于网络拓扑的网页网页分析算法.基于网页内容