dwr-Ajax开源框架

原创 2016年08月28日 14:10:24


dwr全称Direct Web Remoting原理将java代码转化成js对象,实现跨域访问

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">

<display-name>DWR (Direct Web Remoting)</display-name>
  <description>A Simple Demo DWR</description>

  <listener>
    <listener-class>org.directwebremoting.servlet.DwrListener</listener-class>
  </listener>
  
  <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>
  
    <load-on-startup>1</load-on-startup>
  </servlet>
   
  <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
  </servlet-mapping>    
</web-app>

dwr.xml

<?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>

    <!--
    <filter class="com.example.dwr.monitor.MonitoringAjaxFilter"/>
    <filter class="org.directwebremoting.filter.ExtraLatencyAjaxFilter">
      <param name="delay" value="200"/>
    </filter>
    -->

    <!-- intro - for the test on index.html -->
    <create creator="new">
      <param name="class" value="org.konghao.dwr.model.MyDwr"/>
    </create>
    <convert converter="bean" match="org.konghao.dwr.model.User"/>
    <convert converter="bean" match="org.konghao.dwr.model.Group"/>
    
    <convert match="java.lang.Exception" converter="exception"/>
    <convert converter="bean" match="java.lang.StackTraceElement"/>


  </allow>

</dwr>


package org.konghao.dwr.model;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.directwebremoting.WebContext;
import org.directwebremoting.WebContextFactory;

public class MyDwr {
    public String hello(String world) {
        System.out.println("hello "+world);
        return "hello "+world;
    }
    
    public User load() {
        User u = new User(1,"张三",new Group(1,"财务处"));
        return u;
    }
    
    public List<User> list() {
        List<User> users = new ArrayList<User>();
        users.add(new User(1,"张三",new Group(1,"财务处")));
        users.add(new User(2,"李四",new Group(2,"科技处")));
        users.add(new User(3,"王五",new Group(3,"宣传部")));
        return users;
    }
    
    public void add(User user) {
        System.out.println(user);
    }

    public void deleteUser() {
        throw new MyException("在删除用户的时候有错");
    }
    
    public int add(int a,int b) {
        return a+b;
    }
    
    public String upload(InputStream is,String filename) throws IOException {
        //WebContext可以获取HttpServlet的对象
        WebContext wc = WebContextFactory.get();
        HttpServletRequest req = wc.getHttpServletRequest();
        String realpath = req.getSession().getServletContext().getRealPath("upload");
        String fn = FilenameUtils.getName(filename);
        String filepath = realpath+"/"+fn;
        FileUtils.copyInputStreamToFile(is, new File(filepath));
        return filepath;
    }
}



package org.konghao.dwr.model;

public class MyException extends RuntimeException {

    public MyException() {
        super();
        // TODO Auto-generated constructor stub
    }

    public MyException(String message, Throwable cause) {
        super(message, cause);
        // TODO Auto-generated constructor stub
    }

    public MyException(String message) {
        super(message);
        // TODO Auto-generated constructor stub
    }

    public MyException(Throwable cause) {
        super(cause);
        // TODO Auto-generated constructor stub
    }

}



package org.konghao.dwr.model;

public class User {
    private int id;
    private String username;
    private Group group;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public Group getGroup() {
        return group;
    }
    public void setGroup(Group group) {
        this.group = group;
    }
    public User(int id, String username, Group group) {
        super();
        this.id = id;
        this.username = username;
        this.group = group;
    }
    public User() {
        super();
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", group=" + group
                + "]";
    }
}


package org.konghao.dwr.model;

public class Group {
    private int id;
    private String name;
    
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Group(int id, String name) {
        super();
        this.id = id;
        this.name = name;
    }
    public Group() {
        super();
    }
    @Override
    public String toString() {
        return "Group [id=" + id + ", name=" + name + "]";
    }
    
    
}



无刷新上传文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<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/MyDwr.js"></script>
<script type="text/javascript">
function upload() {
    var file = dwr.util.getValue("myfile");
    alert(file.value);
    alert(file);
    MyDwr.upload(file,file.value,function(data){
        alert(data);
    });
}
</script>
</head>
<body>
    <input type="file" id="myfile"/>    
    <input type="button" value="上传文件" onclick="upload()"/>
</body>
</html>


本文出自 “点滴积累” 博客,请务必保留此出处http://tianxingzhe.blog.51cto.com/3390077/1752923

版权声明:本文为博主原创文章,未经博主允许不得转载。

web中添加ajax框架dwr

DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在...

DWR3.0框架入门(1) —— 实现ajax

框架简介:DWR(Direct Web Remoting)      是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在...

java web开发:Ajax技术(四):DWR——WEB远程调用框架

一 Ajax原理 Ajax通过其核心引擎(XMLHttpRequest)实现了浏览器客户端和服务器的异步通信功能,主要原理参考下图 (0)打开浏览器网页 (1)在浏览过程中触发事件(如:鼠标单击事件...

Ajax框架之DWR学习(文件上传案例)-yellowcong

DWR文件上传起来 还是挺方便的,直接就是咔咔的上传 ,实现了静态的文件上传,老爽了,需要依赖commons-fileupload 这个上传包...

javaweb开发中异步ajax请求之DWR框架详解(通过直接访问java类实现异步请求处理)

DWR是一个开源的服务器端ajax框架,js通过直接调用普通java类中的方法实现服务器端数据处理。原理:框架根据配置在加载页面的时候自动生成ajax代码供前端调用。         该框架只需一个j...

Ajax框架之DWR学习(异常处理案例、Bean传递参数、多个Service)-yellowcong

1、在DWR中处理异常的方式,2、多个Dwr的service调用,3、通过Bean来传递参数

DWR3.0框架入门(1) —— 实现ajax

框架简介:DWR(Direct Web Remoting)      是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在...

Ajax之DWR框架使用小结(1)

DWR,Direct Web Remoting的简称是DWR,它的实现是基于Ajax的,可实现无刷新的效果。这个框架最大的优点就是可以在JS中调用Java方法,传递参数,并且可以得到返回值。它是开源(...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:dwr-Ajax开源框架
举报原因:
原因补充:

(最多只允许输入30个字)