1. 需求:

  • 集成公网手机号归属地查询服务;
  • 对外发布自己的手机号归属地查询服务;
  • 提供查询界面
//1. 使用 wsimport 生成公网客户端代码
// 2. 创建 SEI 接口
@WebService
public interface MobileInterface{
public String queryMobile(String phoneNum);
} // 3. 创建 SEI 实现类
public class MobileImpl implements MobileInterface{
// 公网服务客户端, 使用 Spring 注入
private MobileCodeWSSoap mobileClient;
public MobileCodeSWWoap getMobileClient(){
return mobileClient;
}
public void setMobileClient(MobileCodeWSSoap mobileClient){
this.mobileClient = mobileClient;
} public String queryMobile(String phoneNum){
// 调用公网服务客户端查询方法
return mobileClient.getMobileCodeInfo(phoneNum,"");
}
} // 4. 创建 queryMobile.jsp
<form action="${pageContext.request.contextPath}/queryMobile.action" method="post">
手机号码归属地查询:<input type="text" name="phoneNum"/><input type="submie" value="查询"/>
<br/>
查询结果:${result}
</form> // 5. 创建 MobileServlet.java
public class MobileServlet extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String phoneNum = req.getParameter("phoneNum");
if(null != phoneNum && !"".equals(phoneNum)){
// 获取 Spring 框架中的内容
ApplicationContext context =
WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
// 获取 mobileServer 对象
mobileServer = (MobileInterface)context.getBean("mobileServer"); String result = mobileServer.queryMobile(phoneNum);
request.setAttribute("result",result);
} request.getRequest.Dispatcher("/jsp/queryMobile.jsp").forward(req,resp);
}
} // 6. 配置 applicationContext.xml
<!-- jaxws:server 发布服务 -->
// 配置服务地址和服务接口
<jaxws:server address="/mobile" serviceClass="cn.itcast.mobile.server.MobileInterface">
<jaxws:serviceBean>
<ref bean="mobileServer"/>
</jaxws:serviceBean>
</jaxws:server> <!-- 配置服务实现类 -->
<bean name="mobileServer" class="cn.itcast.mobile.server.MobileImpl">
<!-- 注入公网客户端 --
<property name="mobileClient" ref="mobileClient"/>
</bean> <!-- 配置公网客户端 -->
<jaxws:client id="mobileClient"
address="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx"
serviceClass="cn.itcast.mobile.MobileCodeWSSoap"/> // 7. 配置 web.xml
// 参照 CXF+Spring 整合发布SOAP协议服务
// 配置 MobileServlet
<servlet>
<servlet-name>mobileServlet</servlet-name>
<servlet-class>cn.itcast.mobile.server.servlet.MobileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>mobileServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>

参考资料

WebService 综合案例的更多相关文章

  1. WebService入门案例

    关于WebService的作用和好处,大家应该都了解.但如何在Asp.Net中添加Web Service等问题一直是新手朋友的一大难题.鉴于网上没有一个像样的实际案例,特将课程设计中运用到的WebSe ...

  2. JavaScript:综合案例-表单验证

    综合案例:表单验证 开发要求: 要求定义一个雇员信息的增加页面,例如页面名称为"emp_add.htmnl",而后在此页面中要提供有输入表单,此表单定义要求如下: .雇员编号:必须 ...

  3. DOM综合案例、SAX解析、StAX解析、DOM4J解析

    今日大纲 1.DOM技术对xml的增删操作 2.使用DOM技术完成联系人管理 3.SAX和StAX解析 4.DOM4J解析 5.XPATH介绍 1.DOM的增删操作 1.1.DOM的增加操作 /* * ...

  4. JavaEE Tutorials (30) - Duke综合案例研究示例

    30.1Duke综合应用的设计和架构456 30.1.1events工程458 30.1.2entities工程459 30.1.3dukes—payment工程461 30.1.4dukes—res ...

  5. jquery-easyUI第二篇【综合案例】

    基于easyUI开发的一个综合案例模版 <%@ page language="java" pageEncoding="UTF-8"%> <!D ...

  6. CSS3_综合案例

    综合案例 设置元素的 width,还可以利用 left 和 right 为了防止图片太小,background-size: 100% 100%; <!DOCTYPE html> <h ...

  7. Angular路由与多视图综合案例

    Ajax请求存在的几个问题 (1)Ajax请求不会留下History 记录,会导致浏览器后退按钮失效 (2)用户无法直接通过URL进入应用中的指定页面(保存书签.链接分享给朋友) (3)Ajax对SE ...

  8. Winform开发框架中的综合案例Demo

    在实际的系统开发中,我们往往需要一些简单的的案例代码,基于此目的我把Winform开发框架中各种闪光点和不错的功能,有些是我们对功能模块的简单封装,而有些则是引入了一些应用广泛的开源组件进行集成使用, ...

  9. 【原创 Hadoop&Spark 动手实践 13】Spark综合案例:简易电影推荐系统

    [原创 Hadoop&Spark 动手实践 13]Spark综合案例:简易电影推荐系统

随机推荐

  1. clone和lambda的一个小问题和解决

    起因是这样,某管理器类有两个集合,A集合是模板集合,B集合是从模板中实例出的集合. 但是B集合的一些东西,总会调用A集合中的,导致出错. 一开始考虑clone使用不当,但检查后没发现什么问题,后来发现 ...

  2. Jetty - Connector源码分析

    1. 描述 基于Jetty-9.4.8.v20171121. Connector接受远程机器的连接和数据,允许应用向远程机器发送数据. 1.2 类图 从类图看出AbstractConnector继承C ...

  3. Python format 格式化函数 格式化字符串

  4. 基于ffmpeg 直播推流和播放rtmp (IOS源码)

    ios直播推流每秒能达到30帧,比安卓要强,视频采用软编码的话手机会发烫,得采用码编码,播放视频采用opengl渲染. ffmpeg初始化代码如下: int init_Code(int width, ...

  5. 详解C#中通过委托来实现回调函数功能的方法

    委托:类型安全的指向函数的指针 使用步骤 1:声明一个委托 delegate string DelString(string s) 2:定义一个委托变量 DelString del = new Del ...

  6. 偶遇 sqlserver 参数嗅探

    需求: 费用统计 环境: 查询设计多张大表 解决方案: 优化查询语句,封装成存储过程,建立索引,最终查询速度很不错.部署上线,告一段落... 一段时间后投诉来了... 客户投诉说查询没内容,我看了日志 ...

  7. springBoot文档地址

    文档: https://www.gitbook.com/book/qbgbook/spring-boot-reference-guide-zh/details 配置: http://docs.spri ...

  8. 如何 “解决” WPF中空域问题(Airspace issuse)

    空域问题是由于Winform与WPF在底层渲染机制上有所区别而导致的.多数情况下,开发者为了实现不规则的窗体并承载Winform控件时,遇到此类问题.当WPF窗体设置为允许透明(也就是AllowsTr ...

  9. 【理财】阅读:Millionaire Teacher

    书是本好书,就是翻译的中文书名让人无力吐槽了,叫<拿工薪,三十几岁你也能赚到600万>,浓浓的畅销书架味道有木有. 这本书作者极力推崇指数基金,以及全球极简投资配置策略.重点梳理了一下: ...

  10. jdk从1.8降到1.7的办法

    jdk从1.8降到1.7的办法 正常情况下,JDK的升降级只需更改环境变量即可,可是到了1.8版本,oracle使了一点小手段--在系统Path中添加一条变量C:/ProgramData/Oracle ...