JQuery 및 서블릿을 사용하여 도메인 간 제출 요청 구현 예제 Sharing_jquery

WBOY
풀어 주다: 2016-05-16 17:00:40
원래의
945명이 탐색했습니다.

원리: JavaScript의 Ajax는 도메인을 교차할 수 없지만 로컬 서블릿에 요청을 보내 교차 도메인을 완료할 수 있습니다. 그런 다음 원격 구조를 클라이언트에 반환합니다. 이런 방식으로 Ajax는 여러 도메인에서 작동할 수 있습니다. 나중에 PHP 버전도 공개할 예정이니 많은 관심 부탁드립니다. 아래 코드는

JS 코드:

참고: Post 모드에서 param1과 param2는 리모컨으로 전송되는 매개변수 값이며, 여러 개가 있을 수 있습니다.

코드 복사 코드는 다음과 같습니다.

//GET 메소드
function reqeustCrossDomainProxyGet (){
var url = "http://www.baidu.com";//원격 요청 주소
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는 원격 요청과 관련된 모든 매개변수와 함께 이 주소의 서블릿에 POST 요청을 보냅니다.
* 여기에서 POST 메소드를 사용하여 서블릿으로 보냅니다.
* @param param 원격 요청 매개변수
* @param rtype JS 반환 유형(아직 사용되지 않음)
* @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) );},
성공: function(data){returndata=data;}
});
return returndata;
}

자바 코드:

코드 복사 코드는 다음과 같습니다.

공용 클래스 CorssDomainProxy는 HttpServlet을 확장합니다. 🎜 > }

public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
boolean requestType = false;//원격 요청 유형 표시, 기본값은 GET 메서드입니다
PrintWriter out = resp.getWriter();
열거 키 = req.getParameterNames();//클라이언트가 전달한 모든 매개변수 이름 가져오기
ArrayList params = new ArrayList();
String url=null;
while (keys.hasMoreElements()){
String key = (String)keys.nextElement();
/**
           * 요청 매개변수에 다음 표현식이 포함된 경우 이 매개변수는 원격 요청에 참여하지 않습니다.
            */
if(key .equals("requesturl")){//매개변수가 원격 요청 주소인지 확인
   url = req.getParameter(key);
   }else if(key.equals("typedata")){/ /Judge 요청 데이터 타입, 당분간 사용하지 않음

}else if(key.equals("returntype")){//당분간 사용하지 않을 요청 반환 타입 결정

}else{
Params.add (key); // 기타 추가 매개변수 목록은 원격 요청에 참여하는 매개변수입니다.
RequestType = TRUE; // 표시를 수정하면 원격 요청이 됩니다. post method
}
}}

HttpClient client = new HttpClient();
HttpMethod method = null;
if(requestType){//요청 방법을 결정하고 인스턴스화 HttpMethod 객체, true:POST, false:GET
Method = new UTF8PostMethod(url);
for(String name: params){//POST 매개변수를 반복하여 요청에 추가
String _value = req.getParameter(이름);
((PostMethod )method).setParameter(name,_value);
                                                                   메서드);//실행 요청
     String bodystr = method.getResponseBodyAsString();//Return 결과
       out.println(bodystr);///결과를 클라이언트에 반환
                                                                                                 */
private static class UTF8PostMethod는 PostMethod를 확장합니다. {
public UTF8PostMethod(String url) {
super (url);
}
@Override
public String getRequestCharSet() {
            return "UTF-8"               
    }

}
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿