dwr 簡單例子

無聊在電腦上亂點.點出一個DWR的例子.於是乎開始學習DWR

拿出自己的練習曬下;

在做練習的時候遇到一個問題。jbuilder的web-inf下不生成classes文件夾,也不生成.class文件

經過研究解決辦法爲:右鍵點擊webmodule 選擇properties,再選擇Content,選擇Include All classes and resources 確定。OK,


看配置

web.xml


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>WebModule1</display-name>
<!--插入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>
<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 2.0//EN" "http://www.getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<!-- javascript的對象是jsmethodname,create="new"是DWR自己創建類 -->
<create javascript="jsmethodname" creator="new" scope="application">
<!-- value是java中的類名 -->
<param name="class" value="org.li.dwr.Hello"></param>
<!--<include>標籤指定要公開給javascript的方法。不指定的話就公開所有方法。
  <exclude>標籤指定要防止被訪問的方法。-->
<include method="alertStr"/>
<include method="alertJSStr"/>
<include method="returnAl"/>
<include method="getList"/>
<include method="getObj"/>
</create>

<!--轉換java類型 -->
<convert converter="bean" match="org.li.dwr.InputRecord">
</convert>
</allow>
</dwr>




jsp頁面:



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>DWR</title>
<meta http-equiv="content-type" content="text/html; charset=GBK">
<script type='text/javascript' src='dwr/interface/jsmethodname.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type="text/javascript" src="hello.js"></script>
<!--其中jsmethodname.js是dwr根據配置文件自動生成的,engine.js和util.js是dwr自帶的腳本文件。
-->
</head>
<body>
<input id="jbutton" type="button" value="Hello World" onclick="jbClick()"/>
<div id="jdiv"></div>
<div id="jdiv2"></div>

<div id="uid"></div>
<div id="uname"></div>
<div id="usex"></div>
<div id="uaddress"></div>

</body>
</html>



js :hello.js







/*
function load()//載入的時候調用
{
var jbutton = document.getElementById("jbutton");
jbutton.onclick=function(event)//註冊按鈕點擊事件
{
jbClick();
};
}
*/
function jbClick()//按鈕點擊事件
{
// jshello.getHelloWorld(callback);//沒有參數傳遞,只傳遞迴調函數就行
// jsmethodname.alertStr(callback1);//無參數
var data="js傳入java中的值";
// jsmethodname.alertJSStr(data,callback);//有參數。第一個爲參數,第二個爲回調方法接收返回值
jsmethodname.getList(callbackList); //無參數,返回list
//jsmethodname.getObj(callbackObj);
}
function callback1(msg)//回調函數 ,調用java方法的javascript函數
{
//msg就是java方法的返回值
alert(msg);
}

function callback(msg)//回調函數
{
//這裏可以進行參數處理DWRUtil 的 setValue() 方法會將傳回的 msg 設定給指定 id 的 DOM
DWRUtil.setValue('jdiv',msg);
}
function callbackList(data){

for(var i=0;i<data.length;i++){
DWRUtil.setValue("uid", data[i].id);
DWRUtil.setValue("uname", data[i].name);
DWRUtil.setValue("usex", data[i].sex);
DWRUtil.setValue("uaddress", data[i].address);
}
}


function callbackObj(data){

//知道屬性
DWRUtil.setValue("uid", data.id);
DWRUtil.setValue("uname", data.name);
DWRUtil.setValue("usex", data.sex);
DWRUtil.setValue("uaddress", data.address);

/**
* 不知道屬性
for(var property in data){
  //alert("property:"+property);
  alert(property+":"+data[property]);
  }
*/

}



java類

Hello.java







package org.li.dwr;

import java.util.Date;
import java.util.ArrayList;
import java.util.List;

public class Hello {
public String getHelloWorld() {
return "現在的時間爲:" + new Date();
}

public String alertStr() {
return "DWR框架:無參數";
}

public String alertJSStr(String jsvalue) {
return "DWR框架:" + jsvalue;
}

public ArrayList returnAl() {
ArrayList al = new ArrayList();
al.set(1, "a");
al.set(2, "b");
al.set(3, "c");
al.set(4, "d");
return al;
}

public List getList() {
List list = new ArrayList();
for(int i=0;i<5;i++){
InputRecord ir = new InputRecord();
ir.setId(1);
ir.setName("依韻");
ir.setSex("男");
ir.setAddress("北京市");
list.add(ir);
}
return list;
}

public InputRecord getObj() {
InputRecord ir = new InputRecord();
ir.setId(2);
ir.setName("白色黃昏");
ir.setSex("女");
ir.setAddress("河南");
return ir;
}


}



InputRecord.java




package org.li.dwr;

public class InputRecord {
private int id;
private String name;
private String sex;
private String address;
public String getAddress() {
return address;
}

public int getId() {
return id;
}

public String getName() {
return name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public void setName(String name) {
this.name = name;
}

public void setAddress(String address) {
this.address = address;
}

public void setId(int id) {
this.id = id;
}
}


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