需求:
基于url获取host,case如下:
http://snv.iteye.com/blog/1992991结果为snv.iteye.com
snv.iteye.com/blog/1992991结果为snv.iteye.com
https://snv.iteye.com/blog/1992991结果为snv.iteye.com
http://snv.iteye.htm结果为“”
snv.iteye.html结果为“”
teye.html结果为“”
http://www.iteye.com/blog/1992991结果为www.iteye.com
www.iteye.com/blog/1992991结果为www.iteye.com
https://www.iteye.com/blog/1992991结果为www.iteye.com
方法实现如下:
方法1:基于URI或者URL
依赖:
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
代码:
private static String getHost(String url) { if (!(StringUtils.startsWithIgnoreCase(url, "http://") || StringUtils .startsWithIgnoreCase(url, "https://"))) { url = "http://" + url; } String returnVal = StringUtils.EMPTY; try { URI uri = new URI(url); returnVal = uri.getHost(); } catch (Exception e) { } if ((StringUtils.endsWithIgnoreCase(returnVal, ".html") || StringUtils .endsWithIgnoreCase(returnVal, ".htm"))) { returnVal = StringUtils.EMPTY; } return returnVal; }
方法2:基于正则
依赖:
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency>
代码:
public static String getHost(String url) { if (!(StringUtils.startsWithIgnoreCase(url, "http://") || StringUtils .startsWithIgnoreCase(url, "https://"))) { url = "http://" + url; } String returnVal = StringUtils.EMPTY; try { Pattern p = Pattern.compile("(?<=//|)((\\w)+\\.)+\\w+"); Matcher m = p.matcher(url); if (m.find()) { returnVal = m.group(); } } catch (Exception e) { } if ((StringUtils.endsWithIgnoreCase(returnVal, ".html") || StringUtils .endsWithIgnoreCase(returnVal, ".htm"))) { returnVal = StringUtils.EMPTY; } return returnVal; }
相关推荐
综上所述,`java.net.URL`类及其相关方法为基于URL的Java网络编程提供了强大的支持,使得开发人员能够方便地实现对网络资源的访问和操作。通过对URL的理解和掌握,开发人员可以更加灵活地利用Java进行网络编程。
在JDK6.0版本中,URL类提供了6种构造方法,这里介绍两种常用的构造方法: 1. `URL(String spec)`:这个构造方法使用一个字符串(URL地址)来创建一个URL对象。例如,`new URL("***")`可以根据提供的URL字符串来创建...
首先,创建`URL`对象可以通过两种方式: 1. 调用`URI`类的`toURL()`方法,前提是已经有一个`URI`对象。 2. 直接通过`URL`类的构造函数。最常见的是`URL(String url)`,它接受一个字符串形式的URL作为参数。如果URL不...
本文将详细介绍两种在Java中获取302重定向URL的方法。 ### 方法一:使用`HttpURLConnection` `HttpURLConnection`是Java内置的HTTP客户端,它提供了一种低级的API来处理HTTP请求。以下是使用`HttpURLConnection`...
你可以通过InetAddress类的getByName()方法获取与特定主机名关联的IP地址,或者通过getAllByName()获取所有可用的IP地址。 下面是一些InetAddress类的关键方法: 1. `getLocalHost()`: 返回本地主机的InetAddress...
- `getHost()`:获取URL的主机名。 - `getPort()`:获取URL的端口号。 - `getPath()`:获取URL的路径部分。 - `getFile()`:获取URL的文件名部分。 - `getRef()`:获取URL的片段标识符。 - `getQuery()`:获取URL的...
通过这些方法,我们可以方便地解析和获取URL的各种组成部分,以便进一步处理。 #### 总结 Java网络编程涉及多种技术,包括TCP和UDP协议的选择、基于URL的网络访问等。选择合适的协议和方法能够有效提高程序的性能...
2. URL类:java.net.URL类提供了四种构造方法来创建URL对象,分别是:(1)根据String表示形式创建URL对象;(2)根据指定的protocol、host、port号和file创建URL对象;(3)根据指定的protocol、host、port号和file...
本文将介绍两种在Android环境中检查URL可达性的方法。 **方法一:使用HttpURLConnection** 这种方法是通过建立一个HTTP连接来检查URL是否有效。以下是具体的步骤: 1. 创建`URL`对象,传入待检测的URL地址。 2. ...
在IT领域,二维码作为一种高效的信息传递方式,广泛应用于各种场景,如网站链接、电子名片、支付凭证等。本文将深入探讨如何使用PHP结合Java来解析二维码图片中的URL地址。这个过程涉及两个主要步骤:首先使用Java的...
在Java中,Socket和DatagramSocket是两种主要的网络通信机制,分别对应于TCP和UDP两种传输协议。 首先,让我们深入了解Socket。Socket,也称为套接字,是基于TCP协议的,它提供了一种可靠的、面向连接的通信方式。...
一旦有了URL对象,我们可以通过调用`openStream()`方法获取一个指向资源的`InputStream`,进而可以读取远程服务器上的数据。这样,客户端就可以从服务器获取资源信息。 3. **InetAddress类**: 这个类用于处理...
有两种方式可以实现这一点: 1. **使用`Class.forName()`方法**: ```java Class.forName("oracle.jdbc.driver.OracleDriver"); ``` 这行代码的作用是通过反射机制加载Oracle JDBC驱动。需要注意的是,如果类...
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是传输层的两种主要协议。TCP提供面向连接的服务,确保数据的可靠传输,而UDP则是一种无连接协议,注重效率但不保证数据的可靠性。 在Java中...
本文将深入探讨JAVA语言中处理域名和IP地址的相关知识,以及如何实现这两种上网方式。 首先,我们要理解域名和IP地址的基本概念。IP地址是互联网上设备的唯一标识,通常表现为一组数字,如192.168.1.1。然而,为了...
解决办法有两种: 第一种方法是修改Servlet的domain设置,使其与服务器的域名匹配。例如,可以使用String host=request.getHeader("host");然后将host设置为Cookie的domain。 第二种方法是使用request.getHeader(...
- 构造URL对象通常有两种方式: - `new URL(String spec)`:通过一个包含完整URL信息的字符串创建对象。 - `new URL(String protocol, String host, String file)`:分别指定协议、主机和资源路径。 2. **读取...
Teradata和MySQL则是两种广泛应用的关系型数据库管理系统(RDBMS)。Teradata以其高性能、可扩展性和大数据处理能力而闻名,常用于大型企业的数据仓库解决方案。而MySQL则以轻量级、易于使用和开源特性深受开发者...