ASP.Net下的HttpModule是基于事件的处理模型,这使得我们在选择事件监听和处理的时候有更多选择。下面是对HttpModule有关事件被触发的监测:

有关代码如下

using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Web.SessionState;
using System.Threading; /// ///EventTest 的摘要说明
///
public class EventTest : IHttpModule, IRequiresSessionState
{
public EventTest()
{
//
//TODO: 在此处添加构造函数逻辑
//
} void IHttpModule.Dispose()
{
return;
} void IHttpModule.Init(HttpApplication App)
{
App.AcquireRequestState += new EventHandler(AcquireRequestState);
App.BeginRequest += new EventHandler(BeginRequest);
App.AuthenticateRequest += new EventHandler(AuthenticateRequest);
App.AuthorizeRequest += new EventHandler(AuthorizeRequest);
App.Disposed += new EventHandler(Disposed);
App.EndRequest += new EventHandler(EndRequest);
App.Error += new EventHandler(Error);
//App.MapRequestHandler += new EventHandler(MapRequestHandler);
App.PostAcquireRequestState += new EventHandler(PostAcquireRequestState);
App.PostAuthenticateRequest += new EventHandler(PostAuthenticateRequest);
App.PostAuthorizeRequest += new EventHandler(PostAuthorizeRequest);
//App.PostLogRequest += new EventHandler(PostLogRequest);
App.PostMapRequestHandler += new EventHandler(PostMapRequestHandler);
App.PostReleaseRequestState += new EventHandler(PostReleaseRequestState);
App.PostRequestHandlerExecute += new EventHandler(PostRequestHandlerExecute);
App.PostResolveRequestCache += new EventHandler(PostResolveRequestCache);
App.PostUpdateRequestCache += new EventHandler(PostUpdateRequestCache);
App.PreRequestHandlerExecute += new EventHandler(PreRequestHandlerExecute);
App.PreSendRequestHeaders += new EventHandler(PreSendRequestHeaders);
App.PreSendRequestContent += new EventHandler(PreSendRequestContent);
App.ReleaseRequestState += new EventHandler(ReleaseRequestState);
App.ResolveRequestCache += new EventHandler(ResolveRequestCache);
App.UpdateRequestCache += new EventHandler(UpdateRequestCache);
} private void BeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)");
} private void AcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AcquireRequestState(与当前建立会话时发生)");
if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void AuthenticateRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)"); } private void AuthorizeRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)"); } private void Disposed(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:Disposed(释放应用时发生)"); } private void EndRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)"); } private void Error(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + Error(Error事件时发生)");
} private void PostAcquireRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生)");
if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void PostAuthenticateRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)");
} private void PostAuthorizeRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)");
} private void PostMapRequestHandler(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)"); } private void PostReleaseRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)");
} private void PostRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)");
} private void PostResolveRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)");
} private void PostUpdateRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)"); } private void PreRequestHandlerExecute(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生)"); if (context.Session["T"] != null)
{
response.Write(" + " + context.Session["T"].ToString());
}
else
{
response.Write(" Session未收到!");
}
} private void PreSendRequestContent(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
//response.Write("
" + time + " + IHttpModule:PreSendRequestContent(向客户端发送内容之前发生)"); } private void PreSendRequestHeaders(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)");
} private void ReleaseRequestState(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)");
} private void ResolveRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)");
}
private void UpdateRequestCache(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
HttpRequest request = application.Request;
HttpResponse response = application.Response;
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
response.Write("
" + time + " + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)");
} }

需要在web.Config加入

<httpModules>

        <add name="Haha" type="EventTest"/>
<httpModules>

任意Page的代码(aspx)

protected void Page_Load(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_Load");
}
protected void TextBox1_TextChanged(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:TextBox1_TextChanged");
Label1.Text = TextBox1.Text;
}
protected void TextBox2_TextChanged(object sender, EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:TextBox2_TextChanged");
Label2.Text = TextBox2.Text;
} private void Page_LoadComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_LoadComplete");
} private void Page_Unload(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
//Response.Write("
" + time + " + Page_Unload");
} private void Page_PreInit(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreInit");
} private void Page_Init(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Session["T"] = "来自Page级:Page_Init" + time;
Response.Write("
" + time + " + Page:Page_Init");
} private void Page_InitComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_InitComplete");
} private void Page_PreLoad(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreLoad");
} private void Page_PreRender(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreRender");
} private void Page_PreRenderComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_PreRenderComplete");
} private void Page_SaveStateComplete(object sender, System.EventArgs e)
{
string time = DateTime.Now.ToString() + ":" + DateTime.Now.Millisecond.ToString("");
Response.Write("
" + time + " + Page:Page_SaveStateComplete");
}

当Page(aspx)页面事件被加载(首次)被加载后的信息

-- ::: + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)
-- ::: + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)
-- ::: + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)
-- ::: + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)
-- ::: + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)
-- ::: + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)
-- ::: + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)
-- ::: + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)
-- ::: + IHttpModule:AcquireRequestState(与当前建立会话时发生) Session未收到!
-- ::: + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生) Session未收到!
-- ::: + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生) Session未收到!
-- ::: + Page:Page_PreInit
-- ::: + Page:Page_Init
-- ::: + Page:Page_InitComplete
-- ::: + Page:Page_PreLoad
-- ::: + Page:Page_Load
-- ::: + Page:Page_LoadComplete
-- ::: + Page:Page_PreRender
-- ::: + Page:Page_PreRenderComplete
-- ::: + Page:Page_SaveStateComplete
Label1(aspx页面的)
Label2(aspx页面的)
-- ::: + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)
-- ::: + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)
-- ::: + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)
-- ::: + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)
-- ::: + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)
-- ::: + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)
-- ::: + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)

注意,想使用Session时,必须在AcquireRequestState,PostAcquireRequestState以及PreRequestHandlerExecute事件中.

页面事件被触发

-- ::: + IHttpModule:BeginRequest(执行Http请求管线链中第一个事件时发生)
-- ::: + IHttpModule:AuthenticateRequest(安全模块建立用户标记时发生)
-- ::: + IHttpModule:PostAuthenticateRequest(已建立用户标识时发生)
-- ::: + IHttpModule:AuthorizeRequest(安全模块验证用户授权时发生)
-- ::: + IHttpModule:PostAuthorizeRequest(当前请求的用户已获得授权时发生)
-- ::: + IHttpModule:ResolveRequestCache(从缓存中发生数据请求时)
-- ::: + IHttpModule:PostResolveRequestCache(跳过当前请求并接受来自缓存数据时发生)
-- ::: + IHttpModule:PostMapRequestHandler(当前请求事件映射到相应事件后发生)
-- ::: + IHttpModule:AcquireRequestState(与当前建立会话时发生) + 来自Page级:Page_Init2009-- :::
-- ::: + IHttpModule:PostAcquireRequestState(已经获得当前请求状态时发生) + 来自Page级:Page_Init2009-- :::
-- ::: + IHttpModule:PreRequestHandlerExecute(页面事件执行前发生) + 来自Page级:Page_Init2009-- :::
-- ::: + Page:Page_PreInit
-- ::: + Page:Page_Init
-- ::: + Page:Page_InitComplete
-- ::: + Page:Page_PreLoad
-- ::: + Page:Page_Load
-- ::: + Page:TextBox1_TextChanged
-- ::: + Page:Page_LoadComplete
-- ::: + Page:Page_PreRender
-- ::: + Page:Page_PreRenderComplete
-- ::: + Page:Page_SaveStateComplete
aspx 页面信息
-- ::: + IHttpModule:PostRequestHandlerExecute(ASP.Net事件执行完毕时发生)
-- ::: + IHttpModule:ReleaseRequestState(事件执行完成之后状态处理)
-- ::: + PostReleaseRequestState(完成请求事件并且请求状态已存储时发生)
-- ::: + IHttpModule:UpdateRequestCache(时间执行完毕,为缓存新的事件准备)
-- ::: + IHttpModule:PostUpdateRequestCache(事件缓存被更新时发生)
-- ::: + IHttpModule:EndRequest(执行Http请求管线链中最后一个事件时发生)
-- ::: + IHttpModule:PreSendRequestHeaders(向客户端发送HttP头之前发生)

以下为摘录,用于加深事件模型的理解

Page 执行中将按照如下顺序激活事件:

Page.PreInit
Page.Init
Page.InitComplite
Page.PreLoad
Page.Load
Page.LoadComplete
Page.PreRender
Page.PreRenderComplete 如果页面从令一个页面继承,如BasePage:System.Web.UI.Page,在BasePage中做了一些扩展,如权限检查,而其他页面从BasePage继承,则BasePage和最终Page的事件激活顺序是: UI.PreInit
Page.PreInit
UI.Init
Page.Init
UI.InitComplite
Page.InitComplite
UI.PreLoad
Page.PreLoad
UI.Load
Page.Load
UI.LoadComplete
Page.LoadComplete
UI.PreRender
Page.PreRender
UI.PreRenderComplete
Page.PreRenderComplete 如果使用了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下面顺序激活: ContentPage.PreInit
Master.Init
ContentPage.Init
ContentPage.InitComplite
ContentPage.PreLoad
ContentPage.Load
Master.Load
ContentPage.LoadComplete
ContentPage.PreRender
Master.PreRender
ContentPage.PreRenderComplete 更进一步,如果ContentPage继承BasePage,那么,各事件的执行顺序将变成: UI.PreInit
ContentPage.PreInit
Master.Init
UI.Init
ContentPage.Init
UI.InitComplite
ContentPage.InitComplite
UI.PreLoad
ContentPage.PreLoad
UI.Load
ContentPage.Load
Master.Load
UI.LoadComplete
ContentPage.LoadComplete
UI.PreRender
ContentPage.PreRender
Master.PreRender
UI.PreRenderComplete
ContentPage.PreRenderComplete
MasterPage UserControlOnTop Page UserControlInPage UserControlOnButtom
  Init      
      Init  
        Init
Init        
    Init    
    Load    
Load        
  Load      
      Lod  
        Load
ControlEvents ControlEvents ControlEvents ControlEvents ControlEvents
    PreRender    
PreRender        
  PreRender      
      PreRender  
        PreRender
  UnLoad      
      UnLoad  
        UnLoad
UnLoad        
    UnLoad    

[Log]ASP.NET之HttpModule 事件执行顺序的更多相关文章

  1. jquery ajax中各个事件执行顺序如下

    $(function(){ setTimeout(function(){ $.ajax({ url:'/php/selectStudent.php', }); },0); $(document).aj ...

  2. ASP.NET Page对象各事件执行顺序(转)

    很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...

  3. ASP.NET MVC自定义Module记录管道事件执行顺序

    1. 在Visual Studio 新建项目,模板为空,下面结构选择MVC. 2. 在项目中新建一个类MyModule,实现IHttpModule接口 namespace SimpleApp.Infr ...

  4. Web高级 Eventloop和事件执行顺序

    1. EventLoop 1.1 调用栈 当一个方法执行时内部调用另外的方法,则会形成调用栈,如图: 1.2 任务队列 JavaScript有一个主线程执行当前任务,主线程的代码同步执行,并把遇到的事 ...

  5. 关于js事件执行顺序

    关于js事件执行顺序小技巧 js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 ...

  6. 关于js事件执行顺序小技巧

    js事件执行顺序是js中一个老生常谈的一个话题, 聊这个话题之前我们先谈谈怎么给页面元素绑定我们需要的事件 1.给页面元素绑定事件 a)直接在元素上面加上需要绑定的事件,如 <button ty ...

  7. jquery ajax 中各个事件执行顺序

    jquery ajax 中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事 ...

  8. Wex5页面事件执行顺序

    wex5 事件执行顺序data组件的onCustomRefresh→ model组件的onLoad→ windowReceiver组件的onReceive

  9. jquery中各个事件执行顺序如下:

    jquery中各个事件执行顺序如下: 1.ajaxStart(全局事件) 2.beforeSend 3.ajaxSend(全局事件) 4.success 5.ajaxSuccess(全局事件) 6.e ...

随机推荐

  1. UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

    lienhua342014-11-09 1 线程属性概括 POSIX 线程的主要属性包括 scope 属性.detach 属性.堆栈地址.堆栈大小.优先级.在头文件 pthread.h 中定义了结构体 ...

  2. git clone Google的代码失败的解决方法

    git clone Google的volley代码遇Q. 想到用代理服务器就可以解决这个问题.Google了一下解决方法,记录下来,分享一下. git config:                 

  3. QT 实现QGraphicsProxyWidget对象可选择或移动(item管理实现)

    上篇博文<QT QGraphicsProxyWidget对象可选择或移动的一些tricks>介绍了实现QT QGraphicsProxyWidget对象可选择或移动的一些小的第三方技巧,但 ...

  4. hibernate 一级缓存,二级缓存,查询缓存

    1.一级缓存是session级的缓存,session结束即事务提交,session关闭,缓存清除.效果不大 get方式:一个session内,第二次查询不连数据库.适用于一级缓存 load方式:懒加载 ...

  5. 使用monkey技术修改python requests模块

    例如请求前和请求后各来一条日志,这样就不需要在自己的每个代码都去加日志了. 其实也可以直接记录'urllib3.connectionpool'  logger name的日志. 修改了requests ...

  6. 安卓webview子线程网络请求,怎么获得结果?

    向webview注入网络上的js,就需要请求js的url.但不允许在主线程直接发http请求,需要开子线程,开了子线程后,子线程就自己运行,主线程也自己运行,但是我的主线程需要子线程的结果才能继续往下 ...

  7. Dubbo -- 系统学习 笔记 -- 示例 -- 集群容错

    Dubbo -- 系统学习 笔记 -- 目录 示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 集群容错 在集群调用失败时,Dubbo提供了多种容错方案,缺省为failover重 ...

  8. mysql的wait_timeout配置(此处处理方法是有问题的,不建议作为操作参考)

    mysql数据库有一个wait_timeout的配置,默认值为28800(即8小时). 在默认配置不改变的情况下,如果连续8小时内都没有访问数据库的操作,再次访问mysql数据库的时候,mysql数据 ...

  9. RF-获取上个月份

    验证1: case ${NowDate} set variable 20170103 ${year} set variable ${NowDate[0:4]} ${month} set variabl ...

  10. java.util.concurrent.RejectedExecutionException 线程池饱和

    java.util.concurrent.RejectedExecutionException at java.util.concurrent.ThreadPoolExecutor$AbortPoli ...