欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用JQuery和Servlet實(shí)現(xiàn)跨域提交請(qǐng)求示例分享

 更新時(shí)間:2014年02月12日 09:19:17   投稿:zxhpj  
這篇文章主要介紹了利用JQuery和Servlet實(shí)現(xiàn)跨域提交請(qǐng)求示例,需要的朋友可以參考下

原理:JavaScript的Ajax不可以跨域,但是可以通過向本地的一個(gè)Servlet發(fā)出請(qǐng)求,由Servlet完成跨域。再把遠(yuǎn)程的結(jié)構(gòu)返回給客戶端。這樣Ajax就可以跨域了。在后面,再發(fā)一個(gè)PHP版本的,請(qǐng)大家關(guān)注啊。下面是代碼

JS代碼:

注意:在Post方式時(shí),param1和param2為向遠(yuǎn)程發(fā)送的參數(shù)值,可以有多個(gè)。

復(fù)制代碼 代碼如下:

//GET方式
function reqeustCrossDomainProxyGet(){
    var url = "http://www.baidu.com";//遠(yuǎn)程請(qǐng)求地址
    var param = {'requesturl':url,'typedata':'JSON'};
    var data = getCrossDomainProxyRemote(param,"json");
}
//Post方式
function reqeustCrossDomainProxyPost(param1,param2){
    var url = apiServer+"/api/lucene/query";
    var param = {'requesturl':url,'typedata':'JSON','param1':param1,'param2':param2};
    var data = getCrossDomainProxyRemote(param,"json");
}

/**
 * JS向本址的一個(gè)Servlet發(fā)送POST請(qǐng)求,所有關(guān)于遠(yuǎn)程請(qǐng)求的參數(shù)。
 * 在此處參POST方式發(fā)送給Servlet
 * @param param 遠(yuǎn)程請(qǐng)求參數(shù)
 * @param rtype JS返回類型(暫時(shí)沒有用到)
 * @return
 */
function getCrossDomainProxyRemote(param,rtype){
    var url = "/cross/proxy";//Servlet的URL地址
    var returndata;
    $.ajax({
        url: url,type: 'POST',dataType: rtype,timeout: 40000,data:param, async:false,
        error: function(response,error) {alert(response.status);},
        success: function(data){returndata=data;}
    });
    return returndata;
}

Java代碼:

復(fù)制代碼 代碼如下:

public class CorssDomainProxy extends HttpServlet {
    
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doPost(req, resp);    
    }
    
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        boolean requestType = false;//標(biāo)記遠(yuǎn)程請(qǐng)求類型,默認(rèn)為GET方式
        PrintWriter out = resp.getWriter();
        Enumeration keys = req.getParameterNames();//取出客戶端傳入的所有參數(shù)名
        ArrayList<String> params = new ArrayList<String>();
        String url=null;
        while (keys.hasMoreElements()){
            String key = (String) keys.nextElement();
            /**
             * 如果請(qǐng)求參數(shù)內(nèi)有如下幾種表示,這此參數(shù)不參與遠(yuǎn)程請(qǐng)求
             */
            if(key.equals("requesturl")){//判斷參數(shù)是否是,遠(yuǎn)程請(qǐng)求地址
                url = req.getParameter(key);
            }else if(key.equals("typedata")){//判斷請(qǐng)求數(shù)據(jù)類型,暫時(shí)沒有用到
                
            }else if(key.equals("returntype")){//判斷請(qǐng)求返回類型,暫時(shí)沒有用到
                
            }else{
                params.add(key);//其它加入?yún)?shù)列表,此處為參與遠(yuǎn)程請(qǐng)求的參數(shù)
                requestType = true;//修改標(biāo)記,表求遠(yuǎn)程請(qǐng)求為POST方式
            }
        }
        
        HttpClient client = new HttpClient();
        HttpMethod method = null;
        if(requestType){//判斷請(qǐng)求方式,并實(shí)例化HttpMethod對(duì)象,true:POST,false:GET
            method = new UTF8PostMethod(url);
            for(String name : params){//迭代POST參數(shù),加入到請(qǐng)求中
                String _value = req.getParameter(name);
                ((PostMethod)method).setParameter(name,_value);
            }
        }else{
            method = new GetMethod(url);
        }      
        client.executeMethod(method);//執(zhí)行請(qǐng)求
        String bodystr = method.getResponseBodyAsString();//返回結(jié)果
        out.println(bodystr);//將結(jié)果返回給客戶端
    }
    
    /**
     * 內(nèi)部類,轉(zhuǎn)換URL字符串為UTF-8
     * @author Administrator
     *
     */
    private static class UTF8PostMethod extends PostMethod {
        public UTF8PostMethod(String url) {
            super(url);
        }
        @Override
        public String getRequestCharSet() {
            return "UTF-8";
        }
    }
    
}

  • cookie.js 加載順序問題怎么才有效

    cookie.js 加載順序問題怎么才有效

    在使用cookie.js時(shí),只有在jquery.js文件后加載整體才有效,下面與大家分享下有效加載順序,有此需求的朋友可以參考下
    2013-07-07
  • JQuery FlexiGrid的asp.net完美解決方案 dotNetFlexGrid-.Net原生的異步表格控件

    JQuery FlexiGrid的asp.net完美解決方案 dotNetFlexGrid-.Net原生的異步表格控件

    dotNetFlexGrid是一款dotNet原生的異步表格控件,他的前身是Jquery FlexiGrid插件,我們重構(gòu)了FlexiGrid的大部分Javascript代碼,使其工作的更有效率,BUG更少;同時(shí)將其封裝為dotNet控件,提供了簡單易用的使用方式。
    2010-09-09
  • jQuery操作事件完整實(shí)例分析

    jQuery操作事件完整實(shí)例分析

    這篇文章主要介紹了jQuery操作事件,結(jié)合完整實(shí)例形式分析了jquery事件綁定、解綁、響應(yīng)、觸發(fā)等相關(guān)操作技巧,需要的朋友可以參考下
    2020-01-01
  • Easyui 之 Treegrid 筆記

    Easyui 之 Treegrid 筆記

    easyui是一種基于jQuery的用戶界面插件集合。本文是小編自己遇到的一些有關(guān)easyui treegrid的問題記錄,特此分享腳本之家平臺(tái)供大家參考
    2016-04-04
  • jQuery實(shí)現(xiàn)平滑滾動(dòng)頁面到指定錨點(diǎn)鏈接的方法

    jQuery實(shí)現(xiàn)平滑滾動(dòng)頁面到指定錨點(diǎn)鏈接的方法

    這篇文章主要介紹了jQuery實(shí)現(xiàn)平滑滾動(dòng)頁面到指定錨點(diǎn)鏈接的方法,涉及jquery鼠標(biāo)事件及頁面滾動(dòng)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • jQueryUI Datepicker組件設(shè)置日期高亮

    jQueryUI Datepicker組件設(shè)置日期高亮

    這篇文章主要介紹了jQueryUI Datepicker組件設(shè)置日期高亮的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • jQuery formValidator表單驗(yàn)證插件開源了 含API幫助、源碼、示例

    jQuery formValidator表單驗(yàn)證插件開源了 含API幫助、源碼、示例

    ajaxValidator函數(shù)在提交后發(fā)生錯(cuò)誤,停留在本頁面后,再次觸發(fā)校驗(yàn)會(huì)讓提示內(nèi)容一直處于onload狀態(tài)。
    2008-08-08
  • jquery實(shí)現(xiàn)從數(shù)組移除指定的值

    jquery實(shí)現(xiàn)從數(shù)組移除指定的值

    這篇文章主要介紹了jquery實(shí)現(xiàn)從數(shù)組移除指定的值,涉及jQuery中g(shù)rep()方法對(duì)數(shù)組元素進(jìn)行過濾篩選的技巧,需要的朋友可以參考下
    2015-06-06
  • jQuery操作文本方法介紹

    jQuery操作文本方法介紹

    這篇文章介紹了jQuery操作文本的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 最新評(píng)論