2011-08-26 71 views
1

我正在使用Struts 2.1.8.1。我需要在自己的应用程序中嵌入来自另一台服务器的某些页面,这样用户就可以通过我的应用程序访问它们,而无需直接访问其他服务器。我的想法是有一个包的定义,所以任何访问该包将被重定向到内部服务器。Struts2向其他应用程序发送请求

<package name="eco-marketing" namespace="/marketing" extends="eco-default"> 
    <action name="*"> 
     <result name="success" type="dispatcher"> 
      <param name="location">http://myotherserver:8080/test/{1}</param> 
     </result> 
    </action> 
</package> 

但它不起作用,我得到了错误404 - 没有找到,所以我认为并不像听起来那么容易。任何想法如何做到这一点?

TIA

+0

调度只流程JSP的它不能从struts.xml中进行(除非你创建自己的定制结果类型)。 – Quaternion

+0

似乎是这样。所以我想最好的选择是实现一个使用HttpClient的自定义操作。 –

+0

是的,但是正如你指出的那样,它看起来似乎是结果的工作,并且实现起来并不会很难......让行动先行动起来更容易。我认为这可能对很多人有用。 – Quaternion

回答

1

我会假设你正在访问只是HTML,然后看到:http://download.oracle.com/javase/tutorial/networking/urls/readingWriting.html

我建议创建该包的动作做的工作适合你,使用的值参数来获取所需的数据。

您可能已经知道,但消费者操作中的iframe会使其更易于使用,而不是试图解析您需要的东西。

在你想到了之后,如果你决定创建一个自定义结果类型,请在这里发回给我们,这将是非常有趣的。

自定义结果类型的例子可以在这里找到(从上往下第四代码块):http://siriwardana.blogspot.com/2008/12/creating-custom-result-type-struts-2.html

+0

我不确定这种情况,但不是[Web服务](http://docs.codehaus.org/display/ENUNCIATE/A+Rich+Web+service+API+for+Struts+2)通常与其他应用程序通信的方式 – anu

+1

那么他只是想从远程机器上获得一个网页并将其内容包含在他自己的内容中。听起来OP没有改变远程服务器的能力,所以他所能做的只是消耗页面。这样做有一些安全问题......就好像远程站点认为它不喜欢这种做法一样,它可能会在页面中放入一些恶意的JS,因为您已将整个页面提升到您自己的域中,脚本现在可以操作您网页上的任何内容。如果OP想按原样显示页面,则iframe最好。否则,应该从页面解析数据以确保安全。 – Quaternion

+0

嗯非常真实,这是一个完整的解释 – anu

相关问题