spring JSONP
Ajax 는 이미 누구나 다 알 고 있 을 것 입 니 다. 그러나 브 라 우 저의 '동원 정책' 에 제약 을 받 아 방문 을 뛰 어 넘 어야 할 때 Ajax 는 어 쩔 수 없습니다.이 럴 때 저 희 는 Jsonp 가 필요 합 니 다. Jsonp 는 Json with padding 의 약칭 입 니 다. 이것 은 비공 식 프로 토 콜 입 니 다. 서버 에서 script tags 를 계승 하여 클 라 이언 트 로 돌아 가 자바 script callback 의 형식 으로 비약 적 인 방문 을 할 수 있 습 니 다.
좀 더 명확 하 게 말하자면 프론트 엔 드 는 JS 를 통 해 script 탭 을 만 들 고 src 가 요청 한 url 을 가리 키 며 url 에 리 셋 된 callback 을 지정 하 는 것 입 니 다. Server 엔 드 는 요청 데 이 터 를 json 형식 (jsonData) 으로 변환 하여 데 이 터 를 callback 에 채 우 고 callback 을 리 셋 하 는 것 입 니 다.
2. Spring 에서 Jsonp 요청 지원
물론 실제 프로젝트 에서 여러 가지 세부 적 인 처 리 를 고려 해 야 하지만 예 를 들 어 상기 핵심 절차 만 실현 한다.이전 글 'Spring MVC 사용자 정의 보기 의 실현' 을 통 해 Jsonp 의 요청 을 지원 하려 면 JSONP 보기 에 대한 지원 을 추가 하고 Jsonp 보기 의 렌 더 링 함수 에서 되 돌아 올 데 이 터 를 json 형식 으로 변환 하고 콜백 을 되 돌리 면 됩 니 다. 콜백 함수 의 이름 이 전단 으로 들 어 와 야 할 때 Jsonp 보기에 서 request 에서 얻 을 수 있 습 니 다.
JSONP 보기 의 실현:
- public class JsonpView extends AbstractView {
-
- protected void renderMergedOutputModel(Map<String, Object> model,
- HttpServletRequest request, HttpServletResponse response) throws Exception {
-
- // model JSON
- JSONObject json = (JSONObject)JSONSerializer.toJSON(model);
-
- // JSONP callback
- String callback = request.getParameter("callback");
-
- // callback,
- StringBuffer buf = new StringBuffer();
- buf.append(callback);
- buf.append("(");
- buf.append(json.toString());
- buf.append(");");
-
- response.setContentType("text/plain; charset=GBK");
- response.getOutputStream().write(buf.toString().getBytes());
- response.getOutputStream().flush();
- }
- }
전단 의 실현 은 다음 과 같다.
- vote = function(){
- var url = "log/vote.jsonp?callback=" +"voteCallback";
- var script = document.createElement("script");
- script.setAttribute("src",url);
- script.setAttribute("type","text/javascript");
- document.getElementsByTagName("head")[0].appendChild(script);
- };
- voteCallback = function(data){
- alert(data.username+data.password);
- }
vote () 함 수 를 터치 할 때 헤드 에 < script > 탭 을 만 들 고 src 이전 서버 에서 url 을 요청 합 니 다. url 에 callback 함수 이름 을 알려 주 십시오. 서버 에서 callback 함 수 를 되 돌 릴 수 있 도록 합 니 다. 또한 프론트 엔 드 는 callback 함 수 를 실현 하고 서버 에 채 워 진 json 데 이 터 를 처리 해 야 합 니 다. 위의 예제 에 서 는 간단 한 alert 일 뿐 입 니 다.
서버 엔 드 의 controller 는 다음 과 같 습 니 다.
- public String vote(ModelMap model){
-
- model.addAttribute("username","ds");
- model.addAttribute("password","123456");
- return "vote.jsonp";
- }
마지막 으로 spring mvc 설정 파일 은 다음 과 같 습 니 다.
- <bean id="multiViewResolver" class="cn.ds.core.service.spring.JmatrixMultiViewResolver">
- <property name="viewMap">
- <map>
- <entry key=".config" value-ref="configView" />
- <entry key=".jsonp" value-ref="jsonpView" />
- </map>
- </property>
- </bean>
- <bean id="jsonpView" class="cn.ds.core.service.spring.JsonpView"></bean>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.