DWR初識

1.import jars
  commons-logging-1.0.4.jar
  dwr.jar
2.web.xml

<!-- DWR配置 -->
    <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>

3.DwrDemo.java

public String getHello(String username){
        System.out.println("DwrDemo getHello()......");
        return "Hello "+username;
    }

UserDao.java

private static Map<Integer, User> dataMap=new HashMap<Integer, User>();

    public boolean save(User user){
        System.out.println("*****************************");
        System.out.println("UserDao save()........");
        System.out.println("保存用戶信息:");
        System.out.println("user.username: "+user.getUsername());
        System.out.println("usr.password: "+user.getPassword());
        dataMap.put(1, user);
        return true;
    }
    public User getUser(String id){
        return (User)dataMap.get(1);
    }

User.java

    public String username;
    public String password;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }

4.dwr.xml

<?xml version="1.0" encoding="UTF-8"?>
<dwr>
    <allow>
        <!--配置的一個演示類,javascript="Demo" 表示可以在頁面中用Demo這個名稱指向DwrDemo這個java類,類中的方法可以在前臺調用 -->
        <!-- creater="new"表示每調用一次時,都需要new一個 -->
        <create creator="new" javascript="Demo">
            <param name="class" value="com.yue.test1.dwr.services.DwrDemo" />
        </create>
        <create creator="new" javascript="MyDate">
            <param name="class" value="java.util.Date" />
        </create>
        <create creator="new" javascript="UserDao">
            <param name="class" value="com.yue.test1.dwr.services.UserDao" />
        </create>     
        <convert converter="bean" match="com.yue.test1.dwr.bean.User" /> 
    </allow>
</dwr>

5.index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    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" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../js/jquery-1.3.2.js"></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/engine.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/util.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/Demo.js'></script>
<script type='text/javascript' src='${pageContext.request.contextPath}/dwr/interface/UserDao.js'></script>

<script type="text/javascript">
    //此函數中可以調用java類的方法,除了java方法本身的參數外,還要將回調函數名作爲參數傳給java方法  
    function sayHello(name) {
        Demo.getHello(name, dwrHandler);
    }
    //這是dwr的一個回調函數,data參數即java方法getHello(String name)的返回值  
    function dwrHandler(data) {
        alert(data);
    }
    function save2(data){
        if(data){
            alert("註冊成功");
        }else{
            alert("註冊失敗");  
        }
    } 

    function onSave(){
        var userMap={};
        userMap.username=form1.username.value;
        userMap.password=form1.password.value;
        UserDao.save(userMap,save2);
    }

    function getUser(data){
        if(data==null){
            alert("找不到用戶");
            return ;
        }
        alert("用戶信息:"+data.username+data.password);
    }
    function findUser(){
        UserDao.getUser("1",getUser);
    }
</script>
<title>DWR Demo</title>
</head>
<body>
<button onclick="sayHello('Yue')">say Hello to Yue</button><br/>
<form name="form1">
用戶名:<input type="text" name="username"/><br/>
密碼:<input type="text" name="password"/><br/>
<input type="submit" name="submitBtn" value="提交" onclick="onSave()"/>
</form>
<button onclick="findUser()">findUser</button><br/>
</body>
</html>

6.other
不要出現Javascript保留關鍵字;和保留關鍵字同名的函數指定被排除。多數Javascript的關鍵字和Java是相同的。所以你不可能有一個方法叫做”try()”
但是該死”delete()”對與Javascript有着特殊意義,而對Java則不是。
Javascript方法重載是不支持的,所以儘量不要再Java中使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章