第五部分 包拆解 1)org.directwebremoting包

本文介绍了Direct Web Remoting (DWR) 的核心组件及工作原理,包括AjaxFilter的两种类型接口、Hub的设计用于实现Ajax间的交互、ScriptBuffer的功能与实现方式、ServerContext和WebContext的作用,以及关键文件如auth.js、engine.js的处理流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

AjaxFilter
          2种类型接口
           1,认证,日志,安全,
           2,延迟
            org.directwebremoting.filter.ExtraLatencyAjaxFilter
             一般和AjaxFilterChain合作

 Container 
          容器

 hub   
           集线器,提供多个ajax互相操作接口,使得一个界面中多个ajax可以互相调用,参考openajax联盟制定的规则,dwr已经是联盟的会员之一
           org.directwebremoting.export包会用到,具体细节不清楚

 ScriptBuffer
            采用list储存script,功能类似于StringBuffer

 ServerContext
            服务器端上下文

 WebContext
            浏览器上下文,好像是每个客户一个(红色表示没仔细看)
 auth.js 
            AuthHandler负责读取这个js文件
            细节由CachingFileHandler读取
             readResource()将字节符转换为字符串
             继承JavaScriptHandler接口,专门处理读取js文件

             JavaScriptHandler extends TemplateHandler implements CachingFileHandler implements Handler

             CachingFileHandler
             读取数据文件,根据req的报头属性判断,如果修改过,那么重新下载,否则不用 
             下载读取资源文件,由不同的handle处理,这些handle都继承于JavaScriptHandler
             如:AuthHandler extends JavaScriptHandler
             实际上客户端会将js文件下载到缓存区,这种机制可以使得浏览的时候检查是否js文件内容发生变化。从而重新下载。

 dwr20.dtd  
            org.directwebremoting.impl.DTDEntityResolve处理
 dwr20.xsd 
             实际上没用到
             两种xml框架类型文件,可以被parse识别。

engine.js 
            引擎js,在浏览器缓存中会发现这个文件已经下载到本地。EngineHandler处理,

 messages.properties 
            语言资源文件
            由org.directwebremoting.util.Messages读取
            private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle("org.directwebremoting.messages");

### 关于 DWR 配置文件中的错误处理 针对 `http://directwebremoting.org/schema/dwr20.dtd` 文件中编号为 "1" 的错误,通常这类问题可能源于网络连接、服务器端配置或是本地缓存等问题。对于特定编号的错误,在官方文档或社区讨论中寻找具体描述是最有效的方法。 当遇到类似报错时,建议采取以下措施来排查并解决问题: - **更新 DTD 地址**:如果当前使用的 DTD 路径已废弃或不可访问,则应考虑将其更改为最新的可用地址。例如,可尝试将 `"http://getahead.ltd.uk/dwr/dwr20.dtd"` 修改为 `"http://directwebremoting.org/schema/dwr20.dtd"`[^1]。 - **清理 IDE 缓存**:有时开发环境(IDE)内部保存了旧版本的资源副本,这可能导致加载失败。通过清除 IDE 中的相关缓存可以解决此类问题。对于 Eclipse 或 IntelliJ IDEA 用户来说,可以通过设置选项清空插件管理器内的临时文件夹。 - **验证 XML 文档结构**:确保 web 应用程序中的 XML 文件遵循正确的语法规范,并且引用了有效的命名空间声明。特别是对于 Web 应用程序部署描述符 (`web.xml`) 来说,任何不匹配都可能会引发解析异常[^5]。 然而,直接定位到某个具体的错误号如 “error 1”,除非有详细的日志记录说明该错误的具体含义,否则很难给出针对性解决方案。一般情况下,这些DTD文件本身很少会抛出带有固定编号的错误信息;更多时候是由于外部因素引起的读取失败或其他关联性问题所致。 为了更好地诊断和修复此问题,推荐查看应用程序的日志输出以及浏览器开发者工具中的网络请求情况,从而获取更加详尽的上下文线索以便进一步分析。 ```xml <!-- 示例:如何在 web.xml 中正确引入 DWR --> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://xmlns.jcp.org/xml/ns/javaee https://javaee.github.io/schemas/web-app_4_0.xsd"> <!-- ...其他配置项... --> </web-app> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值