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