前台页面通过JS调用Servlet访问到后台类


分类: AJAX知识   916人阅读  评论(1)  收藏  举报

1.在页面中导入必要的JS

  <script src="<c:url value="/resources/js/buffalo.js"/>" type="text/javascript"></script>
  <script src="<c:url value="/resources/js/xmlcallback.js"/>" type="text/javascript"></script>

 

2. buffalo.js 可以上网下载

    xmlcallback.js如下:

   

[java]  view plain copy
  1. function getDomDocumentPrefix() {  
  2.     if (getDomDocumentPrefix.prefix)  
  3.         return getDomDocumentPrefix.prefix;  
  4.   
  5.     var prefixes = ["MSXML2""Microsoft""MSXML""MSXML3"];  
  6.     var o;  
  7.     for (var i = 0; i < prefixes.length; i++) {  
  8.         try {  
  9.             // try to create the objects  
  10.             o = new ActiveXObject(prefixes[i] + ".DomDocument");  
  11.             return getDomDocumentPrefix.prefix = prefixes[i];  
  12.         }  
  13.         catch (ex) {};  
  14.     }  
  15.   
  16.     throw new Error("Could not find an installed XML parser");  
  17. }  
  18.   
  19. function getXmlHttpPrefix() {  
  20.     if (getXmlHttpPrefix.prefix)  
  21.         return getXmlHttpPrefix.prefix;  
  22.   
  23.     var prefixes = ["MSXML2""Microsoft""MSXML""MSXML3"];  
  24.     var o;  
  25.     for (var i = 0; i < prefixes.length; i++) {  
  26.         try {  
  27.             // try to create the objects  
  28.             o = new ActiveXObject(prefixes[i] + ".XmlHttp");  
  29.             return getXmlHttpPrefix.prefix = prefixes[i];  
  30.         }  
  31.         catch (ex) {};  
  32.     }  
  33.   
  34.     throw new Error("Could not find an installed XMLHttp object");  
  35. }  
  36.   
  37. function XmlHttp() {}  
  38.   
  39. XmlHttp.httpPool = [];  
  40. XmlHttp.httpMaxSize = 3;  
  41.   
  42. XmlHttp.poolGetHttp = function() {  
  43.       if (XmlHttp.httpPool.length > 0) {  
  44.           return XmlHttp.httpPool.pop();  
  45.       }  
  46.       return XmlHttp.create();  
  47. }  
  48.   
  49. XmlHttp.poolReturnHttp = function(http) {  
  50.       if (XmlHttp.httpPool.size > XmlHttp.httpMaxSize) {  
  51.           delete http;  
  52.       }  
  53.       XmlHttp.httpPool.push(http);  
  54. }  
  55.   
  56. XmlHttp.create = function () {  
  57.     try {  
  58.         // NS & MOZ  
  59.         if (window.XMLHttpRequest) {  
  60.             var req = new XMLHttpRequest();  
  61.   
  62.             // some versions of Moz do not support the readyState property  
  63.             // and the onreadystate event so we patch it!  
  64.             if (req.readyState == null) {  
  65.                 req.readyState = 1;  
  66.                 req.addEventListener("load", function () {  
  67.                     req.readyState = 4;  
  68.                     if (typeof req.onreadystatechange == "function")  
  69.                         req.onreadystatechange();  
  70.                 }, false);  
  71.             }  
  72.   
  73.             return req;  
  74.         }  
  75.         // IE  
  76.         if (window.ActiveXObject) {  
  77.             return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");  
  78.         }  
  79.     }  
  80.     catch (ex) {}  
  81.     // Fail  
  82.     throw new Error("Your browser does not support XmlHttp objects");  
  83. };  
  84.   
  85. function XmlDocument() {}  
  86. XmlDocument.create = function () {  
  87.     try {  
  88.         if (document.implementation && document.implementation.createDocument) {  
  89.             var doc = document.implementation.createDocument(""""null);  
  90.             if (doc.readyState == null) {  
  91.                 doc.readyState = 1;  
  92.                 doc.addEventListener("load", function () {  
  93.                     doc.readyState = 4;  
  94.                     if (typeof doc.onreadystatechange == "function")  
  95.                         doc.onreadystatechange();  
  96.                 }, false);  
  97.             }  
  98.   
  99.             return doc;  
  100.         }  
  101.         if (window.ActiveXObject)  
  102.             return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");  
  103.     }  
  104.     catch (ex) {}  
  105.     throw new Error("Your browser does not support XmlDocument objects");  
  106. };  
  107.   
  108. if (window.DOMParser &&  
  109.     window.XMLSerializer &&  
  110.     window.Node && Node.prototype && Node.prototype.__defineGetter__) {  
  111.   
  112.     Document.prototype.loadXML = function (s) {  
  113.   
  114.         var doc2 = (new DOMParser()).parseFromString(s, "text/xml");  
  115.   
  116.         while (this.hasChildNodes())  
  117.             this.removeChild(this.lastChild);  
  118.         for (var i = 0; i < doc2.childNodes.length; i++) {  
  119.             this.appendChild(this.importNode(doc2.childNodes[i], true));  
  120.         }  
  121.     };  
  122.   
  123.     Document.prototype.__defineGetter__("xml", function () {  
  124.         return (new XMLSerializer()).serializeToString(this);  
  125.     });  
  126. }  
  127.   
  128. /* 
  129.  * xmlHttp Pool 
  130.  * 
  131.  * userage: var xmlhttpObj = XmlHttpPool.pick() 
  132.  */  
  133. var XmlHttpPoolArr = new Array();  
  134. var XmlHttpPoolSize = 100;  
  135. var XHPCurrentAvailableID = 0;  
  136.   
  137. function XmlHttpPool() {}  
  138. XmlHttpPool.pick = function() {  
  139.     var pos = XHPCurrentAvailableID;  
  140.     XmlHttpPoolArr[pos] =  XmlHttp.create();  
  141.   
  142.     XHPCurrentAvailableID >= (XmlHttpPoolSize-1) ? 0 : XHPCurrentAvailableID++  
  143.   
  144.     return XmlHttpPoolArr[pos];  
  145. }  
  146.   
  147. function rpcCall(url, method, data, callback, asyn) {  
  148.     var xmlhttp = XmlHttp.create();  
  149.     xmlhttp.open(method, url, asyn);  
  150.     xmlhttp.send(data);  
  151.     if (!asyn) { // if not asyn  
  152.         callback(xmlhttp.responseText);  
  153.     } else {  
  154.         xmlhttp.onreadystatechange = function() {  
  155.             if (xmlhttp.readyState == 4) {  
  156.                 callback(xmlhttp.responseText);  
  157.             }  
  158.         }  
  159.     }  
  160. }  

 

 

3. 调用的Servlet如下,同时,需要在web.xml中配置对应的参数

        <!-- 这边是对ajax对应的服务service进行的配置 -->
    <servlet>
    <servlet-name>ajax</servlet-name>
    <servlet-class>com.longtop.common.BurlapServlet</servlet-class>
    </servlet>
    <!-- 这边是对ajax对应的服务service进行的配置 -->
    <servlet-mapping>
    <servlet-name>ajax</servlet-name>
    <url-pattern>/ajax</url-pattern>
    </servlet-mapping>   

 

   

[java]  view plain copy
  1. package com.longtop.common;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.InputStream;  
  5. import java.io.OutputStream;  
  6.   
  7. import javax.servlet.ServletException;  
  8. import javax.servlet.ServletRequest;  
  9. import javax.servlet.ServletResponse;  
  10. import javax.servlet.http.HttpServlet;  
  11.   
  12. import com.caucho.burlap.io.BurlapInput;  
  13. import com.caucho.burlap.io.BurlapOutput;  
  14. import com.caucho.burlap.server.BurlapSkeleton;  
  15.   
  16. /** 
  17.  * 通过 ajax,在页面回显数据 
  18.  */  
  19. public class BurlapServlet extends HttpServlet{  
  20.   
  21.     private static final long serialVersionUID = -5162149775110419399L;  
  22.   
  23.     public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {  
  24.           
  25.         //防止   websphere 5.1  下乱码,对jboss没影响  
  26.         response.setContentType("text/xml; charset=UTF-8");  
  27.    
  28.         String serviceBeanId = "sid";  
  29.         String serviceName = request.getParameter(serviceBeanId);  
  30.   
  31.         Object serviceInstance = ContextUtil.getBean(serviceName);  
  32.         BurlapSkeleton skeleton = new BurlapSkeleton(serviceInstance);  
  33.         InputStream is = request.getInputStream();  
  34.         OutputStream os = response.getOutputStream();  
  35.   
  36.         BurlapInput in = new BurlapInput(is);  
  37.         BurlapOutput out = new BurlapOutput(os) {  
  38.             public void startReply() throws IOException {  
  39.                 print("<?xml version=/"1.0/" encoding=/"utf-8/"?><burlap:reply xmlns:burlap=/"http://www.amowa.net/buffalo//">");  
  40.             }  
  41.         };  
  42.   
  43.         try {  
  44.             skeleton.invoke(in, out);  
  45.         } catch (Throwable e) {  
  46. //          ProLogService.error(this.getClass(), e.getMessage(), e);  
  47.         }  
  48.     }  
  49.       
  50. }  

 

 

4.  最后在页面中按照如下代码直接调用就好了!(注:comService必须是在Spring中注册好的!)

   

[java]  view plain copy
  1.    //调用spring中的实例来操作  
  2.        var buffalo = new Buffalo('<c:url value="/ajax"/>'true);  
  3.     buffalo.remoteCall("comService.getTestStr",  
  4. ["linwei"],  
  5. function(reply){  
  6.     var result = reply.getResult();  
  7.            alert("result is " + result);  
  8. );  

 

 

 

 

 http://blog.csdn.net/linwei_1029/article/details/6219795

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值