java

位置:IT落伍者 >> java >> 浏览文章

DWR调用客户端Java代码的程序实例


发布日期:2021年03月05日
 
DWR调用客户端Java代码的程序实例

//————发送简单字符串参数返回普通字符串————–

function sendMessage(){

//获取页面中name元素的值

var name = documentgetElementById(name)value;

//调用远程方法cb是回调函数

hellohello(name cb)}

function cb(data){

documentgetElementById(show)innerHTML = data;

}

//———–发送一个JavaBean对象作为参数返回普通字符串————

function sendObject(){

var nameValue = (name)value;

//调用远程方法使用JavaScript对象作为参数

hellosendObj({name:nameValue} cb);

}

//—————调用返回JavaBean方法—————–

function getBean(){ var name = documentgetElementById(name)value;

//调用远程方法beanCb是回调函数

hellogetBean(name beanCb)

}

function beanCb(data){

//服务器方法返回JavaBean对象客户端的data是JavaScript对象

documentgetElementById(show)innerHTML = dataname + 您好您已经学会了使用JavaBean返回值;

}

//—————调用返回getObject方法—————

function getObject(){ var name = documentgetElementById(name)value;

//调用远程方法objCb是回调函数

hellogetObject(name objCb)

}

function objCb(data){

//服务器方法返回非JavaBean式的对象客户端的data是JavaScript对象

documentgetElementById(show)innerHTML = dataname + 是从服务器返回的猫的名字;

}

//—————调用返回集合的方法————–

function getBeanList(){

//调用远程方法listCb返回回调函数

hellogetPersonList(listCb);

}

//远程Java方法返回List对象集合元素是JavaBean式的对象

//此处的data是JavaScript对象数组

function listCb(data){

var result=;

//遍历每个数组元素

for (var i = ; i < datalength ; i ++) {

result += data[i]name + <br />;

}

documentgetElementById(show)innerHTML = result;

}

//—————调用返回数组的方法————–

function getBeanArray(){ hellogetPersonArray(arrayCb);

}

function arrayCb(data){

var result = ;

//下面的data是远程Java方法的返回值

//data是个数组遍历数组

for (var i = ; i < datalength ; i ++) {

//依次访问数组元素数组元素是JSON格式的对象访问其name属性

result += data[i]name + <br />;

}

documentgetElementById(show)innerHTML = result;

}

//—————调用返回Map对象的方法————

function getBeanMap(){

hellogetPersonMap(mapCb);

}

//远程Java方法返回Map对象集合元素是JavaBean式的对象

//此处的data是JavaScript对象且每个属性值都是JavaScript对象

function mapCb(data){

var result=;

for (var key in data) {

result += 键为 + key + 其值为: + data[key]name + <br />;

}

documentgetElementById(show)innerHTML = result;

}

//—————调用发送集合的方法——————

function sendBeanList(){

//创建JavaScript数组

var args = [ {name:客户端aaa} {name:客户端bbb} {name:客户端ccc} ];

//Java方法需要List参数以JavaScript数组作为参数调用远程方法

hellosendList(args sendListCb);

}

function sendListCb(data){

documentgetElementById(show)innerHTML = data;

}

//—————调用发送无泛型限制的集合——————–

function sendBeanListNoGeneric(){

//创建JavaScript数组

var args = [ {name:客户端aaa} {name:客户端bbb} {name:客户端ccc} ];

//Java方法需要List参数以JavaScript数组作为参数调用远程方法

hellosendListNoGeneric(args sendListCb);

}

//—————调用发送Map的方法————————

function sendBeanMap(){

//创建JavaScript对象

var args = { first:{name:客户端aaa} second:{name:客户端bbb} third:{name:客户端ccc}

};

//Java方法需要Map参数以JavaScript对象作为参数调用远程方法

hellosendMap(args sendMapCb);

}

function sendMapCb(data){

documentgetElementById(show)innerHTML = data;

}

webxml文件

<?xml version=″ encoding=GBK?>

<webapp xmlns= xmlns:xsi=instance xsi:schemaLocation= app__xsd version=″> <!– 配置DWR的核心Servlet –> <servlet>

<!– 指定DWR核心Servlet的名字 –>

<servletname>dwrinvoker</servletname>

<!– 指定DWR核心Servlet的实现类 –>

<servletclass>orgdirectwebremotingservletDwrServlet</servletclass>

<!– 指定DWR核心Servlet处于调试状态 –>

<initparam> <paramname>debug</paramname> <paramvalue>true</paramvalue> </initparam> </servlet>

<!– 指定核心Servlet的URL映射 –>

<servletmapping> <servletname>dwrinvoker</servletname>

<!– 指定核心Servlet映射的URL –>

<urlpattern>/dwr/*</urlpattern> </servletmapping></webapp>

客户端处理类

package comlbxdwrsimplefunction;

import javautilList;

import javautilArrayList;

import javautilMap;

import javautilHashMap;

public class HelloDwr {

// 第一个简单的hello方法

public String hello(String name) {

return name + 您好!您已经开始了DWR的学习之旅祝您学得开心…;

}

// 使用一个JavaBean作为参数的方法

public String sendObj(Person p) {

return pgetName() + 您好!您已经学会了使用JavaBean参数…;

}

// 返回JavaBean实例的方法

public Person getBean(String name) {

return new Person(name);

}

// 返回一个普通的Java对象Cat对象为其属性提供setter和getter方法

public Cat getObject(String name) {

return new Cat(服务器端 + name);

}

// 返回一个集合对象

public List<Person> getPersonList() {

List<Person> result = new ArrayList<Person>();

resultadd(new Person(集合aaaa));

resultadd(new Person(集合bbbb));

resultadd(new Person(集合cccc));

return result;

}

// 返回一个数组对象

public Person[] getPersonArray() {

Person[] result = new Person[];

result[] = new Person(数组aaaa);

result[] = new Person(数组bbbb);

result[] = new Person(数组cccc);

return result;

}

// 返回一个Map对象

public Map<String Person> getPersonMap() {

// 创建一个Map对象

Map<String Person> result = new HashMap<String Person>();

// 填充Map对象的内容

resultput(first new Person(Map aaaa));

resultput(second new Person(Map bbb));

resultput(third new Person(Map cccc));

// 返回Map

return result;

}

// 远程方法的参数是集合

public String sendList(List<Person> pl) {

String result = ;

for (Person p : pl) {

result += pgetName() + <br />;

}

return result;

}

// 远程方法的参数是不带泛型的集合

public String sendListNoGeneric(List pl) {

String result = ;

for (Object p : pl) {

result += ((Person) p)getName() + <br />;

}

return result;

}

// 远程方法的参数是集合

public String sendMap(Map<String Person> pmap) {

String result = ;

for (String key : pmapkeySet()) {

result += + key + 其值为 + pmapget(key)getName() + <br />;

}

return result;

}

}

Person类

package comlbxdwrsimplefunction;

public class Person{

//私有属性

private String name;

public Person() {}

//构造器

public Person(String name) {

thisname = name;

}

//name属性的setter方法

public void setName(String name) {

thisname = name;

}

//name属性的getter方法

public String getName() {

return name;

}

}

Cat类

package comlbxdwrsimplefunction;

public class Cat {

//Cat类的私有属性

private String name;

//构造器

public Cat(String name) {

thisname = name;

}

}

dwrxml文件的配置

<?xml version=″ encoding=GBK?>

<!– 指定DWR配置文件的DTD等信息 –>

<!DOCTYPE dwr PUBLIC //GetAhead Limited//DTD Direct Web Remoting //EN ><!– DWR配置文件的根元素是dwr –><dwr> <allow>

<!– 使用new关键资创建一个Java实例 指定创建的JavaScript对象名为hello–>

<create creator=new javascript=hello>

<!– 使用class属性指定创建该Java实例的实现类 –>

<param name=class value=/> </create>

<!– 对leePerson类使用Bean转换器 –>

<convert converter=bean match=comlbxdwrsimplefunctionPerson/>

<!– 对leeCat使用Object转换器 –>

<convert converter=object match=comlbxdwrsimplefunctionCat>

<!– 指定force=true强制使用反射访问私有属性 –> <param name=force value=/> </convert> </allow> <signatures>

<![CDATA[ import javautilList; import comlbxdwrsimplefunctionHelloDwr; import comlbxdwrsimplefunctionPerson; HelloDwrsendListNoGeneric(List<Person>); ]]> </signatures></dwr>

客户端html代码

<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd>

<html xmlns=>

<head>

<title>DWR入门</title>

<meta name=website content= />

<meta httpequiv=ContentType content=text/html; charset=UTF″ />

<!– 导入DWR为hello对象动态生成的JavaScript代码库 –>

<script type=text/javascript src=> </script>

<!– 导入DWR引擎的核心JavaScript代码库 –>

<script type=text/javascript src=></script>

<!– 导入开发者为本应用编写的JavaScript代码库 –>

<script type=text/javascript src=></script>

</head>

<body>

<h> DWR入门 </h>

请输入您的名字

<input id=name name=name type=text /> <br />

<input type=button value=发送简单请求 onclick=sendMessage(); />

<input type=button value=发送对象参数 onclick=sendObject(); />

<input type=button value=返回JavaBean onclick=getBean(); /> <br />

<input type=button value=返回Object onclick=getObject(); />

<input type=button value=返回Bean集合 onclick=getBeanList(); />

<input type=button value=返回Bean数组 onclick=getBeanArray(); /> <br />

<input type=button value=返回Bean Map onclick=getBeanMap(); />

<input type=button value=发送Bean集合 onclick=sendBeanList(); />

<input type=button value=发送不带泛型限制的Bean集合 onclick=sendBeanListNoGeneric(); /> <br />

<input type=button value=发送Bean Map onclick=sendBeanMap(); />

<hr />

下面是服务器的回应: <br />

<div id=show></div>

</body>

</html>

               

上一篇:JSF:初学者进入到Java Web世界的跳板

下一篇:Java Swing中的键盘事件处理