通过 jsp+ajax+servlet+webservice 远程访问天气预报服务
   - webservice 客户端访问的方式
     1. java代码来访问
     2. ajax 方式异步加载webservice

- 通过 ajax 异步加载 天气信息实现步骤:
     1. 了解远程第三方的天气预报webservice服务
        广东,31124   广州,2350   东莞,2351  深圳,2419   温度信息  String[8]
     2. wsimport 生成本地代理
     3. 准备一个index.jsp  页面,显示城市信息 ,下拉城市,显示天气信息  
     4. 准备一个weatherServlet ,通过它来访问webservcie
     5. Servlet要在web .xml注册

通过Jdk  
   声明 :@Webservice
     发布 :EndPoint
      不足: 希望tomcat启动时,webservice服务能够开启 ,最好与Spring集成
              希望有一个webservice的服务列表
   通过Webservice框架来实现 :axis2  、xfire

1.通过wsimport生成本地代理与打成jar包

wsimport http://ws.webxml.com.cn/WebServices/WeatherWS.asmx?WSDL

发现产生错误:

将源码考到本地,将错误行删除(15,61,101),然后存为xml文件后重新进行wsimport,发现只有三个警告,同时生成对应的class文件打成jar包。

C:\Users\liqiang\Desktop>wsimport weather.xml
parsing WSDL... [WARNING] Ignoring SOAP port "WeatherWSSoap12": it uses non-standard SOAP 1.2 bi
nding.
You must specify the "-extension" option to use this binding.
line 533 of file:/C:/Users/liqiang/Desktop/weather.xml [WARNING] ignoring port "WeatherWSHttpGet": no SOAP address specified. try runni
ng wsimport with -extension switch.
line 536 of file:/C:/Users/liqiang/Desktop/weather.xml [WARNING] ignoring port "WeatherWSHttpPost": no SOAP address specified. try runn
ing wsimport with -extension switch.
line 539 of file:/C:/Users/liqiang/Desktop/weather.xml Generating code... Compiling code... C:\Users\liqiang\Desktop>jar -cvf weather.jar ./cn

2.index.jsp:选择地区的时候异步请求天气情况

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<script type="text/javascript" src="jquery-1.8.2.js"></script>
</head> <body>
<select id="province">
<option value="31124">广东省</option>
</select>
<select id="city">
<option value="2350">广州</option>
<option value="2419">深圳</option>
<option value="2351">东莞</option>
</select>
<hr/>
<span>XXXX</span>
<script type="text/javascript">
$("#city").change(function(){
var city=$("#city option:selected").val();
$.post("weatherServlet",{"city":city},function(backdata){
$("span").text(backdata).css("color","blue");
});
});
</script>
</body>
</html>

3.接收请求的servlet

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import cn.com.webxml.WeatherWS;
import cn.com.webxml.WeatherWSSoap; public class WeatherServlet extends HttpServlet {
private WeatherWS ws; public WeatherServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String cityCode=request.getParameter("city");
System.out.println("获取城市的id"+cityCode);
//通过webservice获取远程的天气预报信息
WeatherWSSoap weatherWSSoap = ws.getWeatherWSSoap();
List<String> weathers = weatherWSSoap.getWeather(cityCode, "").getString();
String weather=weathers.get(8);//取得温度信息 //把结果回显给页面
response.setContentType("text/html;charset=UTF-8");
PrintWriter printWriter=response.getWriter();
printWriter.write(weather);
printWriter.flush();
printWriter.close(); } public void init() throws ServletException {
// Put your code here
ws=new WeatherWS();
} }

效果:

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKIAAABiCAIAAABceJ/4AAADTklEQVR4nO2cW26DMBBF2Rn77G+Sj5BkDewoQtmA+1EJUbDHY4/BJvceVVXABnvmMIb0kc4RALraEyBHQM0QUDME1AwBNUNAzRBQMwTUDEFE8/v9fjwe99MyDMM0TZpENBupPoR8zZfLxThAdV6vl6Zby5EqQxCIaL7f78YBqqMMoeVI7XOj5rRuVaivueviD3GaPqk99ZTSHJ2bt0ORiOprdrnxeztsX9gpWM3yrLyTP7HmTkTTJ5SIv9fL73YsmpUhzJ1XL9zZNScMoKuAeTMpR33fL/Pe9/22j1Gz5tjVdVkrBGmGcrNRszfyUM+MC38cx2WOxnHc9jlS83Y1ip6hYAjSDOVme/DyIUmrope5Grx14PbXvLqUlzNXRlEqBGmScrNRs9Kf94TKUeZq8NaBO6SaV5011/eSUiFIc5Ob7cFrDrFUs3Ou7/tQHbgzaHaFQhA4+t6sL1z9KOM4hurAHaU5pFa/JtlDEKhwb/Yu2pZqljmFZpl2Na/6JG3qR9Fw2JO2d/OsmvNuzLvem2WyNec5zjuJTBM/7Gwc/urCUXNqtyrsrnkYBuMA1bler5puLUeqDEEgonmaptvtZv9Ll1o8n8/P56NJRLOR6kPI10y+A2qGgJohoGYIqBkCaoaAmiGgZgioGQJqhiCo+Yd8EZLmN/kWuGhDQM0QUDME1AwBNUNAzRBQMwTUDAE1Q1BSc9e5HT4ipt1xT0Sx9MyJXmb8T8D8tWo99bjnYi/N3gqTyy7PhH1cBKIfCfKvJrY7l03L0gmlVbnfO26ov2VcEOT/5vNvRlOWUbIrbfIhIZ3Fl4qvobzmvBXSrpkrs0ATmqMn3G5ScxIJiVndg4WVs6Bm/aVGzQL6z9aIv573JKVbuFt7T15qXCiUn7uQ0FpK87a17OUFRTwxqc/VZTW7wM0i9DaPeIm/b47uFJbW+PBZ50/aSZz9STv1KSxDYZJm/njES0SzvELKT8jRKo8eLrw/llvlcQHZNwFRJVXGBYQ5gICaIaBmCKgZAmqGgJohoGYIqBkCaoaAmiGgZgioGQJqhoCaIaBmCKgZAmqGgJohoGYIqBkCaoaAmiGgZgioGQJqhoCaIaBmCKgZAmqGgJohoGYIqBkCaobgF5sTRpQjUTtIAAAAAElFTkSuQmCC" alt="" />

通过 jsp+ajax+servlet+webservice 远程访问天气预报服务的更多相关文章

  1. jsp+ajax+servlet+jquery从后台取json数据示例

    <span style="font-size:18px;"><%@ page language="java" import="jav ...

  2. WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)

    还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...

  3. ajax调用webservice服务

    ajax调用是 html方向调用的, 而sqlconnection是 java代码调用的,本质差不多 <html> <head> <title>通过ajax调用we ...

  4. Jquery AJAX 调用WebService服务

    对Jquery+JSON+WebService的一点认识 文章不错:http://www.cnblogs.com/tyb1222/archive/2011/10/13/2210549.html Jqu ...

  5. Spring+SpringMVC+Mybatis+Maven+CXF+WebService整合之服务端

    WebService服务端项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...

  6. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  7. Myeclipse+AJAX+Servlet

    最近刚开始学AJAX的知识,这里介绍一个简单的Myeclipse+AJAX+Servlet项目. 此项目包含3个文件:index.jsp.check.java.还有一个需要配置的文件是:web.xml ...

  8. Jquery ajax调用webservice总结

    jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers>      <remove verb ...

  9. Ajax调用WebService

    前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1 ...

随机推荐

  1. 五 python并发编程之IO模型

    一 IO模型介绍 同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问 ...

  2. Laravel 命令行常用命令

    一.简介 1.Artisan 是 Laravel 自带的命令行接口名称,它为我们在开发过程中提供了很多有用的命令.想要查看所有可用的Artisan命令,可使用list命令: php artisan l ...

  3. CMD终端关于pip报错,scrapy报错的一种处理方法

    CMD终端关于pip报错,scrapy报错的一种处理方法 如果在终端输入pip,或scrapy,报如下错误: Fatal error in launcher: Unable to create pro ...

  4. <html5 canvas>一个简单的矩形

    Html5: <!doctype html> <html> <head> <meta charset="UTF-8"> <ti ...

  5. Android 适配器 自定义

    前言:最近看了几个开源项目,发现适配器这东西用的很多,一开始觉得这东西高大上,其实呢,感觉就是一个中转站,或者说是一个接口工具,将数据填充到一个视图中,几乎任何项目都会涉及到.所以今天也简单看了一下, ...

  6. TCP/IP网络编程之I/O流分离

    分离I/O流 “分离I/O流”是一种常用表达,有I/O工具可以区分二者.无论使用何种办法,都可以认为分离I/O流.我们之前通过两种方法分离I/O流,第一种是TCP/IP网络编程之进程间通信中的“TCP ...

  7. 运维Python面试题

    本章内容 1 osodjfoskjdofjsdjfjsdf 123 sdfdfadf   1 2 3 4 5 6 from django.db import models     class user ...

  8. loj2065 「SDOI2016」模式字符串

    ref不是太懂 #include <iostream> #include <cstring> #include <cstdio> using namespace s ...

  9. centos使用--vsftpd配置

    目录 1 在服务器配置FTP服务 1.1 在root权限下,通过如下命令安装Vsftp(以CentOS系统为例): 1.2 在启动vsftpd服务之前,需要登录云服务器修改配置文件,禁用匿名登录. 1 ...

  10. Careercup - Microsoft面试题 - 24308662

    2014-05-12 07:31 题目链接 原题: I have heard this question many times in microsoft interviews. Given two a ...