熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

DWR調用客戶端Java代碼的程序實例

2013-11-23 18:44:17  來源: 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>


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25649.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.