728x90
반응형

Javascript의 보안 정책 중 하나인 SOP(Same-Origin Policy) 때문에 데이터를 호출하는 도메인과 데이터를 반환하는 도메인의 주소가 다르면 

ajax를 이용할 수 없다. 그러나 JSONP(JSON with Padding)를 이용하면 간단히 해결 가능하다.


원래 ajax의 코드는 아래와 같다. 그러나 아래 코드로는 Cross Domain에 직면했을때 정상적인 responseText를 얻을 수가 없다.

1
2
3
4
5
6
7
8
9
10
11
12
13
$.ajax({
  type: "POST",
  url: "search.do",
  data: $('#searchbox').val(),
  contentType: "application/x-www-form-urlencoded; charset=UTF-8",
  success: function(data) {
    if (data != null) {
      // ...
    } else {
      //....
    }
  }
});


1. JSONP를 이용한 Ajax 호출(Client)

 - 반환되는 데이터 (JSON)가 아래와 같다고 하자.

1
2
3
4
{
  'result': 'user',
  'go': '테스트'
}


 - JSONP를 통한 호출은 아래와 같다. (두 가지 방법 중 아무거나 해도 상관없다.)

 1. $.getJSON()

1
2
3
$.getJSON("http://ip:8080/jsp/upload?id=user&callback=?", function(data) {
  alert(data.result + ", " + data.go);
});
 
 2. $.ajax();

1
2
3
4
5
6
7
8
9
$.ajax({
  dataType: "jsonp",
  success: function(data) {
    if (data != null) {
      alert(data.result + ", " + data.go);
    }
  }
});
 
jQuery 1.2부터는 JSONP 호출에 대한 네이티브 지원이 제공되고 있다. JSONP 콜백을 지정한 경우 다른 도메인에 있는 JSON 데이터를 로드할 수 
있으며 JSON 콜백은 url?callback=? 라는 구문을 사용하여 지정할 수 있다.

 $.getJSON() 메소드를 자세히 살펴보면 URL 맨 끝에 callback= 이라는 문자열과 함께 ? 기호를 사용하고 있다. ? 문자열 자리에는 ajax 콜백 

 함수명이 들어가야 하는데, 만약 위의 샘플 코드와 같이 익명 함수를 콜백 함수로 지정한다면 ?기호를 쓰면 되고, 그렇지 않은 경우엔 실제 콜백

 함수명을 적어주면 된다. 익명 콜백함수 사용시, ? 기호는 jquery가 ajax 호출시 익명 함수의 이름(예:jsonp1234567890)을 넘겨주게 된다.


2. JSON 반환(Server)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
  request.setCharacterEncoding("UTF-8");
  response.setCharacterEncoding("UTF-8");
 
  // 전송된 데이터를 추출(id와 콜백 메소드명)
  String id = request.getParameter("id");
  String callBack = request.getParameter("callback");
 
  // 반환 될 데이터
  JSONObject obj = new JSONObject();
  obj.put("result", id);
  obj.put("go", "테스트");
 
  // 호출 할 javascript 콜백 메소드를 지정 해 준다.
  PrintWriter out = response.getWriter();
  out.write(callBack + "(" + obj.toString() + ")");
  System.out.println(callBack + "(" + obj.toString() + ")");
 
  out.flush();
  out.close();
}

Serlvet으로 구현한 데이터 반환 메소드이다. JSONP는 Get방식으로만 데이터를 가져올 수 있으므로 doGet메소드에 로직을 작성하였다. 
위 코드를 살펴보면 먼저 전달받은 데이터들을 json 형태로 구성한 뒤 콜백함수의 이름으로 감싸줘야 한다. 

최종적으로 반환해야 할 문자열은 아래와 같다. 말 그대로 JSONP(json with padding)이다.

1
jQuery17204359748272690922_1338291446125({"result":"user","go":"테스트"})


3. 결과

-- 퍼옴 --


728x90
반응형
728x90
반응형
넥슨 히트쿠폰 얻는방법 알려드립니다!


20,000젬 + 전설 무기 선택권

얻을수 있는 절호의 기회랍니다♡
쿠폰 얻는방법은 무료!

요즘 낚시 많던데~ 이 쿠폰은 사용후기도 많고

신용도도 높은 쿠폰이랍니다~

 

히트쿠폰 링크 : http://hitcoupon.uy.to

 

히트 쿠폰사용으로 히트 고수가 되어보세요!

그거 아시나요? 히트 랭커들도 이 히트쿠폰을 사용한다는거요..

여러분들도 뒤떨어지지 않으려면 위 링크를 클릭하시고

히트 쿠폰을 무료로 받아보세요!

 

<스폰서배너>

 

 

 

 

 

 

728x90
반응형

'끄적끄적..' 카테고리의 다른 글

티스토리 애드센스 광고 삽입하기  (1) 2018.08.28
클래시 로얄 재밌다!  (0) 2018.08.28
git URL  (0) 2014.07.18
Spring 예문을 통해 공부하기! 좋은 URL  (0) 2014.04.14
skplanet 개발센터 ATMOS  (0) 2013.10.25
728x90
반응형

생활코딩 페이스북 그룹 커뮤니티 정책 RFC

http://goo.gl/71Zt8f

생활코딩 페이스북 그룹에서 편안하게 활동하는데 도움이 될만한 방법을 알려드리기 위한 안내서입니다. 




개발에 도움이 되는 웹서비스와 도구들  

http://goo.gl/RsbzYX

프로그래밍을 위해서는 많은 도구가 필요하지 않습니다. 그것이 프로그래밍의 매력인 것 같습니다. 동시에 프로그래밍을 잘하기 위해서는 또한 도구가 필요합니다. 프로그래머들은 스스로가 도구를 만드는 직업인들이기 때문에 자기 자신이 사용하기 위한 위대한 도구들이 많이 있습니다. 또 그 위대한 도구들을 사용할 의지가 충만한 최고급의 유저층이 있습니다. 그래서 IT 기술의 수 많은 혁신이 개발자들의 도구로부터 출발하는 것이겠지요. 본 페이지는 이러한 도구들을 소개하고 있습니다. 




+ 개발자 커뮤니티

http://goo.gl/J9lqYc

생각해보면 개발자들은 커뮤니티 지향 프로그래밍을 하고 있는 것일지도 모르겠습니다. 궁금한 것이 있으면 질문하고, 다른 사람의 궁금증을 풀어주면서 문제를 해결하는 것이 개발자들의 일상이라고 할 수 있을 것 같습니다. 페이스북이나 페이스북 밖에는 수 많은 개발자 커뮤니티가 있습니다. 본 페이지는 이런 커뮤니티들을 소개하고 있습니다.  




생활코딩 밖에서 프로그래밍 배우기

http://goo.gl/NjwRtA

생활코딩은 http://opentutorials.org/course/1 이라는 온라인 강의를 기반으로 시작된 활동입니다. 좋은 커리큘럼을 만들기 위해서 노력하고 있습니다만, 생활코딩만으로는 충분하지 않을 것입니다. 생활코딩 밖에는 휼룡한 커리큐럼들이 많이 있습니다. 본 페이지는 이런 커리큘럼들에 대해서 소개하고 있습니다. 



라이브러리 & 프레임 워크  

http://goo.gl/stHJYL

개발자들이 이용하는 다양한 라이브러리와 프래임웍크를 소개하는 페이지입니다. 



그룹 내의 설문 조사들 

http://goo.gl/Aj1fay

페이스북의 그룹에는 구성원들의 생각을 취합할 수 있는 매우 좋은 도구가 있습니다. '페이스북 질문'이 바로 그것인데요. 이 질문을 통해서 구성원들의 성향이나 취향의 분포를 알아보는 것도 재미 & 유익 할 것 같습니다. 본 페이지는 그런 질문들을 모아봤습니다. 



개발자 유머

http://goo.gl/30aMCR



프로그래밍 시작의 진입점 

http://goo.gl/ktdlne

생활코딩에는 프로그래밍에 입문하는 분들이 많이 있습니다. 이 분들에게 도움이 되는 대화들이 많이 오고가고 있는데요. 놓치기 어려운 대화들을 본 페이지에서 정리하고 있습니다. 


직업탐험

프로그래밍 언어를 사용하는 다양한 직업과 분야가 있습니다. 이러한 분야를 이해하는데 도움이 될 수 있는 대화를 모아둔 문서입니다. 

https://www.facebook.com/notes/%EC%83%9D%ED%99%9C%EC%BD%94%EB%94%A9/%EC%A7%81%EC%97%85-%ED%83%90%ED%97%98/834695219904349


프로그래밍 관련 유용한 문서들

http://goo.gl/LvjGxt


프로그래밍과 관련된 무상/할인 정책들

https://goo.gl/xwLsWO



생활코딩 페이스북 그룹 상단 게시물 리스트

그룹내에서 게시 되었던 공지사항들의 내역을 정리하는 문서입니다.

http://goo.gl/vfcJKQ

728x90
반응형
728x90
반응형

이 문제의 원인은 dll파일은 32bit인데 사용하는 jvm이 64bit이기 때문이다.


해결 방법 :


1. dll파일을 64비트로 다시 빌드한다.


참고 : http://huammmm1.tistory.com/444



2. JVM을 32비트로 맞춘다.



2.1 이클립스에서 Windows -> Preferences -> Java -> Installed JREs -> Add -> Standard VM





여기서 JRE name은 적당히 주고, JRE home은 Directory를 C:\Program Files (x86)\Java\jre7 로 설정해주자.


완료되었으면 Preferences 창을 빠져나온다.


* 이 때 방금 만든 JRE name으로 체크 설정을 꼭 적용 해주지 않아도 된다. (단순히 생성만 해도 ok)



2.2 이클립스에서 Run -> Run Configurations -> JRE -> Alternate JRE 선택 후 아까 만든 JRE name을 선택한다.






Apply를 한 뒤 잘 실행되는지 확인해본다.



728x90
반응형

'Web Programming > error' 카테고리의 다른 글

java error 메세지  (0) 2018.08.30
Remove Override annotation  (0) 2018.08.29
Unable to read TLD "META-INF/c.tld" from JAR file Error  (0) 2015.10.21
mybatis 부적합한 열 유형  (0) 2014.01.24
내가 멀 잘못했을까..  (0) 2014.01.23
728x90
반응형

MAVEN 사용 시 다음과 같은 에러가 뜰 경우가 있다.
pom.xml에 기본적으로 등록되어 있는 dependency에서 jsp-api.jar 및 servlet-api와 같이
provided가 붙어있는 것들을 지워주면 된다.
이유는 톰캣과 같은 서블릿 컨테이너들이 제공하는 것들이므로,
메이븐에서 추가해 준 jar 파일들과 충돌이 나기 때문이다.


728x90
반응형

+ Recent posts