2013-11-27 5 views
0

봄에 익숙하지 않고 나의 요구 사항을 어떻게 처리할지 모르겠습니다. 다음과 같이봄의 명령어 객체

내 요구 사항은 다음과 같습니다

나는 봄과 타일을 사용하여 웹 응용 프로그램을 만들었습니다.

xml을 웹 응용 프로그램에 전달해야합니다. URL에 XML을 보내서 시도했습니다.

Example: 
http://domain-name/SpringExample/welcome.htm?requestXml=”my xml string……….. 

그러나 문제는 XML이 매우 커서 응용 프로그램이 전체 문자열을 허용하지 않는다는 것입니다.

그러므로 내 계획은 명령 개체를 사용하는 것입니다 (명령 개체에서 변수를 선언 한 다음이 변수를 사용하여 JSP 페이지에서이 XML을 가져옵니다). 그러나 사용 방법은 확실하지 않지만 검색 만 할 수 있습니다 명령 객체가 웹 응용 프로그램 자체에서 만들어지고 채워지는 것을 찾습니다. 즉, 한 페이지에서 작성되어 다른 객체로 보내집니다.

그러나 나를 위해 외부 클라이언트에서 보내야합니다. 클라이언트에서 커맨드 객체를 사용하여 스프링 웹 애플리케이션에이 큰 xml 요청을 보내야합니다. 클라이언트에서 이것을 호출하는 방법과 웹 응용 프로그램에서 이것을 읽는 방법을 잘 모르겠습니다.

도움을 주시면 감사하겠습니다. 나는 하나의 스프링 타일 웹 응용 프로그램이

:

세부  사전에

감사합니다. 내 클라이언트가이 봄 응용 프로그램을 호출하고 xml 문자열을 보낼 간단한 Java 응용 프로그램입니다 어딘가에 그런 시나리오에서, 나는 웹 응용 프로그램에 내 데이터를 전달하기 위해 명령 개체를 사용해야합니다.

봄 웹 응용 프로그램

@Controller 
@RequestMapping("/welcome.htm") 
@SessionAttributes("requestObj") 
public class WelcomeController { 

@RequestMapping(value="requestObj", method = RequestMethod.GET) 
public String redirect(@RequestParam("requestObj") SampleClass requestObj, ModelMap model) 
{  
    Model.addAttribute("reqXml", requestObj.getXmlString());  
    return "welcome"; //returns to the jsp page 
} 

클라이언트 : 내가 올바른 방향 여부에 갈거야 만약 내가 정말 확실하지 않다

String url = "http://localhost/SpringTilesWebApp/welcome.htm"; 
String finalURL = url + "?" + "requestObj=" + requestObj; 
Runtime.getRuntime().exec 
("rundll32 url.dll,FileProtocolHandler " + finalURL); 

, 나에게 방법을 제안 해주십시오 ..

+0

전체 XML 문서를 URL의 일부로 보내기 때문에 문제가 발생할 가능성이 높습니다. 대신 POST 요청을 사용하여 요청 본문에 문서를 보내십시오. – Henry

+0

감사합니다 Henry !! 약간의 샘플 코드를 게시 해 주시면 정말 도움이 될 것입니다. 또한 명령 객체를 사용하여이 작업을 수행 할 수 있습니까? – user3040945

+0

예를 들어 여기를 참조하십시오 : http://stackoverflow.com/questions/8339137/xml-json-post-with-requestbody-in-spring-rest-controller – Henry

답변

0

서버 측 앱에 대한 게시물 요청을 사용해야합니다. 당신은 아파치 httpclient 도구를 사용할 수 있습니다.예를 들면 : 스프링 MVC 측면에서

String url = "http://localhost/SpringTilesWebApp/welcome.htm"; 

HttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 

List<NameValuePair> urlParameters = new ArrayList<NameValuePair>(); 
urlParameters.add(new BasicNameValuePair("requestObj", requestObj));  

post.setEntity(new UrlEncodedFormEntity(urlParameters)); 

HttpResponse response = client.execute(post); 

    //read and process response 

당신은

 @RequestMapping(method = RequestMethod.POST) 
     public String redirect(@RequestParam("requestObj") SampleClass requestObj, 
                    ModelMap model) 

와 컨트롤러 메소드 주석을 달 수 있습니다 당신은 requestObj 지금 사용할 수 있습니다.

당신이 말하는 명령 개체는 무엇입니까? 명령 설계 패턴에 대해 이야기하고 있거나 사용중인 기술/기술과 관련되어 있습니까?

+0

대답에 대한 고맙습니다 알렉스 : – user3040945

+0

나는 클라이언트에서 봄 웹 애플 리케이션을 호출 할 때, 한 번 더 의심이 ..... 그것은 POST와 함께 일하고있다 때 나는 독립 실행 형 웹 응용 프로그램을 배포하고 실행하는데, 페이지가 발견되지 않는다는 것을 의미합니다.). 반면에 독립 실행 형 웹 응용 프로그램은 컨트롤러 요청 매핑이 실행될 때 실행됩니다. 왜 diff가 있고 또한 내가 할 필요가있는 것이 더 있는지, 두 가지 (독립 실행 형 응용 프로그램과 클라이언트에서 호출 됨)를 모두 만들 수 있는지 이해하십시오. – user3040945

1

왜 GET으로 보내려고 했어? 이름에서 알 수 있듯이 리소스를 얻으려고 할 때 HTTP GET 메서드를 사용해야합니다.

POST 메서드 (또는 PUT)를 사용하여 xml 문서를 보내야합니다. 예를 들어 숨겨진 입력 필드로 넣을 수 있습니다.

좀 더 자세하게 설명해 주실 수 있습니까? 클라이언트는 누구입니까? 그것은 단지 하나의 봄 mvc 애플 리케이션이나 거기 (프론트 엔드 클라이언트에서 백엔드) decoupled입니까?

+0

안녕하세요 알렉스, 일부 내용을 추가했습니다 확인 – user3040945