通过 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 ...
随机推荐
- 14.3-ELK重难点总结和整体优化配置
本文收录在Linux运维企业架构实战系列 做了几周的测试,踩了无数的坑,总结一下,全是干货,给大家分享~ 一.elk 实用知识点总结 1.编码转换问题(主要就是中文乱码) (1)input 中的cod ...
- tcl之string操作-match/map/大小写转换
- 树莓派下ubuntu-mate中ssh服务的安装与开机后自启动
ssh程序分为客户端程序openssh-client和服务端程序openssh-server. 如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的.而如 ...
- DFS、栈、双向队列:CF264A- Escape from Stones
题目: Squirrel Liss liv Escape from Stonesed in a forest peacefully, but unexpected trouble happens. S ...
- ACM模板
#include <iostream> //万能头文件#include<bits/stdc++.h> 方便时用 #include <algorithm> #incl ...
- MySQL查询数据库中表名或字段名
查询数据库中所有表名 select table_name from information_schema.tables where table_schema='csdb' and table_type ...
- Diycode开源项目 MainActivity分析
1.分析MainActivity整体结构 1.1.首先看一下这个界面的整体效果. 1.2.活动源代码如下 /* * Copyright 2017 GcsSloop * * Licensed under ...
- lucene.NET详细使用与优化详解
lucene.NET详细使用与优化详解 http://www.cnblogs.com/qq4004229/archive/2010/05/21/1741025.html http://www.shan ...
- centOS6.6虚拟机启动后登陆界面无法显示
1.图一和图二对比就很明显发现,我的登陆界面不见了(突然断电导致不正常关机,造成图形界面桌面崩溃) 2.解决方法:启动按Ctrl+Alt+f2切换进命令行界面,root账号进入,重新下载图形界面
- Python学习-day14-CSS
前端二:CSS CSS: 一:介绍:学名层叠样式表(Cading Style Sheets)是一种用来表现HTML或者XML等文件的样式的计算机语言.让HTML和XML看起来更加美观. 语法:&l ...