<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    本站 JAVA 天氣預報實例

    大致步驟是
    1 利用soap向webservice endpoint進行請求,取回請求結果
    2 把結果顯示在web界面上,web界面采用Java+Jsp
    一 WeatherReport類
    方法 1 構造soap請求(請求格式請見上面的鏈接),用用戶輸入的城市名稱鑲在此請求里面

    java 代碼

    /**
    * 獲取SOAP的請求頭,并替換其中的標志符號為用戶輸入的城市
    *
    * 編寫者:王景輝
    *
    * @param city
    * 用戶輸入的城市名稱
    * @return 客戶將要發送給服務器的SOAP請求
    */
    private static String getSoapRequest(String city) {
    StringBuilder sb = new StringBuilder();
    sb
    .append("<?xml version=\"1.0\" encoding=\"utf-8\"?>"
    + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
    + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
    + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">"
    + "<soap:Body> <getWeatherbyCityName xmlns=\"http://WebXml.com.cn/\">"
    + "<theCityName>" + city
    + "</theCityName> </getWeatherbyCityName>"
    + "</soap:Body></soap:Envelope>");
    return sb.toString();
    }


    方法 2 向endpoint發送上述SOAP請求,并設置一些請求屬性,返回一個服務器端的InputStream(XML文檔流)

    java 代碼

    /**
    * 用戶把SOAP請求發送給服務器端,并返回服務器點返回的輸入流
    *
    * 編寫者:王景輝
    *
    * @param city
    * 用戶輸入的城市名稱
    * @return 服務器端返回的輸入流,供客戶端讀取
    * @throws Exception
    */
    private static InputStream getSoapInputStream(String city) throws Exception {
    try {
    String soap = getSoapRequest(city);
    if (soap == null) {
    return null;
    }
    URL url = new URL(
    "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx");
    URLConnection conn = url.openConnection();
    conn.setUseCaches(false);
    conn.setDoInput(true);
    conn.setDoOutput(true);

    conn.setRequestProperty("Content-Length", Integer.toString(soap
    .length()));
    conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
    conn.setRequestProperty("SOAPAction",
    "http://WebXml.com.cn/getWeatherbyCityName");

    OutputStream os = conn.getOutputStream();
    OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
    osw.write(soap);
    osw.flush();
    osw.close();

    InputStream is = conn.getInputStream();
    return is;
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }


    方法 3 解析方法2返回的XML文檔流,并用特定的符號分隔,以便我們在Jsp頁面進行結果分析

    java 代碼

    /**
    * 對服務器端返回的XML進行解析
    *
    * 編寫者:王景輝
    *
    * @param city
    * 用戶輸入的城市名稱
    * @return 字符串 用,分割
    */
    public static String getWeather(String city) {
    try {
    Document doc;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);
    DocumentBuilder db = dbf.newDocumentBuilder();
    InputStream is = getSoapInputStream(city);
    doc = db.parse(is);
    NodeList nl = doc.getElementsByTagName("string");
    StringBuffer sb = new StringBuffer();
    for (int count = 0; count < nl.getLength(); count++) {
    Node n = nl.item(count);
    if(n.getFirstChild().getNodeValue().equals("查詢結果為空!")) {
    sb = new StringBuffer("#") ;
    break ;
    }
    sb.append(n.getFirstChild().getNodeValue() + "#\n");
    }
    is.close();
    return sb.toString();
    } catch (Exception e) {
    e.printStackTrace();
    return null;
    }
    }

    二 weatherInfo.jsp頁面

    核心功能是解析 方法3 所返回的字符串,向endpoint進行請求時,一個XML文檔片段是

    xml 代碼


    <?xml version="1.0" encoding="utf-8" ?>
    <ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://WebXml.com.cn/">
    <string>湖南</string>
    <string>長沙</string>
    <string>57687</string>
    <string>57687.jpg</string>
    <string>2007-12-26 14:35:26</string>
    <string>7℃ / 6℃</string>
    <string>12月26日 小雨</string>
    <string>西北風<=3級</string>
    <string>7.gif</string>
    <string>7.gif</string>
    <string>今日天氣實況:多云;7.4℃;風向/風力:西北風2級;空氣質量:較差;紫外線強度:最弱</string>
    <string>穿衣指數:感冒指數:溫度較低,…… 請您在旅游時注意增加衣物。</string>
    <string>8℃ / 5℃</string>
    <string>12月27日 小雨</string>
    <string>西北風<=3級</string>
    <string>7.gif</string>
    <string>7.gif</string>
    <string>10℃ / 4℃</string>
    <string>12月28日 小雨</string>
    <string>西北風<=3級</string>
    <string>7.gif</string>
    <string>7.gif</string>
    <string>長沙市位于湖南省東部偏北, …… 市區年均降水量1361.6毫米。……<string>
    </ArrayOfString>


    在Jsp中解析的代碼如下,基本上是對字符串的操作,截取及截取長度的控制

    java 代碼

    //穿衣指數
    s1 = str.substring(str.indexOf("穿衣指數:"),str.indexOf("穿衣指數:")+4) ;
    s1Content = str.substring(str.indexOf("穿衣指數:")+5,str.indexOf("感冒指數:")) ;
    //感冒指數
    s2 = str.substring(str.indexOf("感冒指數:"),str.indexOf("感冒指數:")+4) ;
    s2Content = str.substring(str.indexOf("感冒指數:")+5,str.indexOf("晨練指數:")) ;

    //晨練指數
    s3 = str.substring(str.indexOf("晨練指數:"),str.indexOf("晨練指數:")+4) ;
    s3Content = str.substring(str.indexOf("晨練指數:")+5,str.indexOf("交通指數:")) ;
    //交通指數
    s7 = str.substring(str.indexOf("交通指數:"),str.indexOf("交通指數:")+4) ;
    s7Content = str.substring(str.indexOf("交通指數:")+5,str.indexOf("中暑指數:")) ;
    //中暑指數
    s4 = str.substring(str.indexOf("中暑指數:"),str.indexOf("中暑指數:")+4) ;
    s4Content = str.substring(str.indexOf("中暑指數:")+5,str.indexOf("防曬指數:")) ;
    //防曬指數
    s5 = str.substring(str.indexOf("防曬指數:"),str.indexOf("防曬指數:")+4) ;
    s5Content = str.substring(str.indexOf("防曬指數:")+5,str.indexOf("旅行指數:")) ;
    //旅行指數
    s6 = str.substring(str.indexOf("旅行指數:"),str.indexOf("旅行指數:")+4) ;
    s6Content = str.substring(str.indexOf("旅行指數:")+5) ;


    運行附件:http://localhost:8080/yourProject/tianqi.jsp

    好了,基本上核心代碼就是上邊那些了!不僅如此,加入我們想要在自己的系統里加入飛機票,火車票,股票信息等等之類的功能,只要有相應的webservice,我們都可以實現

    文檔來源 http://mhqawjh.javaeye.com/blog/150954

    源代碼 點擊下面現在下載按鈕

    這里感謝 技工窩 mhqawjh 博客地址 http://mhqawjh.javaeye.com/

    posted on 2009-04-08 14:25 找個美女做老婆 閱讀(1890) 評論(2)  編輯  收藏

    評論

    # re: 本站 JAVA 天氣預報實例 2012-12-25 11:20 dgqjava

    真心很垃圾~  回復  更多評論   

    # re: 本站 JAVA 天氣預報實例 2013-12-17 11:59 梁建民

    很好很實用  回復  更多評論   


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费黄色一级毛片| 免费专区丝袜脚调教视频| 国产男女猛烈无遮挡免费视频 | 亚洲色精品VR一区区三区| 精品无码国产污污污免费网站国产| 2020因为爱你带字幕免费观看全集 | 国产啪亚洲国产精品无码| 午夜在线亚洲男人午在线| 国产成人免费全部网站| 另类专区另类专区亚洲| 亚洲精品偷拍视频免费观看 | 抽搐一进一出gif免费视频| 亚洲无码高清在线观看| 中国极品美軳免费观看| 亚洲第一精品在线视频| 在线a免费观看最新网站| 亚洲色欲色欲www| 国产精品免费看久久久无码| 在线播放免费人成视频网站| 亚洲午夜久久久影院| 免费不卡在线观看AV| 亚洲天堂2017无码中文| 又粗又硬又大又爽免费视频播放| www.xxxx.com日本免费| 亚洲日韩图片专区第1页| 免费精品国偷自产在线在线 | 成人无码区免费A∨直播| 亚洲精品免费在线| 日韩免费a级在线观看| 日木av无码专区亚洲av毛片| 成人黄色免费网址| 国产亚洲午夜精品| 亚洲天堂在线播放| 日本一道综合久久aⅴ免费| 亚洲免费无码在线| 亚洲国产成人资源在线软件| 国产一区二区三区免费在线观看| 成人网站免费看黄A站视频| 国产色在线|亚洲| 亚洲综合色自拍一区| 毛片免费视频观看|