加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Dwr使用

发布时间:2020-12-15 22:09:18 所属栏目:百科 来源:网络整理
导读:1. DWR 1.1 DWR基础 1.1.1 概念 1、 什么是DWR? Direct Web Remote,直接Web远程。是一个Ajax的框架。 2、 作用 使用DWR,可以直接在html网页中调用Java对象的方法(通过JS和Ajax)。 3、 基本原理 主要技术基础是:AJAX+反射。 1) JS通过AJAX发出请求,目标
1. DWR 1.1 DWR基础 1.1.1 概念 1、 什么是DWR? Direct Web Remote,直接Web远程。是一个Ajax的框架。 2、 作用 使用DWR,可以直接在html网页中调用Java对象的方法(通过JS和Ajax)。 3、 基本原理 主要技术基础是:AJAX+反射。 1) JS通过AJAX发出请求,目标地址为“/dwr/*”,被DWRServlet(中央控制器)拦截到; 2) DWRServlet再根据请求地址中的对象名,和dwr.xml配置文件中的对象名相匹配,根据其类名用反射机制来创建对象并调用其目标方法; 3) DWR再将目标方法的返回值以响应的方式,通过AJAX发送到客户端JS中的响应函数(自定义),响应函数再对返回值进行处理。 1.1.2 使用 使用DWR的步骤 1、 下载DWR的包。 Dwr.jar 2、 引用DWR 复制dwr.jar到你的web工程的WEB-INF/lib目录下; 在你的Web.xml文件中添加一个servlet的配置: <servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 在WEB-INF目录下创建dwr的配置文件(dwr.xml) 3、 创建普通Java类和方法 package com.zhoujisong.dwr.biz; public class LoginBiz { public boolean login(String name,String pwd){ System.out.println("----------取得用户名:"+name+"; 和密码:"+pwd); if("zuxia".equals(name) && "123".equals(pwd)){ return true; }else{ return false; } } } 4、 在web-inf目录下,新建dwr.xml文件,内容如下: <dwr> <allow> <create creator="new" javascript="LoginBiz" scope="application"> <param name="class" value="com.zhoujisong.dwr.biz.LoginBiz" /> </create> </allow> </dwr> 5、 创建html文件 引用3个js文件(),并写JS请求函数和响应函数 <script type="text/javascript" src="dwr/engine.js"> </script> <script type="text/javascript" src="dwr/util.js"> </script> <!-- 引用dwr 框架根据它的配置文件动态生成的js --> <script type="text/javascript" src="dwr/interface/LoginBiz.js"></script> <script type="text/javascript" language="javascript"> //请求函数 function login(){ var uname=document.getElementsByName("uname")[0].value; var upass=document.getElementsByName("upass")[0].value; alert(uname+"n"+upass); LoginBiz.login(uname,upass,loginResponse);//调用指定对象的指定方法 } //响应函数 function loginResponse(msg){ alert(msg); } </script> 1.2 DWR高级 1.2.1 在JS和Java之间传递实体对象。 Entity:JS?JAVA Entity:JS?JAVA 1.2.2 在JS和Java之间传递List对象。 List:JS<--JAVA List:JS-->JAVA 1.2.3 在JS和Java之间传递Map对象。 Map:JS<--JAVA Map:JS-->JAVA 1.3 DWR和SSH集成 1.3.1 引用SSH的包和Dwr的包 将SSH的包复制到WEB-INF/lib目录下; 将dwr.jar复制到WEB-INF/lib目录下; 1.3.2 Web.xml文件 <!-- 配置struts2的核心控制器 --> <filter> <filter-name>Struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>Struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 配置Struts2集成Spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/applicationContext.xml</param-value> </context-param> <!-- Dwr的控制器 --> <servlet> <servlet-name>DwrServlet</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>DwrServlet</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> 1.3.3 在WEB-INF/lib目录下新建Dwr.xml文件,内容如下: <dwr> <allow> <create creator="spring" javascript="userBiz"> <param name="beanName" value="userBizImpl"/> </create> <convert converter="bean" match="com.zjs.sshems.entity.Userinfo" /> </allow> <signatures> <![CDATA[ import com.zjs.sshems.entity.Userinfo; ]]> </signatures> </dwr> 1.3.4 Login.jsp <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@ taglib uri="/struts-tags" prefix="s"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> <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/userBiz.js"></script> <script type="text/javascript"> function login(){ var userName = DWRUtil.getValue("user.userName"); var userPwd = DWRUtil.getValue("user.userPwd"); alert(userName +";"+userPwd); userBiz.loginVerify(userName,userPwd,loginResponse); } function loginResponse(userInfo){ alert("取得业务方法的返回值:"+userInfo.userId + ";"+ userInfo.userName +";"+userInfo.userPwd); } </script> </head> <body> <form action="userLogin!login" method="post" > 用户名:<input type="text" name="user.userName"/><br/> 密码:<input type="password" name="user.userPwd"/><br/> <input type="submit" value="登录"/> <input type="button" value="通过Dwr访问登陆方法" onclick="login()"/> </form> ${error } </body> </html>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读