您的位置:首页 > 职场人生

黑马程序员----使用DWR框架来实现ajax

2011-11-14 16:57 375 查看
----------------------
android培训java培训、期待与您交流!
--------------------

ajax的思想真的很不错,可以在用户不知道的情况下,已经把他输入的内容进行了验证与处理。同时
这个所谓的新技术都是用原来的javascript和java程序实现,可谓是充分挖掘原有技术的潜力,真的让人佩服!!!
另外插一句话:自从学习java开始,总有很多震撼,第一次震撼是java的网络开发,我一直在想:客户的请求很复杂的怎么处理?
原来浏览器给你搞定了:把你的请求封装为一个对象request,服务器把对你的响应也封装为一个对象response!接下来的操作就是
针对这两个对象进行,简洁的让人击节叫好!
而那些发明了浏览器的人真的了不起,而制定这些规范的人更是伟大!
闲话不说,言归正传!
对于DWR,他的核心思想就是把一个java类当做一个javascript,然后就可以在你的网页头部直接调用这个javascript了
真的很简单,很强大,下面是使用DWR的5个步骤:
1.因为dwr针对的是web应用,所以你要建立一个web项目,随便建一个类不妨就叫做LoginAction.java,假设其中有一个isUserExist(String userName)方法
2.导入dwr.jar,现在有更新的版本,我用的是dwr3.0.jar
3.开始编写dwr.xml文件(可以在dwr.jar中找到,用RAR打开jar包,然后搜索dwr.xml,找到之后把它复制到webroot的web-inf下面,就是和web.xml在同一级目录),
在dwr.xml中填上
<allow>

    <create creator="new" javascript="这里你可以随便起个名字,但是记得这个名字是后面页面中要用到的这里不妨就叫做loginJS吧" scope="application">


<param name="class" value="这里是类路径比如com.csdn.LoginAction"/>

如果使用spring容器,那么这里这样写<param name="beanName" value="login"/>,要记着这里的login是你在spring中配置bean的id

          </create>

  </allow>

4.编写web.xml文件,相当于DWR在web容器中进行注册,采取的方式是把DWR当做一个servlet,注册的方式和普通的servlet一样

<!-- xml中的配置 整合DWR的内容,红色的是核心内容 -->

 <servlet>

  <servlet-name>dwrServlet</servlet-name>

  <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>


 <!-- 初始化配置,可以让我们在页面跳水javascript代码,这是最让我流汗的地方(js挑错真的很要命),上午我就中招了,在onsubmit="return : check();"多写了个冒号,结果程序死活不走check()!!!!  -->

 <init-param>

   <param-name>debug</param-name>

   <param-value>true</param-value>

  </init-param>

 </servlet>

 

 <servlet-mapping>

  <servlet-name>dwrServlet</servlet-name>

  <url-pattern>/dwr/*</url-pattern>

 </servlet-mapping>


5.最后一步,在你的html或者jsp页面中,就可以使用这个js脚本了,但是使用之前,要像java一样,先导包,java默认的java.lang.*已经导入了

这里也有相似的一步<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/loginJS.js这就是你在dwr中配置的那个类,现在被DWR当做一个javascript了"></script>


下面我们就可以使用它了

function isUser(){

var userName=$("userName").value;//这里取到用户输入的用户名,注意$()里面的参数是id,不能传错了

loginJS.isUserExist( userName,这里是个回调函数接收返回的信息不妨叫做backInfo吧)//和java中调用自己的方法一样,这里没有自动提示,要小心,不能写错


}

function backInfo(data){

对返回的信息data进行处理

}

写完了,但是感觉写的很罗嗦!!!
没办法,都是新手惹的祸,


补充一点:如果你的java类中有很多方法,有的不想被当做js调用,那么可以使用
<include method="方法名"/>表示你希望被dwr调用的方法
<exclude method=”方法名"/>表示你不想被dwr调用的方法,是不是很方面?
这个功能可以让你想把那个类当做javascript就把那个当做javasc,爽吧!!!
 
-----------------------
android培训java培训、期待与您交流!
--------

--------------详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息