深入dwr2之二 Dwr2页面请求处理机制分析之util.js

作者:ikon999 发布于:2008年10月17日 15:32

 前一篇分析了dwr2对log的处理,请参见dwr2的日志代码分析;那么下面我们来进一步来分析一下它对页面的请求是如何处理的;这一章主要来讲解一下util.js文件。
 大家都知道util.js文件是包含在dwr.jar文件的org.directwebremoting包里,那么页面是如何访问到它的呢?

1、  首先,我们在某个页面需要使用dwr功能时,需要引入
<script type=”text/javascript” src=”dwr/util.js”></script>
这样对”dwr/util.js”的请求,统一由org.directwebremoting.servlet.DwrServlet的doget()、doPost()方法来处理;

2、  dopost方法调用UrlProcessor的handle()方法处理;
UrlProcessor的handle方法在执行时,先取得请求路径,然后根据请求路径,从urlMapping里取得相应的页面处理handler类,由这个handler类来处理请求和响应,也就是说”dwr/util.js”请求对应一个handler类来处理,”dwr/engine.js”由另外一个handler来处理,关于对engine.js的请求处理,我们在下一章里来讲解;
UrlProcessor的urlMapping类里的key 、value数据,是dwrservlet在container初始化时填入的;DefaultContainer――》setupFinished()――》callInitializingBeans()(这个方法是把container里的实现了InitializingBean接口的bean都执行了afterContainerSetup方法;UrlProcessor是实现了InitializingBean接口,它的afterContainerSetup方法,就是将DefaultContainer初始化时,初始的urlmapping值注入到自己的urlmap里);

3、  dwr/util.js对应的处理handler
处理util.js的handler是:org.directwebremoting.servlet.UtilHandler
在org.directwebremoting.impl.ContainerUtill类里你可以看到,它们之间的对应关系
createUrlMapping(container, “/util.js”, “utilHandlerUrl”, UtilHandler.class);
UtilHandler继承了FileHandler,它寻找到jar下的util.js,然后以文件流的形式读入,最后作为响应输出到页面;通常只读取一次,因为在第一次读取时,它会把文件内容保存到一个map类型的scriptCache里,缓存起来;以后访问的时候就直接从scriptCache里取;
具体详细细节请参见FileHandler的public void handle(HttpServletRequest request, HttpServletResponse response) throws IOException方法;
Util.js作为静态js文件,适合于缓存起来,没必要每次都去从文件里读取,提高效率;

作者:ikon999
来源:北风技术专栏
原文链接:http://column.ibeifeng.com/51564/20081017168.shtml

( 内容完 )

添加收藏到:

您可能还对这些文章感兴趣:

  • 给学习java的应届生找工作的一些建议
  • 认识安全框架acegi(3)
  • 认识安全框架acegi(4)
  • 为什么我们要从现成的游戏引擎学习开始
  • java执行脚本语言javascript
  • 了解CSS的查找匹配原理,让CSS更简洁、高效
  • 改进架构,实现动态数据源,降低java维护
  • 用Flex+Lucene+s2sh开发订餐系统开发第二步:前台主界面设计技术笔记分享
  • Hashtable简介和使用
  • TWaver做的项目-table篇
  • 1条评论, 我来评论

    1. 匿名

      可不可以把那些东西写在一起啊

    小贴士:评论需要管理员审核后才会显示。请不要发布与国家法律相抵触的言论,北风网将保留追究责任的权利。
    类似“顶”、“沙发”、“支持”之类没有营养的文字,对勤劳贡献的作者来说是令人沮丧的反馈信息。
    请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
    如果您发现自己的评论没有被审核或者不见了,请参考以上三条。

    每周之星

    陈臣陈臣

    七年Java和JEE开发经验,JEE应用设计和高级架构师,拥有Sun的多项Java和J2EE方面的技能认证,多年项目经理、技术部经理的管理经验。拥有全面、扎实的Java和JEE理论知识,丰富的JEE应用开发经验。

    更多作者:

  • Adam
  • ikon999
  • jk1234
  • jk2345
  • libin_8745
  • lifengxing
  • taohuang100
  • xingkong
  • 北风
  • 呆子
  • 子晨
  • 小白
  • 张章
  • 张维亮
  • 陈臣
  • 陶宝哥
  • 风风
  • 最新内容

    推荐内容

    标签

    分类