GET请求中参数分隔符分号(;)和and符(&)分隔参数的区别

GET请求中参数分隔符分号(;)和and符(&)分隔参数的区别


       在开发项目或梳理某个项目的程序代码时,我们很可能会看到很多请求以及请求后面的参数列表。这时,有可能会遇到请求后面的参数之间使用分号(;)或and符(&)分隔的情况,有时候很多小伙伴看到这个会有些疑惑,不知道这两个符号到底有什么区别,那么这篇文章利用一个简单的例子来帮大家排除疑惑,权当抛砖引玉。希望大家在平时的工作中再对这两个分隔符有更深的理解和体会。


一、示例结构

        创建了一个很简单的web架构,没有使用struts或spring的架构,单单只是jsp页面。准备的内容:

       1.Tomcat apache-tomcat-8.5.13。

       (注意事项:在使用apache-tomcat-8.5.13时,要安装和配置jdk7以上的版本,否则启动tomcat失败,启动控制台会闪一下,然后就没有了,运行tomcat的首页也不会显示。

       2.在tomcat的webapps中创建了一个文件夹testjsp。

       3.在testjsp文件夹中创建了一个main.jsp文件。其中的内容就是处理请求并在页面显示数值。


       main.jsp的内容:

        定义两个参数,一个是站点名(name),一个是网址(url),发出请求时带上这两个参数并在页面中处理请求,在页面上显示这两参数的内容。

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*"%>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>练习Demo</title>
</head>
<body>
<h1>使用GET方法读取数据</h1>
<ul>
<li>
<p>
<b>站点名:</b>
<%= request.getParameter("name")%>
</p>
</li>
<li>
<p>
<b>网址:</b>
<%= request.getParameter("url")%>
</p>
</li>
</ul>
</body>
</html>


二、测试分号(;)和and符(&)分隔符

       首先要保证tomcat可以正常启动,并能够运行http://localhost:8080显示tomcat主页。

        1.and符(&)的参数分隔测试。

        在浏览器中输入

        http://localhost:8080/testjsp/main.jsp?name=test&url=www.baidu.com

        回车后,我们可以在页面上看到两个参数的内容显示。站点名(name)为test,网址(url)为www.baidu.com,也就是and符(&)将两个参数分开,使得在处理请求时认为这是两个独立的参数。



      2.分号(;)的参数分隔测试。

       在浏览器中输入

       http://localhost:8080/testjsp/main.jsp?name=test;url=www.baidu.com

       回车后,我们可以在页面上看到两个参数的内容显示。站点名(name)为test;url=www.baidu.com,网址(url)为null,也就是分号(;)将两个参数进行了连接,使得在处理请求时认为只传递过来一个参数name,而没有传递url参数,也就是分号(;)后面出现的内容并不认为是单独的请求参数,而是前面参数内容的一部分。除非参数列表中出现and符(&),处理时会认为&后又是一个请求参数。



     3.and符(&)和分号(;)的参数分隔测试

       在浏览器中输入

       http://localhost:8080/testjsp/main.jsp?name=test;url=www.baidu.com&url=www.csdn.net

       回车后,我们可以在页面上看到两个参数的内容显示。站点名(name)为test;url=www.baidu.com,网址(url)为www.csdn.net。




总结:

1.分号(;)不能区分请求中的参数,只是参数内容中的一部分。

2.and符(&)能够区分请求中的参数,是用来分隔参数的符号。

3.使用分号(;)的场景:有可能是请求中传递的参数太多了,所以使用分号(;)将参数对(key=value)连接起来作为一个请求参数进行传递。



后话对于这两个符号的介绍就是这些,肯定有没有说到和碰到的内容,还请大家在工作实践中积累相关经验,有更好的体验和内容请在csdn上与大家分享。

    




  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++,`getline`函数用于从输入流读取一行字串,并将其存储到指定的字串变量。默认情况下,`getline`函数使用换行作为行的分隔符。但是,你可以通过重载`getline`函数来指定其他的分隔符。 下面是一个示例,展示了如何重载`getline`函数以使用自定义的分隔符: ```cpp #include <iostream> #include <string> #include <sstream> void getline_custom(std::istream& input, std::string& line, char delimiter) { std::stringstream ss; char c; while (input.get(c)) { if (c == delimiter) break; ss << c; } line = ss.str(); } int main() { std::string input = "Hello;World;C++"; std::istringstream iss(input); std::string token; while (getline_custom(iss, token, ';')) { std::cout << token << std::endl; } return 0; } ``` 在上面的示例,我们定义了一个名为`getline_custom`的函数,它接受一个输入流、一个字串变量和一个分隔符作为参数。该函数使用一个`std::stringstream`对象来逐个读取字,并将字存储到临时的字串流,直到遇到指定的分隔符为止。然后,将临时字串流的内容赋值给传入的字串变量。 在`main`函数,我们使用了一个名为`iss`的`std::istringstream`对象来模拟输入流,并将其初始化为包含分号分隔的字串。然后,我们使用`getline_custom`函数来逐行读取字串,并以分号作为分隔符进行分割。每次读取到一个分割后的字串,我们将其输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值