`

JAVA之URL (转载)

 
阅读更多

JAVA之URL

一、用JAVA实现URL
  在JAVA中,Java.net包里面的类是进行网络编程的,其中java.net.URL类和java.net.URLConection类使编程者方便地利用URL在Internet上进行网络通信。

1、创建URL对象
  URL类有多种形式的构造函数:
(1) URL ( String url)
  
//url代表一个绝对地址,URL对象直接指向这个资源,如:
  URL urll=new URL(http://www.cqwu.edu.cn);

(
2) URL ( URL baseURL , String relativeURL)
 
// 其中,baseURL代表绝对地址,relativeURL代表相对地址。如:
  URL urll=new URL(http://www.cqwu.edu.cn);
  URL lib=new URL(urll , "library / library.asp");

(
3) URL ( String protocol , String host , String file)
  
//其中,protocol代表通信协议,host代表主机名,file代表文件名。如:
  new URL ("http" , www.cqwu.edu.cn, "/ test / test.asp");

(
4) URL ( String protocol , String host , int port , String file)
  URL lib 
= new URL ("http" , www.cqwu.edu.cn, 80 , "/ test / test.asp");


2、获取URL对象的属性
  getDefaultPort(): 返回默认的端口号。
  getFile(): 获得URL指定资源的完整文件名。
  getHost(): 返回主机名。
  getPath(): 返回指定资源的文件目录和文件名。
  getPort(): 返回端口号,默认为-1。
  getProtocol(): 返回表示URL中协议的字符串对象。
  getRef(): 返回URL中的HTML文档标记,即#号标记。
  getUserInfo: 返回用户信息。
  toString: 返回完整的URL字符串。


二、Internet寻址
  java.net包可以用32位int形式来操作32位的IP地址(即Internet主机地址)。类InetAddress实际上是可以把Internet地址换算成代表该地址的对象。Java就是靠这个类来显示Internet地址已经相关信息的。
  InetAddress有以下常用方法:
  getAddress(): 返回IP地址的字节形式。
  getAllByName(): 返回指定主机名的IP地址。
  getbyAddress(): 返回指定字节数组的IP地址形式。
  getByName(): 返回指定主机名的IP地址对象。
  getHostAddress(): 返回主机地址的字符串形式。
  getLocalHost(): 返回当前主机名。
  hastCode(): 返回InetAddress对象的哈希码。
  toString: 返回地址转换成的字符串。
  InetAddress类没有提供返回构造函数,所以不能用new()方法来创建它的对象,而只可以调用静态方法getLocalHost()、getByName()、getByAddress()等来生成InetAddress类的实质。

程序代码 程序代码

import java.net.*;
import java.io.*;
public class InetAddDemo //extends Applet
{
 
public void testOperate()
 
{
  
try
  
{
   InetAddress address
=InetAddress.getLocalHost();
   log(
"本机地址字符串:"+address.getHostAddress());
   log(
"本机主机名:"+address.getHostName());
   log(
"本机主机名:"+address.getLocalHost());
   log(
"哈希码:"+address.hashCode());
   
byte b[]=address.getAddress();
   System.out.println(
"字符形式:"+b);
   log(
"地址字符串:"+address.toString());
  }

  
catch(Exception e)
  
{
   
//e.printStackTrace("不能打开这个URL");
  }

 }

 
 
public void log(String strInfo)
 
{
  System.out.println(strInfo);
 }

 
 
public static void main(String args[])
 
{
  InetAddDemo IAdd
=new InetAddDemo();
  IAdd.testOperate();
 }

}




结果:

本机地址字符串:192.9.200.108
本机主机名:s5
本机主机名:s5
/192.9.200.108
哈希码:
-1073100692
字符形式:[B@f4a24a
地址字符串:s5
/192.9.200.108

有两种方法可以用来访问Internet。一是利用URL类的openStream()方法;二是使用openConnection()方法创建一个URLConnection类的对象。
  其中,方法openStream()与指定的URL建立连接并返回InputStream类的对象,以从这一连接中读取数据。




import java.net.*;
import java.io.*;

public class ReadURL
{
 
public static void main(String args[]) throws Exception
 
{
  
try
  
{
   URL url
=new URL("http://www.baidu.com");
   InputStreamReader isr
=new InputStreamReader(url.openStream());
   BufferedReader br
=new BufferedReader(isr);
  
   String str;
   
while((str=br.readLine())!=null)
   
{
    System.out.println(str);
   }

  
   br.close();
   isr.close();
   }

   
catch(Exception e)
   
{
    System.out.println(e);
   }

 }

}



结果:
<html><head><title>百度一下,你就知道   </title><meta http-equiv=Content-Type content="text/html;charset=gb2312">
<style>body{}{margin:4px 0 4px 0;}img{}{border:0}td,p{}{font-size:12px}p{}{width:600px;margin:0;padding:0}.kw{}{font-family:Verdana;font-size:16px;height:1.78em;padding-top:2px;}
#b 
{}{width:600px;height:30px;padding-top:4px;color:#77c;font-size:12px;font-family:Arial}#b a{}{color:#77c;font-size:12px}
#usrbar
{}{padding-right:10px;line-height:19px;font-size:12px;font-family:Arial;text-align:right;white-space:nowrap;margin-bottom:3px !important;margin-bottom:10px;}
.sb
{}{height:2em;width:5.6em;font-size:14px;}#km{}{font-size:14px;height:50px;}a{}{font-family:arial}#km a{}{font-family:宋体}
#l
{}{font-size:14px;font-family:arial;width:600px;text-align:left;margin-bottom:5px}
#l tr td
{}{text-align:left;font-family:arial;}
#l tr td div
{}{font-size:14px;margin-left:92px;width:22.1em;text-align:center;}</style><script>
function h(obj,url){obj.style.behavior='url(#default#homepage)';obj.setHomePage(url);}
function g(){var ls=location.search;if(ls.indexOf("q=")!=-1){try{var q=(ls.match(new RegExp("q=[^&$]*")).toString());document.f.wd.value=decodeURIComponent(q.substr(2));}catch(e){}}}
function s(o,p){if(document.f.wd.value.length>0){var oh=o.href;var qw=encodeURIComponent(document.f.wd.value);if(oh.indexOf("q=")!=-1){o.href=oh.replace(new RegExp("q=[^&$]*"),"q="+qw);}else{var s=p?"&":"?";o.href=o.href+s+"q="+qw};}}</script></head>
<body text=000000 link=0000cc vlink=0000cc alink=ff6600>
<div id="usrbar"><script language="JavaScript">document.write('<a href="http://passport.baidu.com/?login&tpl=mn&u='+escape(location.href)+'">登录</a>');</script></div>
<center><href=http://hi.baidu.com/baidu target=_blank><img src=http://www.baidu.com/img/logo.gif width=174 height=59 alt="点此进入 百度空间" ></a><br><br><br><br>
<table border="0" cellpadding="0" cellspacing="0" id="l" ><tr><td><div><href="http://news.baidu.com" onclick="return s(this);">&nbsp;</a>&nbsp;&nbsp;&nbsp;&nbsp;<strong>&nbsp;</strong>&nbsp;&nbsp;&nbsp;&nbsp;<href="http://post.baidu.com/f?ct=486539264&cm=58580&tn=baiduForumIndex" onclick="return s(this,1);">&nbsp;</a>&nbsp;&nbsp;&nbsp;&nbsp;<href="http://zhidao.baidu.com" onclick="return s(this);">&nbsp;</a>&nbsp;&nbsp;&nbsp;&nbsp;<href="http://mp3.baidu.com" onclick="return s(this);">MP3</a>&nbsp;&nbsp;&nbsp;&nbsp;<href="http://image.baidu.com" onclick="return s(this);">&nbsp;</a></div></td></table>
<table width=600 border=0 cellpadding=0 cellspacing=0><tr valign=top><td width=92></td><td height=62> <form name=f action=/s><input type=text name=wd class=kw size=36 maxlength=100><script>document.f.wd.focus();g()</script><input type=hidden name=cl value=3>  <input type=submit value=百度一下 class=sb><br><br></form></td><td width=100><href=/search/jiqiao.html>帮助</a><br><href=/gaoji/advanced.html>高级</a></td></tr></table>
<id=km>&nbsp;<href="http://hi.baidu.com/">空间</a>&nbsp;|&nbsp;<href="http://www.baidu.com/more/">更多>></a></p>
<style=height:60px;>&nbsp;</p>
<style=height:30px;><onclick="h(this,'http://www.baidu.com')" href=http://utility.baidu.com/traf/click.php?id=215&url=http://www.baidu.com>把百度设为首页</a></p>
<style=height:14px;><href=http://jingjia.baidu.com/>企业推广</a> | <href=http://top.baidu.com/>搜索风云榜</a> | <href=/home.html>关于百度</a> | <href=http://ir.baidu.com>About Baidu</a></p><id=b>&copy;2007 Baidu <href=http://www.baidu.com/duty/>使用百度前必读</a> <href=http://www.miibeian.gov.cn/ target=_blank>京ICP证030173号</a> <href=http://www.hd315.gov.cn/beian/view.asp?bianhao=010202001092500412><img src=http://gimg.baidu.com/img/gs.gif></a></p></center></body></html>


  上例首先创建URL对象url,并在其基础上打开输入流获取InputStreamReader对象,再由此对象创建BufferedReader对象br,从br中读取数据即可得到url所指定的资源文件。
  上面的openStream()方法只能读取网络资源,若要既能读取又能发送数据,则要用到URL类的openConnection()方法来创建一个 URLConnection类的对象,此对象在本地机和URL指定的远程节点建立一条HTTP协议的数据通道,可进行双向数据传输。
  类URLConnection提供了很多设置和获取连接参数的方法,最常用到的是getInputStream()和getOutputStream()方法,如:

  URL sum=new URL("http://java.sum.com/cgi-bin/backwards");
  URLConnection suncon=buaa.openConnection();
  sumcon.setDoOutput(true);
  DataInputStream dis=new DataInputStream(suncon.getInputStream());
  PrintStream ps=new PrintStream(suncon.getOutputStream());
  String str=dis.readLine();
  ps.println("来自客户机的信息:.......");
注:http://www.blogjava.net/baoyaer/articles/120422.html
分享到:
评论

相关推荐

    JAVA数据库连接大全-转载

    这篇博客"JAVA数据库连接大全-转载"可能详细介绍了在Java中如何管理和使用数据库连接,包括使用JDBC API,数据库连接池以及相关的工具。这里我们将深入探讨JDBC、数据库连接池的重要性和配置方法。 1. **JDBC基础**...

    java连接HighGo DB

    文档中的代码示例包含了版权声明,表明代码由山东瀚高科技有限公司版权所有,且仅允许不作任何修改的转载和转发。这强调了对于代码示例的知识产权保护,以及对代码使用时的注意事项。 5. 标签“Highgo DB” 此标签...

    基于java的二手交易系统

    Java版本:1.8 数据库:MySQL 框架:Spring + Spring MVC + MyBatis 服务器:Tomcat 前端解析框架:Thymeleaf 开发工具:Idea 2017 版本管理工具:Maven 版本控制工具:GitHub 搭建数据库 MySQL driver=...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    《Java-Web应用开发基础》综合练习3.docx

    对于Servlet,重复的请求不会导致同一程序的屡次转载,它是依靠线程的方式来支持并发访问的。 4. JSP:JSP(Java Server Page)是一种实现普通静态HTML和动态页面输出混合编码的技术。从这一点来看,非常类似...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    同时,转载时不要移除本申明。如产生任何纠纷,均与本博客所有人、发表该文献之人无任何关系。谢谢合作 本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地...

    使用urlconnection下载文件或图片并保存到本地

    import java.net.URL; import java.net.URLConnection; /** * 使用URLConnection下载文件或图片并保存到本地。 * * @author 老紫竹(laozizhu.com) */ public class URLConnectionDownloader { ...

    页面刷新方法汇总(转载)

    URL='http://example.com/'"&gt;`,5秒后会跳转到指定URL。 - **AJAX轮询**:利用Ajax技术,定时向服务器发送请求,检查是否有新数据。如果有,就在客户端更新页面,而无需整个页面刷新。 - **WebSockets**:实现实时...

    webfilter的教程

    `[转载]java web开发中的listener和filter`文件可能会介绍`Listener`,它们是另一种类型的Web组件,监听特定的事件,如会话创建或销毁,然后执行相应的操作。 `javax_servlet_Filter`的使用教程可能深入讨论了`...

    Java安卓仿QQ源码-TestAndroidCrawler:网络爬虫技术Jsoup的使用,来获取大众点评健身场馆的有关数据

    并同步发表到csdn博客,欢迎转载,2016年12月11日。 概述: 本周五,接到一个任务,要使用爬虫技术来获取某点评网站里面关于健身场馆的数据,之前从未接触过爬虫技术,于是就从网上搜了一点学习资料,本篇文章就记录...

    jstl源代码,转载内容

    1. **Core标签库**: Core库是JSTL的基础,提供了控制流、条件语句、循环、URL处理等功能。例如,`&lt;c:if&gt;`用于条件判断,`&lt;c:forEach&gt;`用于循环遍历集合,`&lt;c:import&gt;`用于导入外部资源,`&lt;c:set&gt;`用于设置变量等。 ...

    Servlet和Struts2的交互(转载)

    这可能是重定向到另一个URL,或者是渲染一个视图。 5. **拦截器**:Struts2的拦截器允许在Action执行前或执行后执行额外的逻辑,增强了框架的可扩展性。 6. **配置管理**:Struts2通过struts.xml配置文件来定义...

    HTML播放海康视频的RTSP视频流

    这里的"rtsp://your_rtsp_url"需要替换为实际的海康威视设备的RTSP URL。 另外,还可以使用如ijkplayer这样的开源播放器,它支持在Web环境下通过WebSocket将RTSP流转化为HTTP流,从而在HTML5的video标签中播放。...

    hsqldb使用(转载)

    例如,可以设置一个名为`test`的URL ID,指向`jdbc:hsqldb:hsql://localhost:9002/t`,并根据需要进行个性化修改。 HSQldb的灵活性和易用性使其成为开发人员的首选数据库之一,特别是在快速迭代和测试环境中。其...

    安卓java发送qq邮件完整源码-jsoup:是p

    并同步发表到csdn博客,欢迎转载,2016年12月11日。 概述: 本周五,接到一个任务,要使用爬虫技术来获取某点评网站里面关于健身场馆的数据,之前从未接触过爬虫技术,于是就从网上搜了一点学习资料,本篇文章就记录...

    网络爬虫技术Jsoup的使用,来获取大众点评 健身场馆的有关数据.zip

    来获取大众点评 健身场馆的有关数据测试AndroidCrawler网络爬虫技术Jsoup的使用,来获取大众点评 健身场馆的有关数据本文由我的微信公众号(bruce常)原创首发, 并同步发表到csdn博客,欢迎转载,2016年12月11日。...

    java版商城源码下载-xdmala::rolling_on_the_floor_laughing:前端blog

    关于url:目前发现不能有空格,不能用括号…… 常见问题: 一些思考: 看过的电影: ★TODO ★Repositories ★常去站点 ★工具 ★开发文档 ★转载 ★二次加工 ★基础知识 ★其它在线课资源 :OK_hand: ★面试题 ★...

Global site tag (gtag.js) - Google Analytics