加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring ext 跨域

发布时间:2020-12-15 01:11:22 所属栏目:大数据 来源:网络整理
导读:read方法中调用的response对象是父类BaseController的一个成员变量. spring默认bean的生命周期Score为singleton单例模式. 当多线程并发使用同一bean,并使用bean中的同一成员变量时会有问题. 比如下例中的成员变量response 以下是服务端跨域代码. @Controller

read方法中调用的response对象是父类BaseController的一个成员变量.

spring默认bean的生命周期Score为singleton单例模式.

当多线程并发使用同一bean,并使用bean中的同一成员变量时会有问题. 比如下例中的成员变量response

以下是服务端跨域代码.

@Controller
@Scope("request")
@RequestMapping("/CrossDomain")
public class CrossDomainController extends BaseController {


    @RequestMapping("/read")
    @ControllerLog(description = "跨域请求")
    void read(@RequestParam Map<String,Object> params) throws IOException {
        String url = (String) params.get("url");
        if(BlankUtil.isNotEmpty(url)) {
            HttpClient httpClient = HttpClientBuilder.create().build();
            HttpPost httpPost = new HttpPost(url);
            // 设置请求的header
            httpPost.addHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8");
             设置请求的参数
            List<NameValuePair> nvps = new ArrayList<NameValuePair>();
            for (String key : params.keySet()) {
                nvps.add( BasicNameValuePair(key,String.valueOf(params.get(key))));
            }
            httpPost.setEntity(new UrlEncodedFormEntity(nvps,"utf-8"));
             执行请求
            HttpResponse httpResponse = httpClient.execute(httpPost);
            String result = EntityUtils.toString(httpResponse.getEntity(),1)">if("xml".equalsIgnoreCase(String.valueOf(params.get("type")))) {
                response.setContentType("text/xml; charset=UTF-8");
            }
            try {
                System.err.println("---------->" + String.valueOf(params.get("type")) + result.length());
                PrintWriter out = response.getWriter();
                out.write(result);
                out.flush();
                out.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

?修改Bean的生命周期scope配置为request或prototype即可.

?

?

JS代码(请求Java后台得到远程服务器xml文本内容,?然后在js端转换成xmldoc对象)

function crossDomainloadXmlFile(config) {
    var doc = null;
    Ext.Ajax.request({
        url : config.url, 请求地址
        params : config.params, 请求参数
        timeout: config.timeout || 30000,async : false,1)">同步请求
        method : 'post',1)"> 方法
        callback : (options,success,response) {
            if(!success) {
                (top.checkTimeoutAndRelogin(response.status)) {
                    top.Ext.MessageBox.alert('错误提示'return;
            }
            console.log('crossDomainloadXmlFile:' + response.responseText)
            doc = parseXmlString(response.responseText);
        }
    });
     doc;
}

 parseXmlString(xmlString) {
    var doc;
     (window.ActiveXObject) {
        doc = new ActiveXObject("Microsoft.XMLDOM");
        doc.setProperty("SelectionLanguage","XPath");
        doc.async = false;
        doc.loadXML(xmlString);
    }
     load XML string code for Mozilla,Firefox,Opera,etc.
    else {
        var parser =  DOMParser();
        doc = parser.parseFromString(xmlString,"text/xml");
    }

     doc.documentElement;
}

?

EXT组件:

/**
 * Created by huangbaidong on 2016/6/30.
 * 简单数据字典通用Store,* 外部调用传入参数dictionaryId作为过滤条件.
 * 使用案例:
    store: Ext.create('app.component.sys.dictionary.SimpleDictionaryXmlStore',{
                dictionaryId : 1
            })
 */
Ext.define('app.component.sys.dictionary.SimpleDictionaryXmlStore''simpleDictionaryStore'(config) {
        var me = this;
        Ext.apply(config,{
            fields: [{
                name: 'id'
            },{
                name: 'name''dictionaryId'
            }],data:((){
                var array = [];
                Ext.each(top.simpleDictionaryStore.getData().items,1)">(item) {
                    if(item.data.dictionaryId == config.dictionaryId) {
                        array.push(item);
                    }
                })
                 array;
            })()
        });
        app.component.sys.dictionary.SimpleDictionaryXmlStore.superclass.constructor.call(
*
     * 跨域获取数据字典,并缓存为全局单例Store
     * @type {Ext.data.Store}
     
    top.simpleDictionaryStore = Ext.create('Ext.data.Store'true
        },{
            name: 'name'
        }],proxy: {
            type: 'ajax''xml''@id'服务端跨域处理
                url: DICTIONARY_URL,type : 'xml'
            }
        }
    });

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读