java url api_深入阅读java api之URL
声明: 不是很有空,慢慢完善
1. 若创建的类的实例需要较大的灵活性,则通过反射来进行创建
2. 创建的类需要用指定的类载入器载入进来
3. new URL().openConnection() 若url为http类型的,则实际上就是新建一个HttpURLConnection对象
4. URLConnection对象的getInputStream()方法就是得到HttpURLConnection对象的InputStream成员
5. IO流的打开和关闭对性能影响不大,但是不应同时拥有过多IO流对象
/**
* method in class java.net.URL
*/
static URLStreamHandler getURLStreamHandler(String protocol) {
URLStreamHandler handler = (URLStreamHandler)handlers.get(protocol);
if (handler == null) {
boolean checkedWithFactory = false;
// Use the factory (if any)
if (factory != null) {
handler = factory.createURLStreamHandler(protocol);
checkedWithFactory = true;
}
// Try java protocol handler
if (handler == null) {
String packagePrefixList = null;
packagePrefixList
= java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction(
protocolPathProp,""));
if (packagePrefixList != "") {
packagePrefixList += "|";
}
// REMIND: decide whether to allow the "null" class prefix
// or not.
packagePrefixList += JDK_PACKAGE_PREFIX;
StringTokenizer packagePrefixIter =
new StringTokenizer(packagePrefixList, "|");
while (handler == null &&
packagePrefixIter.hasMoreTokens()) {
String packagePrefix =
packagePrefixIter.nextToken().trim();
// do not try to instantiate the JDK gopher handler
// unless the system property had been explicitly set
if (protocol.equalsIgnoreCase(GOPHER) &&
packagePrefix.equals(JDK_PACKAGE_PREFIX) &&
!enableGopher) {
continue;
}
try {
String clsName = packagePrefix + "." + protocol +
".Handler";
Class cls = null;
try {
cls = Class.forName(clsName);
} catch (ClassNotFoundException e) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
if (cl != null) {
cls = cl.loadClass(clsName);
}
}
if (cls != null) {
handler =
(URLStreamHandler)cls.newInstance();
}
} catch (Exception e) {
// any number of exceptions can get thrown here
}
}
}
synchronized (streamHandlerLock) {
URLStreamHandler handler2 = null;
// Check again with hashtable just in case another
// thread created a handler since we last checked
handler2 = (URLStreamHandler)handlers.get(protocol);
if (handler2 != null) {
return handler2;
}
// Check with factory if another thread set a
// factory since our last check
if (!checkedWithFactory && factory != null) {
handler2 = factory.createURLStreamHandler(protocol);
}
if (handler2 != null) {
// The handler from the factory must be given more
// importance. Discard the default handler that
// this thread created.
handler = handler2;
}
// Insert this handler into the hashtable
if (handler != null) {
handlers.put(protocol, handler);
}
}
}
return handler;
}
java url api_深入阅读java api之URL相关推荐
- java jsch api_详解Java使用Jsch与sftp服务器实现
在实际项目中常会遇到需要连接服务器获取文件的场景,如账务系统需要通过连接行方的sftp服务器拉取回单文件.本文将主要讨论使用Java中的jsch与sftp服务器实现ssh免密连接. 一.什么是SFTP ...
- java时间api_什么是java时间API?
展开全部 在我们开发中,对于任62616964757a686964616fe78988e69d8331333433643732何操作,信息中时间是非常重要的一点,我们可以根据时间判断发生的时间,时间可 ...
- java excel api_全面挖掘Java Excel API 使用方法
使用Windows操作系统的朋友对Excel(电子表格)一定不会陌生,但是要使用Java语言来操纵Excel文件并不是一件容易的事.在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来 ...
- java教程java自学_15必须阅读Java 8教程
java教程java自学 Java 8于上个月发布,并且充满了新功能和幕后优化. 互联网在覆盖所有这些新增功能(包括好与坏)方面都做得相当不错 . 我认为最好汇总一下我们认为是其中最好的一些教程,以帮 ...
- java dom4j api_详解Java解析XML的四种方法(推荐使用DOM4J,因为for Java)
前言 XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有 ...
- JAVA零学习之基础归纳(十八)--网络编程、协议、IP、基本API、URL、socket等
[Java程序可以非常方便的访问互联网上的 HTTP服务.FTP服务等,并可以直接取得互联网上的远程资源,还可以向远程资源发送 GET.POST请求] 一.网络编程 1.1 网络概念和分类 所谓计算机 ...
- java 解析gson_使用Java和Google GSON解析ESPN API
java 解析gson 在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然 ...
- 使用Java和Google GSON解析ESPN API
在我的第一篇文章中,我将解释如何解析ESPN API. 可以在http://developer.espn.com/docs上找到API文档. 首先,您需要请求一个API密钥,然后可以开始查询REST ...
- Java程序员推荐阅读书籍
作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从.我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水 ...
最新文章
- 平衡二叉树-splay c/c++代码实现
- java 程序运行过程 简介
- 谁动了我的内存之PHP内存溢出
- 如何成为一名优秀的web前端工程师[转]
- STM32 进阶教程 1 - micropython 移植
- 31天重构学习笔记3. 提升方法
- 小余学调度:学习记录2021.8月
- 流量复制_详解Linux系统流量复制--gor、tcpcopy、nginx模块流量复制等
- Android textview 获取url,获取电话号码
- 微博粉丝平台开发全攻略
- 体验式培训之“盲人与哑巴”
- 在线全网音乐搜索下载源码
- 百度离线地图瓦片下载器
- 记住看小电影前一定要检查网址是不是 HTTPS 的,不然…
- win7安装程序无法配置计算机,windows安装程序无法将windows配置在此计算机的硬件上运行的解决方法...
- 78M05-ASEMI三端正线性稳压器78M05
- JavaScript 八卦
- 校招——2021多益网络软件开发笔试和面试
- html给用户自定义页面,个人门户增加自定义html模块(重要!)
- JAVA每日学习 Day31---抽象类和接口的含义、共性、区别
热门文章
- ospf多区域配置为什么ping不通_「实战」动态路由多区域 OSPF 基本配置,一分钟了解下...
- gmail头像_Gmail与Google+进一步整合:可显示好友头像
- 笔记本网络计算机和设备不可见,WIN10局域网电脑和设备显示不完整
- latex换页_备忘 | Latex 双栏模式下表格太长怎么办?
- vsphere ha 虚拟机监控错误_学会这3招,分分钟迁移业务繁忙虚拟机!
- java并发实战编程pdf_「原创」Java并发编程系列25 | 交换器Exchanger
- python爬取学籍_python 爬取现充Shell的成绩单
- python文本菜单程序_python3.x Day1 菜单程序练习
- electron调试html,electron桌面应用程序开发入门
- mysql matlab for循环嵌套循环语句吗_C++: for_each 和 基于范围的for循环