ajax开源项目dwr的使用:
利用DWR可以在客户端利用JavaScript直接调用服务端的Java方法并返回值
给JavaScript就好像直接本地客户端调用一样.
1:下载dwr.jar文件,将其加入到web工程的lib下;
2:在web.xml文件中配置如下信息:
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
其中url-pattern中必须配置为 “/dwr/* ”,不能为工程的名称!!
3:在web.xml同级中增加文件dwr.xml,此文件是javaScript中调用的方法,影射到class类
例如:
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr//dwr20.dtd">
<dwr>
<!-- without allow, DWR isn't allowed to do anything -->
<allow>
<create creator="new" javascript="MyTest" scope="application">
<param name="class" value="com.test.ajax.DWRTest"/>
</create>
<create scope="application" creator="new" javascript="showData">
<param name="class" value="com.test.ajax.HelloName"/>
</create>
</allow>
</dwr>
在allow节点中定义要影射的class类,并且给其class类起一个javaScript的名字,以便在
javaScript中调用。
4:然后定义class文件
package com.test.ajax;
public class DWRTest
{
public DWRTest(){
}
public String getMyName(){
return "hello_ajax";
}
}
/**
*---------------------------------------------------
**/
package com.test.ajax;
public class HelloName
{
private String userName ;
public HelloName(){
}
/**
* @return Returns the userName.
*/
public String getUserName()
{
return "helloTest";
}
/**
* @param userName The userName to set.
*/
public void setUserName(String userName)
{
this.userName = userName;
}
}
5: 这时就可以在html或jsp中调用此class文件了,调用方式如下
一下为测试的 html文件
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR - My First AJAX</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
<script type='text/javascript' src='dwr/interface/showData.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script language="javascript">
var mycall=function callBack(data){
DWRUtil.setValue("demo1",data);
DWRUtil.setValue("demo2","leo_wang");
DWRUtil.setValue("userName",data);
}
function showMyName(){
//MyTest.getMyName(mycall);
showData.getUserName(mycall);
}
function clearName(){
demo1.value="";
demo2.value="";
}
</script>
</head>
<body>
<h1>Ajax Test Page</h1>
<input type="button" value="setMyName" onclick="javascript:showMyName()">
<input type="button" value="Clear" onclick="javascript:clearName()"><br>
<input type="text" id="demo1">
<input type="text" id="demo2">
<input type="test" id="userName">userName
</body></html>
在调用javaScript前要先引入刚才在dwr.xml中定义的javaScript
<script type='text/javascript' src='dwr/interface/MyTest.js'></script>
<script type='text/javascript' src='dwr/interface/showData.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
前面两行是我们刚才定义的javaScript的引入,后面两行是dwr中的本身定义的javaScript
ok(完)
本人的公司在最近的一个金融项目上用到了AXIS2 1.0版,在Tomcat上部署AXIS2,用来发布Web Services
我下载了AXIS2 1.0 的 War发布包 成功的安装了AXIS2并且发布了一些Web Services。
我了解到现在很多同仁都曾经用过或将要用到AXIS2技术开发Web Services,为了给更多的想要了解AXIS2
技术的人提供方便,鉴于个人的能力和知识有限,我制造此贴并热情的邀请使用过AXIS的同仁们能来此发表你们的心得和看法。
以下是我发布一个简单的Web Services的过程跟大家分享:
一 . 从www.Apache.org下载Axis2的War发布包并解压缩到D:/Axis2。
二 . 将整个Axis2目录都复制到 D:/Tomcat 5.5/webapps 目录下。(我的Tomcat装在D盘D:/Tomcat 5.5目录下,以下目录问题我将不多解释,大家应该能看得明白)
三 . 在D:/Tomcat 5.5/conf/Catalina/localhost目录下创建配置文件axis2.xml, 文件内容如下:
<Context path="/axis2" reloadable="true" docBase="D:/Tomcat 5.5/webapps/Axis2/axis2-web" />
四 . 此时已经把Axis2安装到Tomcat上了,下面启动Tomcat在IE中输入
"http://localhost:8080/Axis2"来验证一下!(出来的画面有Axis标题)
五 .下面开使来发布一个简单的Web Services(关键是需要打包成.aar格式)
(1)创建Web服务的工作类MyService.java,例如:
public class MyService{
public void ping(OMElement element){
...... //这是一个用来获取对方地址的Web服务方法
}
public OMElement echo(OMElement element){
...... //这是一个发送请求并返回结果的Web服务方法
}
}
(2)写配置文件services.xml:
<service >
<description>
This is a sample Web Service with two operations, echo and ping.
</description>
<parameter name="ServiceClass" locked="false">AxisDemo.MyService</parameter>
<operation name="echo">
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver"/>
<actionMapping>urn:echo</actionMapping>
</operation>
<operation name="ping">
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver"/>
<actionMapping>urn:ping</actionMapping>
</operation>
</service>
(3)做到这里就可以打包发布了,有人会问,把我这两个文件放到一个自己建的文件夹然后打包吗?我想那样做可能也可以,但是我推荐还是用这样一个包结构比较好(由于图示考到回复文本框中后显示空白我只好口头描述了):
a.先在D:盘中建一个文件夹AxisDemo
b.在AxisDemo下面建一个文件夹META-INF,并把MyService.java放在这里
c.在META-INF下放配置文件services.xml
六 . 打包、发布:
1.在你的Windows开始菜单中点击"运行",输入cmd命令打开命令操作器,在命令操作器中输入cd/命令退到C:> (根目录),再输入D:转到D:> (我们的AxisDemo就在D:盘中,我们要将文件夹中的东东打包)
2.然后输入打包命令:
jar cvf MyService.aar example1/. (千万不要丢了最后那个点啊),此时你会发现D:盘下生成了一个AxisDemo.aar文件 (打包完成)
3.把这个文件Cope到 D:/Tomcat 5.5/webapps/Axis2/WEB-INF/services/ 下面,重启你的Tomcat服务然后在IE中输入"http://localhost:8080/Axis2",点击那个Services链接吧,你就可以看到你刚发布的名为MyService的Web服务了(从此由你提供的Web服务就这样一个一个成功发布)。
DWR 用xom,dom4j传输xml数据的Bug。
在用DWR传输xml文档(document)或者节点(Element)的时候,由于DWR对于Firefox的支持度比IE好的原因,在FireFox下面能正常运行,在IE下会报[Ojbect Error]。我用DWR1.1和DWR M2两个版本都进行了测试,都会报出同样的错误。关于这个错误,我已经和DWR的作者joe walker通过user-list联系过,他表示由于时间的问题,在ie下面的确有一些bug没有来得及处理。
我个人是很希望他能抽出时间来解决这个问题的,因为我现在做的web项目很想利用dwr,也很需要xml的处理,最为关键的是一定要在ie下面使用,我的用户是基本上只使用ie的,他们中有听说过firefox的就算是很不错的了。
[先留个位置在这里,等joe的最后回复收到以后把mail贴出来。]
目前的ajax框架中DWR的文档是做的比较好的,这也有利于广大的开发者。
DWR 官方站点:
http://getahead.ltd.uk/dwr/
DWR User-list(作者会经常对在这里提出的问题进行回答,目前已经有约5000条记录):
http://news.gmane.org/gmane.comp.java.dwr.user
developerWorks 中国网站 Web 服务专区:
http://www-900.ibm.com/developerWorks/cn/webservices/index.shtml
Java Web Services 的中文教程
http://gceclub.sun.com.cn/NASApp/sme/controller/bottomlearning?cat_id=010103
http://www.ws-i.org/
http://www-106.ibm.com/developerworks/webservices/
http://www.w3.org/2002/ws/
http://www.webservices.org/
http://www.webservicesarchitect.com/
http://msdn.microsoft.com/webservices
http://www.soapware.org
http://www.soaprpc.com
http://java.sun.com/webservices
http://www.xmethods.com/
http://hosting.msugs.ch/eyesoft/index.htm
http://www.webservices.org/
http://www.salcentral.com/salnet/webserviceswsdl.asp
http://www.learnxmlws.com/
http://searchwebservices.techtarget.com/
http://forum.uddi-china.org/
http://www.soapwebservices.com/
http://soapagent.com/
http://www.soapclient.com/
http://www.soapware.org/
(如果还有好的网站也请大家补充)