Java获取链接上的参数

这篇具有很好参考价值的文章主要介绍了Java获取链接上的参数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Java获取链接上的参数

使用java.net.URL类

使用java.net.URI类

使用第三方库


Java获取链接上的参数

在Java中,我们经常需要从URL链接中获取参数,例如在Web开发中获取HTTP请求中的参数。本文将介绍几种常见的方法来实现Java获取链接上的参数。

使用java.net.URL类

Java提供了java.net.URL类来处理URL链接。我们可以使用该类的方法来获取链接上的参数。

javaCopy code
import java.net.URL;
import java.net.URLDecoder;
import java.util.Map;
import java.util.HashMap;
public class URLParamsExample {
    public static void main(String[] args) {
        try {
            String urlString = "https://www.example.com/?name=John&age=25&city=New%20York";
            URL url = new URL(urlString);
            
            String query = url.getQuery();
            String[] params = query.split("&");
            Map<String, String> paramMap = new HashMap<>();
            
            for (String param : params) {
                String[] keyValue = param.split("=");
                String key = URLDecoder.decode(keyValue[0], "UTF-8");
                String value = URLDecoder.decode(keyValue[1], "UTF-8");
                paramMap.put(key, value);
            }
            
            // 获取参数值
            String name = paramMap.get("name");
            String age = paramMap.get("age");
            String city = paramMap.get("city");
            
            System.out.println("name: " + name);
            System.out.println("age: " + age);
            System.out.println("city: " + city);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,我们首先创建一个URL对象,然后使用getQuery()方法获取链接中的查询部分。接着,我们通过字符串分割和解码的方式提取出参数和对应的值,并将它们存储在一个HashMap中。最后,我们使用get()方法从HashMap中获取参数值。

使用java.net.URI类

除了URL类,Java还提供了java.net.URI类来解析和操作URI。我们可以使用该类的方法来获取链接上的参数。

javaCopy code
import java.net.URI;
import java.net.URLDecoder;
import java.util.Map;
import java.util.HashMap;
public class URIParamsExample {
    public static void main(String[] args) {
        try {
            String urlString = "https://www.example.com/?name=John&age=25&city=New%20York";
            URI uri = new URI(urlString);
            
            String query = uri.getQuery();
            String[] params = query.split("&");
            Map<String, String> paramMap = new HashMap<>();
            
            for (String param : params) {
                String[] keyValue = param.split("=");
                String key = URLDecoder.decode(keyValue[0], "UTF-8");
                String value = URLDecoder.decode(keyValue[1], "UTF-8");
                paramMap.put(key, value);
            }
            
            // 获取参数值
            String name = paramMap.get("name");
            String age = paramMap.get("age");
            String city = paramMap.get("city");
            
            System.out.println("name: " + name);
            System.out.println("age: " + age);
            System.out.println("city: " + city);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,我们创建一个URI对象,然后使用getQuery()方法获取链接中的查询部分,并按照类似的方式解析参数和对应的值。

使用第三方库

除了Java标准库,还有一些第三方库可以简化获取链接参数的操作。例如,常用的库包括Apache HttpComponents和Spring框架的UriComponentsBuilder类等。 使用Apache HttpComponents库的示例代码:

javaCopy code
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.message.BasicNameValuePair;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.List;
public class ApacheHttpParamsExample {
    public static void main(String[] args) {
        try {
            String urlString = "https://www.example.com/?name=John&age=25&city=New%20York";
            URI uri = new URI(urlString);
            
            List<NameValuePair> params = URLEncodedUtils.parse(uri, StandardCharsets.UTF_8);
            
            // 获取参数值
            String name = null;
            String age = null;
            String city = null;
            
            for (NameValuePair param : params) {
                if (param.getName().equals("name")) {
                    name = param.getValue();
                } else if (param.getName().equals("age")) {
                    age = param.getValue();
                } else if (param.getName().equals("city")) {
                    city = param.getValue();
                }
            }
            
            System.out.println("name: " + name);
            System.out.println("age: " + age);
            System.out.println("city: " + city);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在上述示例中,我们使用Apache HttpComponents库的URLEncodedUtils.parse()方法来解析URL链接中的参数,并将其存储在NameValuePair对象列表中。 以上是几种常见的方法来实现Java获取链接上的参数。根据实际需要,选择合适的方法来解析URL链接并获取参数值。希望本文能对你有所帮助!

java.net.URL 是 Java 提供的用于处理统一资源定位符(URL)的类。URL 是用于标识和定位在互联网上的资源的字符串,例如网页、图片、音频等。 java.net.URL 类提供了一系列方法来解析、构建和处理 URL。以下是 URL 类的一些常用方法和功能:文章来源地址https://www.toymoban.com/news/detail-861493.html

  1. 创建 URL 对象:可以通过 URL 类的构造方法来创建 URL 对象,例如:
javaCopy code
URL url = new URL("http://www.example.com");
  1. 获取 URL 的各个部分:可以使用 URL 类的方法来获取 URL 的各个部分,如协议、主机、端口、路径等,例如:
javaCopy code
String protocol = url.getProtocol();
String host = url.getHost();
int port = url.getPort();
String path = url.getPath();
  1. URL 编码和解码:可以使用 URL 类的静态方法 URLEncoder.encode()URLDecoder.decode() 来进行 URL 编码和解码,以处理 URL 中的特殊字符和空格,例如:
javaCopy code
String encodedURL = URLEncoder.encode("http://www.example.com", "UTF-8");
String decodedURL = URLDecoder.decode("http%3A%2F%2Fwww.example.com", "UTF-8");
  1. 获取 URL 的内容:可以使用 URL 类的 openStream() 方法打开 URL 的输入流,用于读取 URL 所指向的内容,例如:
javaCopy code
InputStream inputStream = url.openStream();
// 在这里读取输入流中的数据
  1. 连接、下载和上传文件:使用 URL 类的 openConnection() 方法可以获取到 URLConnection 对象,从而进行更高级的操作,如建立连接、下载文件、上传文件等。 以上只是 java.net.URL 类的一些基本用法,URL 类还提供了其他一些方法和功能,例如判断 URL 是否相等、获取默认端口等。需要根据具体需求和使用场景来选择和使用适当的方法和功能。

到了这里,关于Java获取链接上的参数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python爬虫:通过js逆向获取某视频平台上的视频的m3u8链接

    1. 前言 现在我们在网页端看的视频,其前端实现原理就小编目前知道的而言,总的有两点:其一,直接就是一个mp4(或其他类似的)视频链接,如果我们能得到这个视频链接,直接用这个链接就能下载到这个视频;其二,和第一点差不多吧!但是直接用链接下载,获取不到视频文

    2024年02月08日
    浏览(53)
  • Java将获取的参数,图片以及pdf文件放入到word文档指定位置

    首先引入的依赖 接下面的是template.docx文档,参数是以{{paramName}}格式的,为什么要以这种格式,是因为下面的方法,在替换参数的时候需要 但是从数据库获取的参数跟模板中的参数一一对应上即可,格式如下(我是json形式展示的): {     \\\"countQuota\\\": \\\"1\\\",     \\\"noEmission\\\": \\\"1\\\",  

    2024年02月15日
    浏览(50)
  • 问,由于java存在性能上,以及部分功能上的缺点,请问如何正确使用C,C++,Go,这三个语言,提升Java Web项目的性能?

    拓展阅读:版本任你发,我用java8 我明白Java虽然在许多方面表现出色,但在某些特定场景下可能会遇到性能瓶颈或功能限制。为了提升Java Web项目的性能,可以考虑将C、C++和Go这三种语言用于特定的组件或服务。以下是如何正确使用这些语言来提升性能的一些建议: 1. **性能

    2024年04月23日
    浏览(37)
  • java通过httpclient携带请求头参数获取第三方文件流接口并实现实现文件下载

    创建httpclient 请求,并在header携带指定key,也可根据实际需要携带token等信息。获取第三方接口返回的文件输入流并写到本地response中,实现返回文件流,前端通过js的a标签进行下载。 代码如下: 前端js代码

    2024年02月16日
    浏览(51)
  • 用java语言写一个网页爬虫 用于获取图片

    以下是一个简单的Java程序,用于爬取网站上的图片并下载到本地文件夹: 这个程序首先读取指定网址的HTML源码,然后从中提取出所有的图片URL。最后,程序利用 Java 的 IO 功能下载这些图片并保存到指定的本地文件夹中。 需要注意的是,该程序只是一个简单的演示,实际使

    2024年02月11日
    浏览(49)
  • java.io.IOException: Stream closed,关于设置拦截器获取post请求的参数,出现的流关闭问题

    问题描述: 就是最近在做接口拦截,判断post请求提交的参数有没有敏感词。但是在处理的过程中,就遇到了java.io.IOException: Stream closed这种类型的报错,其原因就是流只能被访问一次,在拦截器那边被访问之后,流就已经被关闭了,等到controller层再获取参数的时候,就会报错

    2024年02月16日
    浏览(64)
  • Java开发学习(二十五)----使用PostMan完成不同类型参数传递

    学习路线指引(点击解锁) 知识定位 人群定位 🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量

    2023年04月09日
    浏览(50)
  • 【Java开发】之获取客户端真实 IP 地址

    在投票系统开发中,为了防止刷票,我们需要限制每个 IP 地址只能投票一次; 当网站受到诸如 DDoS(Distributed Denial of Service,分布式拒绝服务攻击)等攻击时,我们需要快速定位攻击者 IP; 在渗透测试过程中,经常会碰到网站有 CDN(Content Distribution Network,内容交付网络),

    2024年02月04日
    浏览(48)
  • 华为手表开发:WATCH 3 Pro(10)获取心率_java 华为手表获取心跳

    文章浏览阅读1.2k次。鸿蒙开发,获取手表心跳,按钮点击后触发的方法,我们将跳转页面的代码写在这个位置就可以实现点击按钮进行跳转页面的动作。在HTML文件“index.hml”,添加按钮,这里按钮用到是标签。在文本框中输入页面名称(showHeartbeat)名称可以自己拟定。佩戴

    2024年01月16日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包