`
zengbo0710
  • 浏览: 414630 次
社区版块
存档分类
最新评论

网上收集有关DWR资料

阅读更多
在Liferay Portal中使用DWR 
Portal的概念风风火火地炒了好几年,确始终没有大红大紫。眼看着Ajax和Web 2.0朝自己杀来,靠Portal产品过日子的厂商们也终于按耐不住了。老牌开源Portal产品Liferay在其4.0版本中就加入了Ajax的东东,其Portlet的移动、添加和删除就是基于Ajax的。但是这远远是不够的,如果不能在产品级别更好的支持Portlet内部的Ajax,那么传统的Portal很可能会穷途末路,因为完全基于Ajax的PortalFramework已经出现了,如Light。

然而无论Ajax和Web 2.0发展成什么样,有一点它是无法取代Portal的,就是Web系统的组件化乃至服务化。Portal最有价值的地方也就是提出了把Web系统当作组件或服务来集成,这样,无论是遗留下来的Web系统,还是新开发的Web系统,都可以很简单地集成在一块儿,并且,把某个Web系统替换掉也是很简单的。也许不久的将来,Ajax和Web 2.0的阵营中也会出现把Web系统当作组件或服务的技术,但是这其实就是Portal的概念,换汤不换药。

前阵子有机会在Liferay Portal下开发一些Ajax的Portlet,其中用到了DWR,有些tricky的地方,写在这里方便各位,也方便自己。

在Portlet的jsp中引用DWR的js不能简单地直接使用相对路径,比如,如果DWR的js相对jsp放在/dwr目录中的话,如下的引用方式是不对的:

<script type="text/javascript" src="/dwr/engine.js"></script>
<script type="text/javascript" src="/dwr/util.js"></script>
<script type="text/javascript" src="/dwr/interface/YourClass.js"></script>
因为当你把Portlet部署到Liferay的时候,这个相对路径的意义就变了。为了正确引用js,我们必须使用如下的声明方式:

<script type="text/javascript"
    src='<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/dwr/engine.js") %>'>
</script>
<script type="text/javascript"
    src='<%= renderResponse.encodeURL(renderRequest.getContextPath() + "/dwr/util.js") %>'>
</script>
<script type="text/javascript"
    src='<%= renderResponse.encodeURL(renderRequest.getContextPath() +
                 "/dwr/interface/RssReader.js") %>'>
</script>


<script type='text/javascript' src='/dwr/interface/SelectProductTypeSearch.js'></script>
<script type='text/javascript' src='/dwr/interface/SelectSchoolBuildingSearch.js'></script>
<script type='text/javascript' src='/dwr/engine.js'></script>
<script type='text/javascript' src='/dwr/util.js'></script>


其中的renderRequest和renderResponse是Liferay Portal添加到jsp中的隐含变量,负责对Portlet进行渲染。renderRequest.getContextPath()就是当前jsp的路径,加上js相对于jsp的路径,最后要用renderResponse.encodeURL()方法解码一下才能得到正确的路径。

其他方面,DWR的使用方法就和在一般的jsp中的使用方法一样了。从这里也可以看出,不光是使用DWR,所有对js及其他资源的引用都要用这种方法。

 

如何实现DWR的多人同时开发
这几天研究了一下DWR,觉的有了这个东东后,Ajax就非常Easy了,可以说是不用学了,我用的是1.1.1的版本,2.0的版本目前还在开发,具体的网址是http://getahead.ltd.uk/dwr/documentation,里面说的很简单,对Web开发比较熟的化,一天就能全学会,不过要做好的话,还是需要在工作中遇到具体的问题再具体解决,再和Spring和Hibernate一结合的化,感觉能大大加快开发进度,现在主要说说如何配置多个dwr.xm,这样的化就可以多个人同时开发,互不影响,这对公司的版本控制还是比较有益处的.

主要是在web.xml中配置

<servlet>
  <servlet-name>dwr-user-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
    <param-name>config-user</param-name>
    <param-value>WEB-INF/dwr-user.xml</param-value>
  </init-param>
 <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
</servlet>
<servlet>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
  <init-param>
    <param-name>config-admin</param-name>
    <param-value>WEB-INF/dwr-admin.xml</param-value>
  </init-param>
<init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>dwr-admin-invoker</servlet-name>
  <url-pattern>/dwradmin/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
  <servlet-name>dwr-user-invoker</servlet-name>
  <url-pattern>/dwruser/*</url-pattern>
</servlet-mapping>


这样的话在WEB-INF文件夹下就新增两个XML文件,分别为dwr-user.xml,dwr-admin.xml就行了,然后访问:http://localhost:8080/your app/dwruser就能看到它的测试页面了,把它的javascript文件的存放位置拷下来,放到你的JSP或html文件中,就OK了,我觉的这个测试页主要也就是做这个的,它的一些测试方法,我觉的不是很好用.这样就可以同时有多个XML的配置文件,大家同时开发不影响.

最后记住一点,为了搞明白这一点,花了我一下午和晚上的时间,就是在你的web app目录中,不要创建dwruser或dwradmin这样的目录,更不要把Jsp或html放进去,否则的话,不管用绝对还是相对路径都找不到.

 

 <script type='text/javascript' src='/dwr/dwr/interface/JDate.js'></script>
  <script type='text/javascript' src='/dwr/dwr/engine.js'></script>
  <script type='text/javascript' src='/dwr/dwr/util.js'></script>



dwr的页面必须放在根文件么?(20分) 
 
所属论坛:  Web 开发 Ajax 
发表时间:  2006-8-12 11:07:19 
 
 
配置如下:
1.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
</web-app>
2.dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN" "http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="FirstAjax">
<param name="script" value="com.ajax.start.FirstAjax" />
</create>
<create creator="new" javascript="DwrTest">
<param name="class" value="com.ajax.start.DwrTest"/>
<param name="script">

            <![CDATA[

                         com.ajax.start.DwrTest;

                         return DwrTest.getInstance();

           ]]>

</param>
<include method="getMessage"/>
</create>
</allow>
</dwr>
3.index.html

<html>
<head>
<title> now start ajax </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<script type="text/javascript" src="./dwr/interface/FirstAjax.js"></script>
<script type="text/javascript" src="./dwr/engine.js"></script>
<script type="text/javascript" src="./dwr/util.js" ></script>
<script type="text/javascript" src="./dwr/interface/DwrTest.js" ></script>
<script type="text/javascript">

function sendMessage(msg)
{
alert ("123");
var msgvalue = document.getElementById(msg).value;
FirstAjax.getGreetings(loadMessage, msgvalue);
}

function loadMessage(data)
{

document.getElementById("message").innerHTML = data;
}
function getMessage(){
DwrTest.getMessage(load,1);
}
function load(data){
document.getElementById("message").innerHTML=data;
var row = createElement("tr");
var nodetext=create
}
</script>

</head>

<body>
<h2> ajax is coming....</h2>

<table>
<tr>
<td>following...</td>
</tr>
<tr>
<td>
<input type="text" name="msg" size="30">
<input type="button" value="click me" name="tt" onclick="sendMessage('msg')">
<input type="button" value="test1" name="tt" onclick="getMessage()">
</td>
</tr>
<tr>
<td>
<div id="message"></div>
</td>
</tr>
</table>
</body>
</html>

 

目录结构:
webroot/WEB-INF/WEB.XML
webroot/WEB-INF/DWR.XML
webroot/admin/index.html

dwr测试页测试DwrTest方法正常,但在index.html上却提示DwrTest未定义。把index.html放在webroot/目录下能正常显示。求解
 

第1楼   2006-8-12 11:15:00 返回顶部 
 

......
<script type="text/javascript" src="../dwr/interface/FirstAjax.js"></script>
<script type="text/javascript" src="../dwr/engine.js"></script>
<script type="text/javascript" src="../dwr/util.js" ></script>
<script type="text/javascript" src="../dwr/interface/DwrTest.js" ></script>
原来是这样,结帖 
————————————————————————


AJAX,可不是荷兰阿贾克斯足球队,是一种利用XMLHTTP请求的技术,本文介绍DWR实现AJAX的框架 



分享到:
评论

相关推荐

    DWR资料AJAX相关

    我收集的DWR资料,希望对大家有用,整理了很多和DWR使用和原理相关的资料

    dwr官方资料和搜集资料大全

    这个“dwr官方资料和搜集资料大全”包含了丰富的资源,帮助开发者深入理解和使用DWR技术。 1. **DWR基础** DWR的核心功能是通过HTTP协议在客户端JavaScript和服务器端Java之间建立通信桥梁,实现了AJAX...

    dwr与spring整合的相关资料收集 包括一个例子 dwr-comet

    本资料集合将详细介绍如何将DWR与Spring进行整合,以实现更高效、更灵活的后台与前端通信。 DWR是一款开源的JavaScript库,它允许Java方法直接在浏览器中调用,从而实现Ajax(异步JavaScript和XML)功能。DWR提供了...

    DWR-Direct Web Remoting 学习资料

    DWR-Direct Web Remoting 自己收集整理的DWR学习资料,包括了: 1.开发所需的dwr.jar; 2.DWR和Ajax技术的ppt文件; 3.DWR中文文档; 4.网上的一些文章; 5.收集的一些简单实例

    dwr增删改查

    比如,可以使用JavaScript来更新HTML表格的内容,或者使用表单来收集用户的输入,然后通过DWR调用后端方法进行CRUD操作。 7. **异常处理**:DWR提供了错误处理机制,当服务器端方法抛出异常时,可以在JavaScript中...

    Hibernate+Spring+DWR分页(原创)

    DWR则负责在前端收集用户选择的记录,并调用对应的后端批量方法。 六、实践与优化 实际开发中,我们还需要考虑性能优化,如缓存策略、数据库索引设计、减少网络传输的数据量等。此外,为了防止无限滚动带来的性能...

    个人学习收集 DWR中文文档

    这个“个人学习收集 DWR中文文档”压缩包包含了一份详细的DWR中文教程,对于想要深入理解和使用DWR技术的开发者来说是宝贵的资源。 DWR的核心功能在于实现AJAX(Asynchronous JavaScript and XML)的简化,使得动态...

    DWR 收集

    2. **DWR中文文档**(DWR中文文档.pdf):这份文档详细介绍了DWR的使用方法、配置和API,是学习DWR的重要参考资料。 通过深入理解和实践DWR,开发者可以构建更高效、更具交互性的Web应用程序。同时,理解DWR的工作...

    jsp j2ee dwr ajax dwr登陆

    【标题】:“jsp j2ee dwr ajax dwr登陆”这一主题涉及的是在Web开发中使用Java Server Pages (JSP)、Java 2 Platform, Enterprise Edition (J2EE)、Direct Web Remoting (DWR)以及Asynchronous JavaScript and XML ...

    DWR多文件上传.。。。。。。

    在这个示例中,`uploadFiles`函数收集所有选定的文件,并通过DWR调用服务器端的`uploadFiles`方法。文件是以Blob形式传递的,因此服务器端可以接收到原始的文件数据。 为了优化用户体验,可以考虑使用jQuery或类似...

    LogViewer(DWR2)

    **标题解析:** "LogViewer(DWR2)" 指的是一个基于DWR2技术的日志查看器示例项目。DWR (Direct Web Remoting) 是一个开源的JavaScript库,它允许Web应用程序在客户端和服务器之间进行实时通信,无需使用Ajax或页面...

    dwr和javascript的相互应用 ajax的应用 dwr的登陆验证

    **DWR(Direct Web Remoting)**是一种Java技术,它允许Web应用程序在客户端JavaScript和服务器端Java之间进行直接的远程方法调用(RPC)。DWR简化了Ajax(Asynchronous JavaScript and XML)应用的开发,使得前端...

    学习DWR JavaScript函数整理

    ### DWR JavaScript函数整理知识点详解 #### 一、概述 本文档主要收集并整理了一系列JavaScript函数,这些函数主要用于客户端表单验证以及数据合法性检查。通过这些函数,可以有效地提高前端开发效率,确保用户输入...

    dwr入门例子 包含类型转换

    首先,要使用DWR,你需要在项目中引入DWR相关的jar包,包括`dwr.jar`和其他依赖。这些jar包包含了DWR的核心功能和服务。在配置阶段,我们需要在`web.xml`文件中设置DWR的Servlet,以便处理来自客户端的请求。以下是...

    用DWR2.0做的一个Server日志查看器

    DWR (Direct Web Remoting) 是一种开源的Java库,它允许Web应用程序在客户端和服务器之间进行实时的、异步的数据交换,无需刷新整个页面。这个"用DWR2.0做的一个Server日志查看器"是利用DWR 2.0版本的功能,构建的一...

    dwr实现密码找回功能

    最后,在 `dwr.xml` 文件中配置 DWR 的相关设置。 ```xml &lt;!-- dwr.xml 示例 --&gt; ``` #### 六、总结 通过上述步骤,我们已经成功实现了使用 DWR 技术的密码找回功能。该功能不仅增强了用户体验,还为用户...

    DWR将数据库中的信息查询显示到jsp页面,并添加数据

    客户端可以收集用户输入,然后通过DWR调用这个方法: ```javascript function addCoalFormSubmit() { var coalInfo = { name: document.getElementById("coalName").value, quantity: document.getElementById...

    ajax-DWR笔记.doc

    DWR (Direct Web Remoting) 是一种用于在Java后端和JavaScript前端之间进行实时通信的技术。在DWR中,util.js是一个重要的辅助库,提供了多种方便的JavaScript函数,简化了DOM操作和数据处理。以下是对DWR util.js中...

    采用dwr+ajax和struts开发文件上传进度条

    - **DWR配置**:为了实现JavaScript与Java之间的通信,需要配置DWR相关的XML文件。 - `dwr.xml`:定义了哪些Java对象和方法可以被JavaScript访问。 - `UploadMonitor.js`:提供了JavaScript函数,用于调用服务器端...

    dwr使用总结.rar

    这是我花了整整一天时间总结出来的,我也是通过网上的资料然后汇总的,我不敢说这是目前最全的,但是也可以说是相当的好了,里面包含我收集的一些资料和总结,并且包含几乎能用到的所有实例。如果项目中要用到这些的...

Global site tag (gtag.js) - Google Analytics