JavaScript写一个方法把URL解析成对象?c++中socket怎样解析url

本文目录
JavaScript写一个方法把URL解析成对象
粗略的写了一个
function parseQueryString(url) {
var json = {};
var arr = url.substr(url.indexOf(’?’) + 1).split(’&’);
arr.forEach(function(item) {
var tmp = item.split(’=’);
json[tmp] = tmp;
})
return json;
}
测试程序如下:
var url = “http://witmax.cn/index.php?key0=0&key1=1&key2=2“;
var json = parseQueryString(url);
console.log(json);
执行结果:
{ key0: ’0’, key1: ’1’, key2: ’2’ }
c++中socket怎样解析url
socket无法解析url
解析url的包括两种服务,一种是DNS,一种是url服务器提供的服务。
DNS负责将url中的域名解析为ip和端口,进而用户的计算机可以将url投递到目标服务器上。
然后服务器依据url中的请求,做出相应,并应答用户。
这些数据通信都是发生在tcp/ip层上的。而socket工作在此层,即socket为url访问提供服务,而非直接处理url
为什么服务器可以解析二次url编码后的数据
地址栏中出现汉字的情况有两种,一种是汉字出现在URL的路径部分,一种是汉字出现在URL的传参的部分,第二种情况的时候必须采用编码后传参,接受时解码的方式完成传参。js中编码有escape(),encodeURI(),encodeURIComponent()三个常用的方法,escape()常常用在提交页面和处理页面的编码格式相同的情况下(比如它们都是GB2312),encodeURI()和encodeURIComponent()的用法基本相同,区别在于encodeURIComponent()也对“?“等特殊字符进行编码。
一开始遇到中文参数的时候,使用encodeURI()进行了一遍编码,传过去后,发现解码出现问题,于是想到可能是编码方法使用错误,于是使用escape()方法,这时发现解码时抛出isHexDigit异常。借助百度搜索isHexDigit异常,
发现原来,是escape()方法造成了异常,同时了解了浏览器传递地址的一些原理,在浏览器地址栏里,浏览器认为%是个转义字符,浏览器会把%与%之间的编码,两位两位取出后进行解码,然后再传递给处理页面,
然后由处理页面进行再次解码。由此我想到一直使用encodeURI方法是正确的,只是需要使用两次encodeURI方法,例如encodeURI(encodeURI(“中文“));第一次是把中文编码成%xy的格式,
第二次是对%xy中的%进行编码,%编码成%25。整个传参过程大体应该是:提交页面使用encodeURI(encodeURI(“中文“))编码,把最后的编码结果%25xy传递给处理页面的过程中,浏览器获取URL地址
(注意openModelDialog方法,浏览器获取不到参数编码)后解码成%xy,然后把%xy传递给处理页面,处理页面使用URLDecoder.decode(request.getParameter(“参数名“),“UTF-8“);完成解码。
总结:
1、汉字出现在URL路径部分的时候不需要编码解码;
2、使用encodeURI进行2次编码;
3、在openModelDialog()打开的模式窗体里没办法用request.getParameter正确获取参数;
客户端和服务器在传递数据时可以用过滤器filter解决字符编码问题,但filter只能解决post方式提交的数据。对于get方式,可以使用两次encodeURI(encodeURI(“中文”))并在服务器中使用URLDecoder.decode(“中文”, “UTF-8“);
今天用Ajax校验数据时也遇到这个问题,尽管页面、类和web容器都统一了字符编码,提交的数据依然是乱码,所以就采用了2次encodeURI()编码方式,乱码问题就解决了。
页面
var name=document.myForm.username.value;
var url=“Ajax.do?method=check&name=“+encodeURI(encodeURI(name));
xmlHttp.open(“GET“,url,true);
action中
String name = request.getParameter(“name“);
name = URLDecoder.decode(name, “UTF-8“);
servlet返回数据时,将字符编码设置为utf-8就可以了,因为Ajax只支持utf-8
response.setContentType(“text/xml;charset=utf-8“);
PrintWriter out = response.getWriter();
out.print(result);
-----(以上答案 我在一个叫 燃烧这青春的空间看来得 ,希望帮的到你)
如何解析url的主域名
一、根据提问者的描述,可以采用URL显性转发。域名转跳为目标URL。
二、域名解析的定义:
域名解析就是域名到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替IP地址标识站点地址。域名的解析工作由DNS服务器完成。
三、URL的定义:
URL(转发):访问域名时,将会自动跳转到所指定的另一个网络地址(URL),此时在浏览器地址栏显示的是跳转的地址。
js如何解析url
你要解析出什么东西?
反正所有的东西都在window.location 对象里面:
location.host 返回主机和端口号
location.hostname 返回 web 主机的域名
location.pathname 返回当前页面的路径和文件名
location.port 返回 web 主机的端口 (80 或 443)
location.protocol 返回所使用的 web 协议(http:// 或 https://)
location.hash 返回锚(#后面)
location.href 返回完整的url
location.search 返回参数部分(?后面)
其他的东西比如获取参数值什么的用正则就行了,一个方法搞定:
window.getParam = function (name) {var reg = new RegExp(“(^|&)“ + name + “=([^&]*)(&|$)“);
var r = window.location.search.substring(1).match(reg);
return r ? decodeURI(r) : null;
};

更多文章:
turtles歌曲(哪位大神有turtles(乌龟组合)的<谢谢>的歌词中文翻译 感激不尽)
2026年10月11日 10:00
金山铁路22号线(请问现在轨道交通22号线金山铁路是个什么情况据说9月28日就开通了啊~~~)
2026年10月11日 09:10
repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026年10月11日 09:00
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026年10月11日 08:50
易语言网页api接口怎么调用(易语言,怎么读取网页json的api)
2026年10月11日 08:00
majority of(the majority of 和 a majority of的区别以及用法例句)
2026年10月11日 07:40



