欢迎光临郝学武的blog。

dwr快速上手

Posted on 2007-11-22 13:42 陕西BOY 阅读(1797) 评论(5)  编辑  收藏
    DWR是一个开源的类库,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样.
    它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet(小应用程序)中获取数据.另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容.
    DWR采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码.这样WEB开发人员就可以在JavaScript里使用Java代码就像它们是浏览器的本地代码(客户端代码)一样;但是Java代码运行在WEB服务器端而且可以自由访问WEB 服务器的资源.出于安全的理由,WEB开发者必须适当地配置哪些Java类可以安全的被外部使用.下面是我在项目中应用的一个例子:
首先在WEB-INF下建立dwr.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
 <allow>
 <create creator="new" javascript="Test">
      <param name="class" value="com.Test"/>
    </create>
 </allow>
</dwr>
接着在web.xml中加入DWRServlet配置
<servlet>
  <servlet-name>dwr-invoker</servlet-name>
  <servlet-class>org.directwebremoting.servlet.DwrServlet
</servlet-class>
  <init-param>
     <param-name>debug</param-name>
     <param-value>true</param-value>
  </init-param>
</servlet>
 <servlet-mapping>
  <servlet-name>dwr-invoker</servlet-name>
  <url-pattern>
/dwr/*
</url-pattern>  //此处是在项目运行用到dwr后生成脚本的所在的目录,以后用的时候根据相对路径引入。
</servlet-mapping>
接着创建java类
package com;
public class.Test{
 
 public String getArea(String city)
 {
  StringBuffer sb=new StringBuffer("");
  sb.append("<select name='area' style='width:120'>");
  sb.append("<option value='0'>全部</option>");
  if(city.equals("aaa"))
  {
   sb.append("<option value='111>111</option>");
   sb.append("<option value='222>222</option>");
   sb.append("<option value='333>333</option>"); 
  }
  if(city.equals("bbb"))
  { 
   sb.append("<option value='444>444</option>");
   sb.append("<option value='555>555</option>");
  }
     if(city.equals("ccc"))
     {
     sb.append("<option value='666>666</option>");
  sb.append("<option value='777'>777</option>");
     }
      sb.append("</select>");
     return sb.toString();
 }
}
建立test.jsp

<%@ page language="java" contentType="text/html; charset=GBK"%>
    <title>dwr.jsp</title>
   
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <script type='text/javascript' src='dwr/interface/Test.js'></script>
  <script type='text/javascript' src='dwr/engine.js'></script>
  <script type='text/javascript' src='dwr/util.js'></script>
    <script language="javascript">
         function update() {
         var city = document.getElementById("city").value;
         Test.getArea(city, function(data) {
         document.getElementById("demoReply").innerHTML=data;
  });
}

</script>


 
  <body>
   <p>
  Name:
  <select style="width:120" id="city" name="city" onchange="update()">
              <option value="aaa">aaa</option>
       <option value="bbb">bbb</option>
       <option value="ccc">ccc</option>
</select>

<span id="demoReply">
<select style="width:120" id="area" name="area">
       <option value="0">全部</option>
      
</select>
</span>
</p>

  </body>

大家照着上面的例子,把这个项目发布,运行http://localhost:8080/项目名/test.jsp就看到效果了
实现无刷新表单提交。
好的,今天就到这吧。得上班了!

Feedback

# re: dwr快速上手  回复  更多评论   

2007-11-22 17:58 by freeman1984
老乡

# re: dwr快速上手  回复  更多评论   

2007-11-22 21:34 by BeanSoft
支持一下. 曾经在西安上大学.

# re: dwr快速上手  回复  更多评论   

2007-11-30 17:00 by 霜の哀伤
js代码在java写 修改的话 需要重启服务器 是不是很麻烦

# js代码在java写 ....很麻烦[未登录]  回复  更多评论   

2007-12-03 08:56 by 陕西BOY
不会的,正常情况下你应该是用eclipse开发吧,dwr只不过是把你需要的类引入近来,就像你在java类里面import一样,在类里你只要修改后保存就ok了,eclipse会重新给你编译保存的

# re: dwr快速上手  回复  更多评论   

2007-12-13 11:15 by themax
应该使用DWRUTIL这个js赋值,java类里面返回一个map就可以了

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 17, comments - 65, trackbacks - 0, articles - 28

Copyright © 陕西BOY