基于CBR的自来水经济调度--理论及实现.ppt_第1页
基于CBR的自来水经济调度--理论及实现.ppt_第2页
基于CBR的自来水经济调度--理论及实现.ppt_第3页
基于CBR的自来水经济调度--理论及实现.ppt_第4页
基于CBR的自来水经济调度--理论及实现.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章 JSP 应用实战进阶 龚涛 东华大学信息科学与技术学院 2012年3月 教材:JSP程序员成长攻略 网上课程:/taogong 6.2 城市天气信息查询系统 v很多网站都提供了显示天气信息的功能 v这些天气信息一般从气象网站上获取 v这里面采用了网上资源自动获取技术 v这节课利用JSP技术设计城市天气信息 查询系统,可用于个人网站上 6.2.1 设计思路 v从最权威的 “中国天气网”获取天气预报信息 v这个网站提供了查询接口参数,例如北京天气 : /weather/101010100.shtml v目的是将查询结果中有关天气信息的部分嵌入 到我们自己的网页中 v想设计一种工具,按照指定的网址(URL)将 对应的天气预报页面信息下载到本地,然后通 过这种“工具”提取需要的天气信息 三步走 (1)利用待查询天气信息的城市名构造URL: /weather/城市编码.shtml (2)通过URL类将指定的页面信息下载到本地 ; (3)对已下载的信息进行文本分析,提出相关 的天气预报信息。 6.2.2 URL和URLConnection类 v使用URL类和URLConnection类提供的方法, 可以有效自动获取网络资源。 v在编写Java程序时,需将.*包导入才能 使用这两个类。 public URL(String spec) throws MalformedURLException v该方法是利用spec来构造一个URL 对象。 MalformedURLException表示产生错误时抛出 的异常。 URL类的set方法 vset方法用于设置 URL 的字段,语法格式如下 : protected void set(String protocol, String host, int port, String file, String ref) vprotocol表示使用的协议,host表示连接的主 机名,port表示连接的协议端口,file表示在 主机上指定的文件名,ref表示标记。 getPort、getProtocol和getHost方法 vgetPort方法用于获取URL 的端口号。若端口 没有设置,则返回 -1。 public int getPort() vgetProtocol方法用于获取URL 的协议名。 public String getProtocol() vgetHost方法用于获取URL的主机名。 public String getHost() getFile、getRef和toString方法 vgetFile方法用于获取URL 的文件名。 public String getFile() vgetRef方法用于返回URL 的热点。 public String getRef() vtoString方法用于构造 URL 的字符串表示。 public String toString() openConnection 和openStream方法 vopenConnection方法返回一个连接到由URL 指定的远程对象的URLConnection对象。如 果远程对象不存在则抛出异常IOException。 在编写程序中,必须捕获该异常,否则会出 现编译错误。 public URLConnection openConnection() throws IOException vopenStream方法用于用于打开URL指向的连 接,并返回从该连接读取数据的InputStream 。 public final InputStream openStream() throws IOException URLConnection类的常用方法 vgetURL方法用于返回URLConnection 的 URL 值。 public URL getURL() vgetContentLength 方法返回该连接URL所指 向资源的内容长度。 public int getContentLength() vgetContentType方法返回URL 指向资源的内 容类型,若未知则为null。 public String getContentType() URLConnection类的常用方法 vgetContentEncoding方法用于返回URL指向资 源的内容编码,若未知则为null。 public String getContentEncoding() vgetExpiration方法返回URL指向资源的终止 日期,若未知则为0。 public long getExpiration() vgetDate方法返回URL 指向资源的发送日期, 若未知则为0。 public long getDate() URLConnection类的常用方法 vgetLastModified方法用于返回URL指向的资 源的最后修改日期,若未知则为0。 public long getLastModified() vgetContent方法获取URL 指向的资源的内容 。 public Object getContent() throws IOException vgetInputStream方法用于获取从该打开的连接 读取的输入流。 public InputStream getInputStream() throws IOException 例1 显示搜狐网站连接的属性 vURL url=new URL(““); vURLConnection c=url.openConnection(); v System.out.println(“内容类型:“+c.getContentType(); v System.out.println(“内容编码: “+c.getContentEncoding(); v System.out.println(“内容长度: “+c.getContentLength(); v System.out.println(“创建日期: “+new Date(c.getDate(); v System.out.println(“最后修改日期: “+new Date(c.getLastModified(); v System.out.println(“终止日期: “+new Date(c.getExpiration(); 例1的Java完整程序源代码(1) /* ShowConnectionExample.java文件 */ import .*; import java.io.*; import java.util.Date; public class ShowConnectionExample public ShowConnectionExample() public static void main(String args) try URL url=new URL(““); 例1的Java完整程序源代码(2) try URLConnection c=url.openConnection(); System.out.println(“内容类型: “+c.getContentType(); System.out.println(“内容编码: “+c.getContentEncoding(); System.out.println(“内容长度: “+c.getContentLength(); System.out.println(“创建日期: “+new Date(c.getDate(); System.out.println(“最后修改日期: “+new Date(c.getLastModified(); System.out.println(“终止日期: “+new Date(c.getExpiration(); 例1的Java完整程序源代码(3) catch(IOException io2) System.out.println(“IOException异常:“+io2.toString(); catch(MalformedURLException e) System.out.println(“MalformedURLException异常: “+e.toString(); 例1程序的运行结果 6.2.3 开发JWeather类 vJWeather类是利用URL和URLConnection类的 常用方法来实现的,其功能是下载指定的网络 资源,下载的结果就是一个字符串(String) 。 v通过构造一个Java Bean来实现此功能,此 Java类的文件名为JWeather.java 。 v在JWeather.java文件中,定义了一个函数 getWeatherInfo(),其作用是返回由URL指定 资源的内容。 Weather.java程序源代码(1) /*JWeather.java文件 */ package ch6; import .*; import java.io.*; public class JWeather URL url; String city=“上海“; URLConnection urlc; public JWeather() public void setCity(String s) this.city=s; Weather.java程序源代码(2) public String getWeatherInfo() String txtContent=“, citynumber=“; if(city.equals(“上海“) citynumber=“101020100“; try URL url=new URL(“ /wap/weather/“ +citynumber+“.shtml“); Weather.java程序源代码(3) URLConnection urlc=url.openConnection(); urlc.connect(); InputStream is=null; int ch; try is = urlc.getInputStream(); ch = is.read(); while(ch!=-1) txtContent=txtContent+(char)ch; ch=is.read(); Weather.java程序源代码(3)的改进 URLConnection urlc=url.openConnection(); urlc.connect(); InputStream is=null; int ch; try / 取得输入流,并使用Reader读取 BufferedReader reader = new BufferedReader(new InputStreamReader( urlc.getInputStream(), “utf-8“); /设置编码,否则中文乱码 ch=reader.read(); while(ch!=-1) txtContent=txtContent+(char)ch; ch=reader.read(); reader.close(); Weather.java程序源代码(4) is.close(); catch(IOException io) txtContent=“IO Exception:“+io.toString(); return txtContent; catch(IOException e) txtContent=“IO Exception:“+e.toString(); return txtContent; Weather.java的编译 6.2.4 文本数据处理方法 v下载后的数据实际上是HTML网页代码,包含 文字信息和HTML标记,是一种非结构化数据 。对此,我们首先应将无关和冗余的信息删除 ,然后才方便提取我们需要天气预报信息。 v假设下载的文本数据存放在webtext变量中: String webtext=weather.getWeatherInfo(); (1)提取和之间的数据。 从前面介绍的HTML语言知道,天气预报信息 应包含在标记和之间。 Filterweb源代码(1) 文本数据处理方法 (2)过滤其他无关字符 webtext = webtext.replace(“ “,“); /过滤特殊字符 webtext = webtext.replace(“,“); /过滤特殊字符 webtext = webtext.replace(“ “,“); /过滤空格 webtext = webtext.replace(“n“,“); /过滤换行符 webtext = webtext.replace(“ /过滤;“,“;“); /去掉紧连的双分号 (3)过滤提取内容的相应HTML格式标记 w1 = filterweb(w1,); /过滤网页中的HTML标记,其中w1可换为w2、w3、w4、w5 6.2.5 提取天气预报信息 v假设是查询上海的天气预报信息,则对下载的 数据执行上述所有操作后得到如下图的文

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论