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.youkuaiyun.com
回车后,我们可以在页面上看到两个参数的内容显示。站点名(name)为test;url=www.baidu.com,网址(url)为www.youkuaiyun.com。
总结:
1.分号(;)不能区分请求中的参数,只是参数内容中的一部分。
2.and符(&)能够区分请求中的参数,是用来分隔参数的符号。
3.使用分号(;)的场景:有可能是请求中传递的参数太多了,所以使用分号(;)将参数对(key=value)连接起来作为一个请求参数进行传递。
后话:对于这两个符号的介绍就是这些,肯定有没有说到和碰到的内容,还请大家在工作实践中积累相关经验,有更好的体验和内容请在csdn上与大家分享。