2013-11-27 3 views
0

Я новичок в весне и не знаю, как действовать по моему требованию.Командный объект весной

Мое требование заключается в следующем:

Я создал веб-приложения с помощью пружины и плитки.

Мне нужно передать xml в веб-приложение, я попробовал его, отправив xml в url.

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

Но проблема в том, что xml очень велик, поэтому приложение не принимает полную строку.

Следовательно, Мой план состоит в том, чтобы использовать объект команды (объявляя переменную в объекте команды, а затем используя эту переменную, чтобы получить этот xml на странице jsp) Но я не уверен, как ее использовать, я искал Google, но мог что объект команды создается и заполняется в самом веб-приложении, т. е. создается на одной странице и отправляется другому.

Но для меня мне нужно отправить его от внешнего клиента. От клиента мне нужно отправить этот большой запрос xml в мое весеннее веб-приложение с помощью объекта команды. Я не уверен, как вызывать это от клиента, а также как это прочитать в веб-приложении.

Любая помощь приветствуется.

Заранее спасибо 

Детали:

У меня есть единственный пружинные плитки веб-приложения. Мой клиент - это простое java-приложение, которое вызовет это приложение весны и отправит ему строку xml. Я где-то читал, что в таких сценариях мне нужно использовать объект команды для передачи моих данных в веб-приложение.

Spring Web приложение

@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

Спасибо, Генри! Можете ли вы разместить несколько примеров кода, это может быть очень полезно. Кроме того, можем ли мы это сделать с помощью объекта команды? – user3040945

+0

См. Например здесь: http://stackoverflow.com/questions/8339137/xml-json-post-with-requestbody-in-spring-rest-controller – Henry

ответ

0

Вы должны использовать запрос на отправку на серверное приложение. Для этого вы можете использовать инструмент apache httpclient.Например:

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 

На весеннем Mvc стороне вы можете аннотировать метод контроллера с

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

и вы можете использовать теперь requestObj.

Командный объект, о котором вы говорите, что это такое? Вы говорите о шаблоне проектирования команд или связаны с технологией/fw, которую вы используете?

+0

Thanxs Alex для ответа :) – user3040945

+0

У меня было еще одно сомнение ..... когда я вызываю приложение Spring из клиента, он работает с POST, но когда я развертываю и запускаю автономное веб-приложение, он не работает (я имею в виду, что страница не найдена) .... С другой стороны, автономное веб-приложение запускается, когда сопоставление запросов контроллера GET ... Я не могу понять, почему существует diff, а также есть что-то еще, что мне нужно сделать, чтобы заставить (автономное приложение и вызвано с клиента) работать? – user3040945

1

Почему вы даже попытались отправить его GET? Как сказано в названии, метод HTTP GET должен использоваться при попытке получить ресурс.

Необходимо отправить документ xml с использованием метода POST (или PUT). Например, вы можете указать его как скрытое поле ввода.

Можете ли вы подробнее узнать больше? Кто такой клиент? Это только одно приложение mvc для весны или есть развязанные (бэкэнд от внешнего клиента)?

+0

Привет, Алекс, добавили некоторые детали, пожалуйста, проверьте – user3040945

Смежные вопросы