2013-11-27 57 views
0

我是新来的春天,不知道如何继续我的要求。春季命令对象

我的要求如下:

我已经创建了使用Spring和瓷砖的Web应用程序。

我需要将xml传递给web应用程序,我通过在url中发送xml来尝试它。

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

但问题是xml非常大,因此应用程序不接受完整的字符串。因此,我的计划是使用命令对象(在命令对象中声明一个变量,然后使用这个变量在jsp页面中获取这个xml) 但是我不确定如何使用它,但是我只能使用它发现命令对象是在Web应用程序本身中创建并填充的,即在一个页面中创建并发送给其他页面。

但对我来说,我需要从外部客户端发送它。从客户端,我需要使用命令对象将这个大的xml请求发送到我的spring web应用程序。 我不知道如何从客户端调用它,也不知道如何在Web应用程序中读取它。

任何帮助表示赞赏。

在此先感谢

详情:

我有一个春天砖的Web应用程序。我的客户端是一个简单的java应用程序,它将调用这个spring应用程序并向它发送xml字符串 我在某些地方阅读过,在这种情况下,我需要使用命令对象将我的数据传递给web应用程序。

的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 

在Spring MVC的方面,你可以用

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

注释你的控制器的方法,你现在可以使用requestObj。

你说的命令对象是什么?您是在谈论命令设计模式,还是与您正在使用的技术/ fw有关?

+0

Thanxs亚历克斯的答案:) – user3040945

+0

我有一个更多的疑问.....当我从客户端调用春季Web应用程序,它是与POST工作,但是当我部署和运行独立的Web应用程序,它不工作(我的意思是说,页面没有找到)....另一方面,独立的Web应用程序运行时,控制器请求映射是GET ...我无法了解为什么有差异,还有什么我需要做的,使(独立应用程序和从客户端调用)工作? – user3040945

1

为什么你甚至试图通过GET发送它?顾名思义,在尝试获取资源时必须使用HTTP GET方法。

您必须使用POST方法(或PUT)发送xml文档。例如,您可以将其作为隐藏的输入字段。

您能否详细介绍一下? 谁是客户?这只是一个春季mvc应用程序,或者是解耦的(来自前端客户端的后端)?

+0

嗨亚历克斯,添加了一些细节,请检查 – user3040945