Dwr使用

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访问登陆方法" οnclick="login()"/>
</form>
${error }
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sust2012

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值