jsp里引用jar包里的js解决dwr2.0 reverse ajax没启用问题

最近学习dwr的reverse ajax,自己写一个web聊天小程序,基本上和官方的例子差不多,但是,最后却出了个小问题

两个客户端可以聊天,但是别人的聊天信息只有自己向服务器端发送请求后能看到。

初步判断是reverse ajax没管用,查看了jsp页面和web.XML,发现reverse ajax都启用了,

于是用firedebug调试下,出现如下错误:

http://localhost:8080/chat/$%7BdefaultPath%7D/call/plainpoll/ReverseAjax.dwr404错误。

显然是地址不对,地址中本来应该是“dwr”的地方,被替换成了“$%7BdefaultPath%7D”,不知道是怎么回事?

在chrome中也调试了一下,输出错误信息:

POSThttp://localhost:8080/chat/$%7BdefaultPath%7D/call/plainpoll/ReverseAjax.dwr 404 (Not Found)

Reverse Ajaxpoll failed (pollRetries=1): dwr.engine.http.404 : Not Found Giving up.

 

汗,调了一晚上没解决,第二天早上,把官方的例子重新看了一下,一一对比,发现了一个很有趣的地方,在jsp页面中,我引用的engine.js和util.js都是自己在web项目根目录下创建的js包中的,如:

<script type="text/javascript" src="dwr/interface/Chat.js"></script>

<script type="text/javascript"src="js/engine.js"></script>     

<script type="text/javascript" src="js/util.js"></script>


官方例子中jsp页面引用js如下:

<script type="text/javascript" src="dwr/interface/Chat.js"></script>

<script type="text/javascript"src="dwr/engine.js"></script>

<script type="text/javascript" src="dwr/util.js"></script>

官方例子中引用的两个js,我在web项目中根本没找到dwr这个文件夹,也没有两个js,不过,其WEB-INF/lib中引用的dwr.jar中有,在org/ directwebremoting文件夹下

于是我大胆的将自己jsp页面中js引用,也改成了上面官方例子中的引用方式,

结果,嘿嘿,成功了!

至于能引用的原因,貌似是页面引用的js可以是WEB-INF/lib下的jar包中文件,引用的规则是:jar包名称 + “/” + jar包自己classpath,

如引用dwr.jar,而它的engine.js在org/directwebremoting目录下,而org/directwebremoting目录貌似就在classpath中,所以在jsp页面中的引用方式为

src=“dwr/engine.js”。

至于能解决reverse ajax成功运行的原因,貌似是dwr自己加载的问题,汗,很大胆的猜测。

不知是不是上述原因,看到贴的兄弟,如知道原因,告诉一声,谢谢呵!

 



评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值