您的位置:程序门 -> java -> web 开发



ajax怎么显示数据库的数据在jsp页面上?(ajax那里不能发表)


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


ajax怎么显示数据库的数据在jsp页面上?(ajax那里不能发表)[已结贴,结贴人:sessionfactory]
发表于:2007-08-10 15:57:58 楼主
请各位高手帮帮忙,找了好长时间了,大部分是关于.net的,而关于java的,
又没讲清楚,如果谁知道怎么做,麻烦把代码贴出来,小弟在这里先谢啦!
发表于:2007-08-10 16:05:301楼 得分:10
//下面是一个用ajax实现下拉列表的例子,楼主可以试试

import   java.io.printwriter;

import   javax.servlet.http.httpservletrequest;
import   javax.servlet.http.httpservletresponse;

import   org.apache.commons.logging.log;
import   org.apache.commons.logging.logfactory;

import   org.apache.struts.action.action;
import   org.apache.struts.action.actionform;
import   org.apache.struts.action.actionforward;
import   org.apache.struts.action.actionmapping;

public   abstract   class   baseajaxaction   extends   action   {

    public   final   actionforward   EXECute(actionmapping   mapping,   actionform   form,
                                                                          httpservletrequest   request,
                                                                          httpservletresponse   response)
            throws   exception   {

        string   xml   =   null;
        try   {
            xml   =   getxmlcontent(mapping,   form,   request,   response);
        }
        catch   (exception   ex)   {
            response.senderror(httpservletresponse.sc_internal_server_error,
                                                  "can   not   create   response ");
            return   null;
        }

        response.setcontenttype( "text/xml;   charset=utf-8 ");
        response.setheader( "cache-control ",   "no-cache ");
        printwriter   pw   =   response.getwriter();
        pw.write(xml);
        pw.close();

        return   null;
    }

    public   abstract   string   getxmlcontent(actionmapping   mapping,
                                                                              actionform   form,
                                                                              httpservletrequest   request,
                                                                              httpservletresponse   response)
            throws   exception;
}


import   java.util.arraylist;

import   javax.servlet.http.httpservletrequest;
import   javax.servlet.http.httpservletresponse;

import   org.apache.struts.action.actionform;
import   org.apache.struts.action.actionmapping;

public   class   dictionaryaction   extends   baseajaxaction   {

  public   string   getxmlcontent(actionmapping   mapping,   actionform   form,
      httpservletrequest   request,   httpservletresponse   response)
      throws   exception   {

    string   responseid   =   request.getparameter( "responseid ");
    string   tablename   =   request.getparameter( "tablename ");
    string   columnname   =   request.getparameter( "columnname ");

    string   selectcolumnvalue   =   request.getparameter( "selectcolumnvalue ");

    arraylist   result   =   new   arraylist();
    //here   get   data   from   db
    return   new   ajaxxmlbuilder(responseid).additems(result,   "label ",   "value ").tostring();
  }

  public   static   void   main(string   args[])   throws   exception   {
      dictionaryaction   ac   =   new   dictionaryaction();
      ac.EXECute(null,   null,   null,   null);
  }
}

import   java.util.collection;
import   java.util.list;
import   java.util.arraylist;
import   java.util.iterator;
import   java.lang.reflect.invocationtargetexception;

import   org.apache.commons.beanutils.beanutils;
import   org.apache.struts.util.labelvaluebean;

public   class   ajaxxmlbuilder   {

  private   string   encoding   =   "utf-8 ";
  private   list   items   =   new   arraylist();
  private   string   responseid;

  public   ajaxxmlbuilder()   {
  }

  public   ajaxxmlbuilder(string   responseid)   {
    this.responseid   =   responseid;
  }

  public   string   getresponseid()   {
    return   responseid;
  }

  public   void   setresponseid(string   responseid)   {
    this.responseid   =   responseid;
  }

  public   string   getencoding()   {
    return   encoding;
  }

  public   void   setencoding(string   encoding)   {
    this.encoding   =   encoding;
  }

  /**
    *   add   item   to   xml.
    *
    *   @param   name
    *                         the   name   of   the   item
    *   @param   value
    *                         the   value   of   the   item
    *   @return
    */
  public   ajaxxmlbuilder   additem(string   name,   string   value)   {
    items.add(new   labelvaluebean(name,   value));
    return   this;
  }

  /**
    *   add   item   wrapped   with   inside   a   cdata   element.
    *
    *   @param   name
    *                         the   name   of   the   item
    *   @param   value
    *                         the   value   of   the   item
    *   @return
    */
  public   ajaxxmlbuilder   additemascdata(string   name,   string   value)   {
    items.add(new   labelvaluebean(name,   value));
    return   this;
  }

  /**
    *   add   items   from   a   collection.
    *
    *   @param   collection
    *   @param   nameproperty
    *   @param   valueproperty
    *   @return
    *   @throws   illegalaccessexception
    *   @throws   invocationtargetexception
    *   @throws   nosuchmethodexception
    */
  public   ajaxxmlbuilder   additems(collection   collection,   string   nameproperty,
      string   valueproperty)   throws   illegalaccessexception,
      invocationtargetexception,   nosuchmethodexception   {
    return   additems2(collection,   nameproperty,   valueproperty);
  }

  /**
    *   add   items   from   a   collection.
    *
    *   @param   collection
    *   @param   nameproperty
    *   @param   valueproperty
    *   @return
    *   @throws   illegalaccessexception
    *   @throws   invocationtargetexception
    *   @throws   nosuchmethodexception
    */
  public   ajaxxmlbuilder   additems2(collection   collection,   string   nameproperty,
      string   valueproperty)
      throws   illegalaccessexception,   invocationtargetexception,
      nosuchmethodexception   {
    for   (iterator   iter   =   collection.iterator();   iter.hasnext();)   {
      object   element   =   (object)   iter.next();
      string   name   =   beanutils.getproperty(element,   nameproperty);
      string   value   =   beanutils.getproperty(element,   valueproperty);
      items.add(new   labelvaluebean(name,   value));
    }
    return   this;
  }

  /**
    *   add   items   from   a   collection   as   cdata   element.
    *
    *   @param   collection
    *   @param   nameproperty
    *   @param   valueproperty
    *   @return
    *   @throws   illegalaccessexception
    *   @throws   invocationtargetexception
    *   @throws   nosuchmethodexception
    */
  public   ajaxxmlbuilder   additemsascdata(collection   collection,
      string   nameproperty,   string   valueproperty)
      throws   illegalaccessexception,   invocationtargetexception,
      nosuchmethodexception   {
    return   additems2(collection,   nameproperty,   valueproperty);
  }

  /**
    *   @see   java.lang.object#tostring()
    */
  public   string   tostring()   {
    stringbuffer   xml   =   new   stringbuffer().append( " <?xml   version=\ "1.0\ " ");
    if   (encoding   !=   null)   {
      xml.append( "   encoding=\ " ");
      xml.append(encoding);
      xml.append( "\ " ");
    }
    xml.append( "   ?> ");

    xml.append( " <ajax-response> ");
    xml.append( " <response   type=\ "object\ "   id=\ " "+responseid+ "\ "> ");
    for   (iterator   iter   =   items.iterator();   iter.hasnext();)   {
      labelvaluebean   item   =   (labelvaluebean)   iter.next();
      xml.append( " <item> ");
      xml.append( " <name> ");
//       if   (item.isascdata())   {
//         xml.append( " <![cdata[ ");
//       }
      xml.append(item.getlabel());
//       if   (item.isascdata())   {
//         xml.append( "]]> ");
//       }
      xml.append( " </name> ");
      xml.append( " <value> ");
//       if   (item.isascdata())   {
//         xml.append( " <![cdata[ ");
//       }
      xml.append(item.getvalue());
//       if   (item.isascdata())   {
//         xml.append( "]]> ");
//       }
      xml.append( " </value> ");
      xml.append( " </item> ");
    }
    xml.append( " </response> ");
    xml.append( " </ajax-response> ");

    return   xml.tostring();

  }
}
发表于:2007-08-10 16:06:532楼 得分:0
客户端用的是rico
发表于:2007-08-10 16:26:473楼 得分:10
来晚了,顶
客户端通过xmlhttp.responsexml进行解析
发表于:2007-08-10 16:29:514楼 得分:10
简单的方法:
xmlhttprequest即可,不需要什么复杂的框架
发表于:2007-08-10 16:54:075楼 得分:20
从数据库得到的数据会写在xml中,然后返回给前台。通过xmlhttp.responsexml将数据进行解析。得到解析的结果放在页面中显示。
多看看ajax,我想楼主还没完全理解ajax
发表于:2007-08-10 18:23:496楼 得分:0
首先谢谢大家的帮忙,按照大家的意思,我试了下
jsp:
       
<script   type= "text/javascript ">
      var   xmlhttpreq;   //创建xmlhttprequest对象              

            function   createxmlhttprequest()   {
                              if   (window.activexobject)   {
                                xmlhttpreq   =   new   activexobject( "microsoft.xmlhttp ");
                        }  
                        else   if   (window.xmlhttprequest)   {
                                xmlhttpreq   =   new   xmlhttprequest();                                
                        }
                                }

              function   sendrequest()   {
             
                            createxmlhttprequest();
                            var   url   =   "track.do?method=init ";      
                            xmlhttpreq.open( "get ",   url,   true);
                            xmlhttpreq.onreadystatechange   =   processresponse;
                            xmlhttpreq.send(null);    
                        }

              function   processresponse()   {
             
                        if   (xmlhttpreq.readystate   ==   4)   {   //   判断对象状态
                                  if   (xmlhttpreq.status   ==   200)   {   //   信息已经成功返回,开始处理信息
                                              alert( "123 "+xmlhttpreq.responsexml);
                                                settimeout( "sendrequest() ",4000);
                                          }      
                                }
                  }
                                   
  </script>

    </head>
   
    <body       bgcolor= "white "   background= "image/right.gif ">
              <input   type= "button "   value= "开始接收 "   onclick= "sendrequest() ">  

</body>        


------------------------------------------------------------------------------------
action:
trackshow   show=new   trackshow(vo.getworktype(),vo.getid(),vo.getusername());
result_list.add(show);
response.setcontenttype( "text/xml ");
printwriter   out=response.getwriter();
out.println(parsetoxml(result_list));  
}          

public   string   parsetoxml(list   list){
stringbuffer   sb=new   stringbuffer();
sb.append( " <?xml   version=\ "1.0\ "   encoding=\ "utf-8\ "?> ");
sb.append( " <track> ");
for(int   i=0;i <list.size();i++){
trackshow   show=(trackshow)list.get(i);
 
        sb.append( " <track> ");
        sb.append( " <cardid> "+show.getcardid()+ " </cardid> ");
        sb.append( " <antenna> "+show.getantenna()+ " </antenna> ");
        sb.append( " </track> ");
}
sb.append( " </track> ");
return   sb.tostring();
}

但是页面上就只是弹出了一个对话框,上面显示123,却没有显示我想要的数据
请问这是为什么?(show.getcardid()和getantenna能输出数据)
发表于:2007-08-10 18:28:577楼 得分:10
用ajax调用了controller   以后,会根据条件把你所要的数据写成xml   ,通过xmlhttp.responsexml   就能得到你所要的了
发表于:2007-08-10 18:40:568楼 得分:0
用ajaxanywhere啊
发表于:2007-08-10 18:44:379楼 得分:0
楼上的能说说,我什么地方的错了吗?
发表于:2007-08-10 18:55:3710楼 得分:40
xmlhttp.responsexml是一个document对象,要调用它的一些方法才能获得数据,如
var   xmldoc   =   xmlhttp.responsexml;
//得到父节点
var   org   =   xmldoc.getelementsbytagname( "parentnode ")[0];
//父节点组织机构代码
var   orgcode   =   org.childnodes[0].firstchild.nodevalue;
//父节点的名字
var   name   =   org.childnodes[1].firstchild.nodevalue;
发表于:2007-08-10 19:29:1911楼 得分:0
帮顶
发表于:2007-08-10 23:29:5412楼 得分:0
收藏了
发表于:2007-08-11 16:13:5313楼 得分:0
按照大家的意思我改了改,还是不行,一点开始按钮,过了会页面就死了,
并且也也没有弹出对话框   “4”,以下是我的代码,麻烦高手给看看
jsp:
       
<script   type= "text/javascript ">
      var   xmlhttpreq;   //创建xmlhttprequest对象              

            function   createxmlhttprequest()   {
                              if   (window.activexobject)   {
                                xmlhttpreq   =   new   activexobject( "microsoft.xmlhttp ");
                        }  
                        else   if   (window.xmlhttprequest)   {
                                xmlhttpreq   =   new   xmlhttprequest();                                
                        }
                                }

              //发送请求函数

              function   sendrequest()   {
                            createxmlhttprequest();
                            var   url   =   "track.do?method=init ";      
                            xmlhttpreq.open( "get ",   url,   true);
                            xmlhttpreq.onreadystatechange   =   processresponse;//指定响应函数
                            xmlhttpreq.send(null);     //   发送请求
                        }

              //   处理返回信息函数

              function   processresponse()   {
                        if   (xmlhttpreq.readystate   ==   4)   {   //   判断对象状态
                                  alert( "4 ");
                                  if   (xmlhttpreq.status   ==   200)   {   //   信息已经成功返回,开始处理信息
                                                alert( "200 ");
                                                showpage();
                                                settimeout( "sendrequest() ",4000);
                                          }
                                    }
                    }
                  function   showpage(){
                              var   xmldoc   =   xmlhttpreq.responsexml;
                      var   tracks   =   xmldoc.getelementsbytagname( "track ");
                      var   result= " <table   border=1> <tr> <td> 卡   号 </td> <td> 天   线 </td> </tr> ";
                      for(var   i=0;i <tracks.length;i++){
                              result   += " <tr> ";
                              var   track=tracks[i];
                              result     += " <td> "+track.getelementsbytagname( "cardid ")[0].firstchild.nodevalue+ " </td> "
                              result     += " <td> "+track.getelementsbytagname( "antenna ")[0].firstchild.nodevalue+ " </td> "
                              result   += " </tr> ";
                      }
                          result   += " </table> ";
                          document.getelementbyid( "data ").innerhtml=result;
                  }
       
                                   
  </script>

    </head>
   
    <body       bgcolor= "white "   background= "image/right.gif ">
                <input   type= "button "   value= "开始接收 "   onclick= "sendrequest() ">  
              <div   id= "data "> </div>
</body>  


=================================================================================
action:
result_list.add(show);  
   
}            
}  

//     request.setattribute( "trackshow ",   result_list);
//   return   mapping.findforward( "trackshow ");      
}      
}  
response.setcontenttype( "text/xml ");
printwriter   out=response.getwriter();
out.println(parsetoxml(result_list));  
}catch(exception   e){
e.printstacktrace();
}
return   null;
  }

 

public   string   parsetoxml(list   list){
stringbuffer   sb=new   stringbuffer();
sb.append( " <?xml   version=\ "1.0\ "   encoding=\ "utf-8\ "?> ");
sb.append( " <tracks> ");
for(int   i=0;i <list.size();i++){
trackshow   show=(trackshow)list.get(i);
        sb.append( " <track> ");
        sb.append( " <cardid> "+show.getcardid()+ " </cardid> ");
        sb.append( " <antenna> "+show.getantenna()+ " </antenna> ");
        sb.append( " </track> ");
}
sb.append( " </tracks> ");
return   sb.tostring();
}
}
发表于:2007-08-12 13:51:2014楼 得分:0
在后台打个断点调试一下,感觉var   url   =   "track.do?method=init ";   这个地方有点问题


快速检索

最新资讯
热门点击