通过 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 ...
随机推荐
- Python知识点进阶——迭代器
可迭代对象 可迭代对象可以简单的理解为用for循环遍历的,如list.tuple.dict.set.str 判断一个对象是否是迭代器: 可以将数据类型 和 是否为可迭代对象 比较来判断是否是可以迭代 ...
- 5分钟带你快速理解Http协议
HTTP协议 什么是HTTP协议 HTTP(Hyper Text Transfer Protocol)协议又叫超文本传输协议,是建立在TCP/IP协议之上的用来传递数据的协议.它不涉及数据包的传递,主 ...
- STM32位带操作
STM32的位带操作是基于cortex内核自带的,而不是st公司独创.基本的思路就是用一个32位的地址空间访问一个bit,因为stm32只支持32位数据的读取,不像51单片机一样,是可以单独对一位操作 ...
- 1022: [SHOI2008]小约翰的游戏John9(Auti_SG)
1022: [SHOI2008]小约翰的游戏John Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 3150 Solved: 2013[Submit] ...
- 驱动模块 .ko
模块: 模块机制,作用搞高LINUX操作系统的扩充性. 1. 模块概念: 1.动态可加载内核模块LKM 2.内核空间运行 3.是不是一执行文件,是一个没有经过链接,不能独立运行的一个目标文件(.c-& ...
- 数据库——MySQL进阶
1.索引 2.触发器 3.存储过程 4.函数 5.事务 6.视图 1.索引 索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构.类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位 ...
- 44、gridview实现下拉刷新、上拉加载更多(最简单实现上下拉操作的开源工程!)
1.工程加入以下两个文件夹:(参考:https://github.com/jingchenUSTC/PullToRefreshAndLoad) (待会我会将demo打包上传) 2.这个demo只有一个 ...
- day02_05.除数与被除数
第5题 除数与被除数 编程需要一定数学能力,在这看看你找到了几个有用条件, 又该如何来运用他们呢? 学习是互通的 题目:两个自然数相除,商3余10,被除数,除数,商,余数的和是163,求被除数,除数. ...
- URL 传参中需要处理的特殊字符
例如实际请求URL如下: http://www.douwansha.com/mdeditor?data=[{"address":null,"name":&quo ...
- DFS排列组合问题
这四个使用DFS来求解所有组合和排列的例子很有代表性,这里做一个总结: 1.不带重复元素的子集问题 public ArrayList<ArrayList<Integer>> s ...