春天的命令对象

时间:2013-11-27 09:00:20

标签: java spring jsp spring-mvc

我是春天新手,不知道如何继续我的要求。

我的要求如下:

我使用spring和tiles创建了web应用程序。

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

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

但问题是xml非常大,因此应用程序不接受完整的字符串。

因此,我的计划是使用命令对象(在命令对象中声明一个变量,然后使用此变量在jsp页面中获取此xml) 但我不确定如何使用它,我用谷歌搜索但只能发现命令对象是在Web应用程序本身中创建和填充的,即在一个页面中创建并发送给其他人。

但对我来说,我需要从外部客户端发送它。从客户端,我需要使用命令对象将此大型xml请求发送到我的Spring 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);

我真的不确定我是否朝着正确的方向前进,请建议我的方式......

2 个答案:

答案 0 :(得分:1)

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

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

你能详细点一下吗? 谁是客户?它只是一个弹簧mvc应用程序或解耦(前端客户端的后端)?

答案 1 :(得分: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相关?