通过 jsp+ajax+servlet+webservice 远程访问天气预报服务
通过 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 远程访问天气预报服务的更多相关文章
- jsp+ajax+servlet+jquery从后台取json数据示例
<span style="font-size:18px;"><%@ page language="java" import="jav ...
- WebService技术,服务端发布到Tomcat(使用Servlet发布),客户端使用axis2实现(二)
还是在WebService技术,服务端and客户端JDK-wsimport工具(一)的基础上实现.新建一个包:com.aixs2client.目录结构如下: 一.服务端: 1.还是使用com.webs ...
- ajax调用webservice服务
ajax调用是 html方向调用的, 而sqlconnection是 java代码调用的,本质差不多 <html> <head> <title>通过ajax调用we ...
- Jquery AJAX 调用WebService服务
对Jquery+JSON+WebService的一点认识 文章不错:http://www.cnblogs.com/tyb1222/archive/2011/10/13/2210549.html Jqu ...
- Spring+SpringMVC+Mybatis+Maven+CXF+WebService整合之服务端
WebService服务端项目结构: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h ...
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- Myeclipse+AJAX+Servlet
最近刚开始学AJAX的知识,这里介绍一个简单的Myeclipse+AJAX+Servlet项目. 此项目包含3个文件:index.jsp.check.java.还有一个需要配置的文件是:web.xml ...
- Jquery ajax调用webservice总结
jquery ajax调用webservice(C#)要注意的几个事项: 1.web.config里需要配置2个地方 <httpHandlers> <remove verb ...
- Ajax调用WebService
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1 ...
随机推荐
- 自动化运维之使用Python3收发电子邮件~~~附源码
一.背景介绍 1.1 一些专业名称的解释 MUA——Mail User Agent,邮件用户代理.是用户与电子邮件系统的交互接口,一般来说它就是我们PC机上的一个程序,提供一个好的用户界面,它提 ...
- c语言——字符串
char str[] = "http://c.biancheng.net"; char str[] = "http://c.biancheng.net"; ch ...
- CQRS之旅——旅程3(订单和注册限界上下文)
旅程3:订单和注册限界上下文 CQRS之旅的第一站 "寓言家和鳄鱼是一样的,只是名字不同" --约翰·劳森 描述: 订单和注册上下文有一部分职责在会议预订的过程中,在此上下文中,一 ...
- hdu1950Bridging signals(求最长上升自序列nlogn算法)
Bridging signals Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- package.json文件特殊符号含义
package.json文件里的^和~表示什么意思呢 In the simplest terms, the tilde matches the most recent minor version (t ...
- Hyper-V:利用差异磁盘安装多个Win2008
签于成本的原因,在学习了解一项新的技术或是产品时,在没有部署到生产环境之中前,大家都会选择在虚拟机来搭建一套实验环境.但如何快速搭建呢?如何节省磁盘空间呢? 说到此都不得不说下Hyper-V的差异磁盘 ...
- 关于html头部引用(meta,link)
/*这一段头部表示 如果安装了GCF,则使用GCF来渲染页面,如果为安装GCF,则使用最高版本的IE内核进行渲染.*/<meta content="IE=edge,chrome=1&q ...
- 赢友网络通用框架V10.0.0(WinuAppSoft) 基础框架设计表
/* * 版权所有:赢友网络(http://www.winu.net/) * 开发人员:新生帝(JsonLei) * 设计名称:赢友网络通用框架V10.0.0(WinuAppSoft) * 设计时间: ...
- Careercup - Microsoft面试题 - 6751316000899072
2014-05-12 07:10 题目链接 原题: Write a thread safe data structure such that there could be only one write ...
- RSA进阶之两个N的公约数
适用场景: 给你两个n,n1和n2. 两个数都很大,不好分解. 但是这数刚好有质数公因子(试试欧几里得辗转相除跑完之后,就是不断地相除就可以了,4000多位也是很快的),那不就相当于间接的分解出q或者 ...