DWR简单实例

首先要导入DWR的jar包,同时导入common-logging包。DWR包的下载地址:http://directwebremoting.org/dwr/downloads/index.html  里面也有demo下载,有DWR的其他实例,我这里记录DWR最简单的一种Ajax技术。

导入dwr.jar和common-logging.jar后,在web.xml文件中加入DWRServlet:

<!-- 加入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>  
    </servlet-mapping>

然后写个类,这个用来给js调用:

package com.dwrdemo.pojo;

public class Hello {
    
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    
    //js将调用的方法
    public String sayHello(String name)
    {
        this.name = name;
        
        //System.out.println("DWR DEMO SUCCESS"+name);
        return "Hello "+name +" !";
    }

}

然后新建一个dwr.xml,这个文件和web.xml在同一目录,即WEB-INF下,DWR就这个核心文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
    "-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
    "http://getahead.org/dwr/dwr30.dtd">

<dwr>
    <allow>
        <!-- 参数new表示js每调用一次就创建一个新的对象,Hello是js代码中当做类来调用的名字 -->
        <create creator="new" javascript="Hello">
            <!-- 调用哪个类 -->
            <param name="class" value="com.dwrdemo.pojo.Hello" />
            <!--
            <exclude method="..."/> 禁止访问的方法
            <include method="..."/> 可以访问的方法,默认
            -->
        </create>
    </allow>
</dwr>

jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
    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>DWR Demo</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 src="http://libs.baidu.com/jquery/2.0.0/jquery.js"></script> -->
<!-- 这两个js文件是DWR所必须的,是DWR的引擎和常用函数 -->
<script type=‘text/javascript‘ src=‘<%=basePath %>dwr/engine.js‘></script>
<script type=‘text/javascript‘ src=‘<%=basePath %>dwr/util.js‘></script>
<!--  该js文件是DWR根据java类生成的文件,名字和要dwr.xml里配置的类名一致,用于js访问java类 -->
<script type=‘text/javascript‘ src=‘<%=basePath %>dwr/interface/Hello.js‘></script>
<script type="text/javascript">
function update() {
    
    var name = dwr.util.getValue("demoName");
    //alert("UPDATE"+name);
    Hello.sayHello(name, function(data) {
        dwr.util.setValue("demoReply", data);
    });
}
</script>
</head>

<body>
    <p>
        Name: <input type="text" id="demoName" /> <input value="Send"
            type="button" onclick="update()" /> <br /> Reply: <span
            id="demoReply"></span>
    </p>
</body>
</html>

最后截一下项目的目录结构图:

简单吧。。。

另外,如果项目同时使用了DWR和struts2的话,由于DWR和struts2过滤的都是整个项目,所以为了解决冲突,在struts2的配置文件里配置一常量:

<constant name="struts.action.excludePattern" value="/dwr/*"></constant>

时间: 2024-10-05 14:38:54

DWR简单实例的相关文章

DWR入门实例(二)

DWR(Direct Web Remoting) DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible. Dwr能让在服务器端的java代码和浏览器客户端的javascript代码尽可能简单的相互调用. DWR is Easy Ajax for Java!  官网:http://d

【MySQL】存储过程、游标、循环简单实例

有时候仅凭 sql 语句可能达不到想要的数据操作目的,有可能需要写一些方法体,通过循环判断等操作最终达到目的.那么在数据库里实现这种方法体就需要存储过程了,个人觉得一个带注释的简单实例可以简单粗暴地解决大部分问题,当然要深入学习了解的话还是要看教程文档了,话不多说,上码: [sql] view plain copy create procedure my_procedure() -- 创建存储过程 begin -- 开始存储过程 declare my_id varchar(32); -- 自定义

session 对象的简单实例

一个session对象的简单实例: 1.登录界面:使用简单的html表单提交界面. <%@ page language="java" contentType="text/html; charset=GB18030"    pageEncoding="GB18030"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht

javamail发送邮件的简单实例(转)

javamail发送邮件的简单实例 今天学习了一下JavaMail,javamail发送邮件确实是一个比较麻烦的问题.为了以后使用方便,自己写了段代码,打成jar包,以方便以后使用.呵呵 以下三段代码是我的全部代码,朋友们如果想用,直接复制即可. 第一个类:MailSenderInfo.java package com.util.mail;    /**    * 发送邮件需要使用的基本信息  *author by wangfun http://www.5a520.cn 小说520   */  

AJAX学习整理二之简单实例

做了几个简单的实例,加载txt文本内容.加载xml文件内容,把xml文本内容转换成html表格显示.废话不多说,直接贴代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/html"> <head>     <title>通过ajax获取文本内容</title>     <meta charset="utf-8">     <scr

Spring+Struts 2 简单实例报空指针异常

空指针出现于Action注入位置..如果一般错误请检查配置文件. 我出的错误.在于拷贝了之前做的实例中的lib文件夹到这个工程中. 其中有个包为struts2-convention-plugin-2.3.16.3.jar 造成了包识别异常.出现空指针.有类似经历的可以查看,也给大家提个醒.不要一气呵成的导入所有包.容易出现混乱.也不利于大家清楚的认识包和代码的联系. Spring+Struts 2 简单实例报空指针异常,布布扣,bubuko.com

mvc area区域和异步表单,bootstrap简单实例

码农最怕眼高手低 今天来练习mvc Area技术和bootstrap以及异步表单的C#代码实现. 1.area区域架构对于建立复杂业务逻辑很有帮助,由  AreaRegistration.RegisterAllAreas()方法遍历路由表,获得所有注册的路由.参见 建立类库Common,下设一个文件夹BookStore 在其中建立model和controller.(注意引用System.Web.Mvc这个dll) 项目结构如图: 其中book.cs为model模型 namespace Commo

DataGridView重绘painting简单实例

private void dataGridViewX1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex>=0) { Rectangle newRect = new Rectangle(e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Width - 1, e.CellBounds.

jQuery Datatable 实用简单实例

目标: 使用jQuery Datatable构造数据列表,并且增加或者隐藏相应的列,已达到数据显示要求.同时,jQuery Datatable强大的功能支持:排序,分页,搜索等. Query Datatable能良好支持数据完全加载到本地后构建数据列表,排序.分页.搜索等功能就会自带,不需要我们去关心,在此主要说明通过后台动态的加载数据,已达到在大数据面前提高效率的效果. 1. 通过后台进行分页 2. 通过后台进行排序 3. 通过后台进行搜索 具体使用方法: 1. 首先构建我们需要的数据列表,以