繁体   English   中英

如何在.jsp页面中创建Web服务客户端?

[英]How to create web service client in a .jsp page?

我已经为我的Web服务创建了WSDL。 我想知道如何从另一个Web应用程序的jsp页面调用它。

我想从jsp调用Web服务。例如,考虑到我有一个非常简单的Web服务,该Web服务将在单击Submit之后显示回在index.jsp页面中输入的文本,我将如何使用wsdl url来调用Web单击提交时获取文本值的服务。

/维克拉姆

我真的不建议在JSP中编码任何类型的逻辑,包括调用Web服务,这不是一个好习惯。 JSP是一种视图技术,应用于表示,而不用于业务逻辑。 相反,您应该将表单提交给Servlet,检索提交的参数,调用Web服务,然后在JSP视图中打印结果。 但是,让我们关闭括号。

既然您在评论中提到了WebLogic和Workshop,所以我假设您正在使用它们:) WebLogic支持JAX-WS,因此建议您将其用于客户端。

基本上,您需要首先生成“客户端构件”(即,用于调用Web服务的类)。 一种方法是使用clientgen Ant任务。 有关详细信息,请参阅从独立客户端调用Web服务:主要步骤 (应该可以从Workshop生成类,但我不能告诉您如何,我不使用它)。

一旦生成了客户端构件,调用Web服务就轻松了。 该代码将类似于以下内容:

ComplexService test = new ComplexService(), 
ComplexPortType port = test.getComplexPortTypePort();

BasicStruct in = new BasicStruct();

in.setIntValue(999);
in.setStringValue("Hello Struct");

BasicStruct result = port.echoComplexType(in);
System.out.println("echoComplexType called. Result: " + result.getIntValue() + ", " + result.getStringValue());

您是在谈论从浏览器调用它,还是从JSP调用以在发送到浏览器的HTML中呈现内容? 这些是完全不同的问题。

如果您正在谈论从浏览器调用它,那么热门技巧是将SOAP负载视为XML样板库的一大块。 然后,填写一些区别SOAP请求所必需的信息,然后使用XMLHttpRequest将XML发送到服务器。 最后,然后从SOAP返回有效负载中提取结果。

如果只想从JSP调用Web服务,最好的选择是制作一个实用程序包装器类,该类包装所有管道以进行Web服务调用,然后使用标准Java技术从JSP调用该包装器。

编辑-回答问题

因此,基本上,您有了一个带文本框的index.jsp页面。 单击提交,您希望将该提交的文本发送到Web服务,并将结果显示回浏览器。

简单地说,除非使用XHLHttpRequest,否则您想创建一个Web服务客户端(使用JAX-WS或Axis或任何其他Java Web服务工具包)。

然后,您将让Servlet或JSP从表单中获取POST请求,从请求中提取文本,然后它将调用Web服务。 最后,它将结果返回给客户端(使用JSP或其他方法)。

您不能将HTML直接发布到Web服务,协议不同。

所以

          text           text
        | --> |         | ----> |            
        |     | Servlet |result | Web Service
        |     |         | <---- |
Browser |     |         |
        |     |         | forward |
        |     |         | ------> | JSP  
        |                         |
        |    rendered result      |
        | <---------------------- |

数据如何到达Java servlet页面?

JSON,XML?

如果是JSON ,我如何建议您使用jQuery.get()方法太棒了! 这就是我在ASP页面中使用的方式...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM