DWR框架的使用
1、DWR框架概述
官方网站:http://getahead.ltd.uk/dwr/index
DWR -- Drect Web Remoting
u 开源,免费的Ajax框架
u 将Java类发布为JavaScript可调用的脚本对象
u 提供JavaScript工具类,简化页面编码
2、为什么要使用DWR
DWR其功能的强大在于它可以用一种前所未有的便利方式将前端页面中的js与后端服务器中的java程序进行直接的转换。比如,它可以将java程序中的某个类在js中生成一个相应的对象,并可以调用发布的方法。
3、在项目中应用DWR
1)准备工作
u 下载dwr.jar, 添加到项目中( http://getahead.org/dwr )
u 创建配置文件:/WEB-INF/dwr.xml
u 在web.xml中配置
<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> </servlet-mapping>
|
2)发布Java类,配置dwr.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd"> <dwr> <allow> <!-- creator="new"表示每次请求都在js中,生成新的对象service --> <create creator="new" javascript="User"> <param name="class" value="biz.UserService"/> <!--表示可提供访问的方法--> <include method="check"/> </create> </allow> </dwr> |
**注意:
u exclude和include
1、exclude可以禁止页面调用后台的某个或某些方法,
具体的写法是在create中加入:<exclude method="createDepartment"/>
method部分写的是这些方法名,如果有多个就写多行exclude;
2、include则规定页面只能调用某些方法
u 查看动态js文件
输入如下网址,http://127.0.0.1:8085/testdwr/dwr/
解析DWR工作原理
3)对应的业务类UserService.java
public class UserService {
/** * 检查用户是否存在 */ public String check(String uname,String pwd) { if(uname.equals("aa") && pwd.equals("123")){ return(uname+"欢迎登录!"); }else{ return("对不起,登录失败!"); } } }
|
4)页面代码
<!--这句话不能少--> <script type='text/javascript' src='/tea_ajax33/dwr/interface/User.js'></script>
<script type='text/javascript' src='/tea_ajax33/dwr/engine.js'></script> <script type='text/javascript' src='/tea_ajax33/dwr/util.js'></script> <script type="text/javascript">
//身份验证函数 function userCheck() { var uname = document.myform.uname.value; var psw = document.myform.psw.value; if(uname=="") { window.alert("用户名不能为空。"); document.myform.uname.focus(); return false; } else { User.check(uname,psw,callBackLogin); } } //data就是函数的返回值 function callBackLogin(data) { alert(data); } </script> |