关于url
URL即统一资源定位器用于定位万维网上的文档或其他数据,URL 可以由单词组成,比如 “www.baidu.com”,或者是因特网协议(IP)地址:192.168.x.xxx。大多数人在网上冲浪时,会键入网址的域名,因为名称比数字容易记忆。
通常的网址是这种形式的:scheme://host.domain:port/path/filename
- scheme - 定义因特网服务的类型。最常见的类型是 http,另外还有https及ftp
- host - 定义域主机(http 的默认主机是 www)
- domain - 定义因特网域名
- :port - 定义主机上的端口号(http 的默认端口号是 80)
- path - 定义服务器上的路径(如果省略,则文档必须位于网站的根目录中)。
- filename - 定义文档/资源的名称
比如我们在百度随意搜索,例如输入“html”,我们看到的网址是“http://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=56060048_4_pg&wd=html&rsv_pq=8b388ea00001d60c&rsv_t=eb66yY%2F%2Bi26gFFYMDy%2Fj32oRkFhNPNevYoZc%2BVPhK7rYOfZg1KvGZaOcejzrMdIMre1mDQ&rsv_enter=1&inputT=1116&rsv_sug3=35&rsv_sug1=27&rsv_sug2=0&rsv_sug4=1116”,其中http://www.baidu.com是我们最为熟悉的网址,后面一大堆的字符就是参数,这些参数包括编码,搜索词,分页等等信息。我们在日常工作中也经常能用到这些参数,那么什么是参数?参数是做什么用的?
下面的内容转载自http://www.ps123.net/design/2008/21075.html。
url参数使您将用户提供的信息从浏览器传递到服务器。当服务器收到请求,而且参数被追加到请求的 URL 上时,服务器在将请求的页提供给浏览器之前,向参数提供对请求页的访问。
uRL 参数是追加到 URL 上的一个名称-值对。参数以问号 (?) 开始 并采用 name=value. 如果存在多个 URL 参数,则参数之间用 (&) 符隔开。下例显示带有两个名称-值对的 URL 参数:
http://server/path/document?name1=value1&name2=value2
在此工作流程示例中,应用程序是一家基于 Web 的店面。由于希望招徕最大范围的可能顾客,所以站点的开发人员将站点设计得可以支持多种外币。用户登录到该站点之后,他们可以选择使用哪种货币来查看所列商品的价格。
浏览器向服务器请求 report.cfm 页。该请求包括 URL 参数 Currency="euro"。Currency="euro" 变量指定所有检索到的货币数值都以欧盟的欧元为单位来显示。
服务器将 URL 参数临时存储在内存中。
report.cfm 页使用该参数来检索以欧元为单位的商品价格。这些货币数值既可以存储在反映不同货币的数据库表中,也可以从与每种商品相关联的单一货币形式转换为应用程序支持的任何货币形式。
服务器将 report.cfm 页发送给浏览器,并以请求的货币形式显示商品的价格。此用户结束会话时,服务器将清除 URL 参数的值,释放服务器内存以存放新的用户请求。

当将 HTTP 的 GET 方法与 HTML 表单一起使用时,将创建 URL 参数。GET 方法指定在提交表单时将参数值追加到 URL 请求上。
URL 参数的典型应用包括根据用户的喜好对 Web 站点进行个性化设置。例如,由用户名和密码组成的 URL 参数可用于验证用户身份,并只显示该用户已经订阅的信息。这种应用的常见示例包括一些金融 Web 站点,这些 Web 站点可根据用户以前所选的股票代码来显示个人的股票价格。Web 应用程序开发人员通常使用 URL 参数将值传递给应用程序内的变量。例如,可以将搜索语句传递给 Web 应用程序中的 SQL 变量以产生搜索结果。
我们可以把url参数通过get或post进行参数传递,但是由于各大浏览器对URL的传输的处理各不相同,浏览器在传输URl时得对URL进行编码,如果不对中文进行处理,那么中文字符经各个浏览器以自己的编码方式传输到服务器后就出现了各种编码方式,而服务器却只能以一种编码方式来对接收到的URL进行解码。这样的话,和服务器使用的编码方式一样的浏览器在使用带中文的URl时不会出现问题,其他的浏览器则会出现问题。
所以解决的办法就是在URL进行传输之前对其中的中文进行编码,使用的编码是和服务器一样的编码,假设服务器使用的编码是UTF-8,则编码语句如下:URLEncoder.encode("中文","UTF-8")。这样对中文进行编码后所有的浏览器都不会再用他们默认的编码方式对中文进行编码,因为此时浏览器看到的已经不是中文了,而是编码后的字节码。这样就避开了浏览器传输URL时编码的差异性问题。
对中文参数问题的解决方式和上面一样。但这里所指的中文参数是指以?name="中文参数"方式附在URL后,以get方法传输到服务器的这种形式,并不是以表单形式提交到服务器的。各浏览器对中文参数的处理方式和各自对URL中中文的处理方式都不相同,各浏览器之间也有差异,有的在传输之前不进行编码,有的在传输之前就已经进行了编码,情形非常复杂。
但是我们以不变应万变,都用URLEncoder.encode("中文","UTF-8")对中文参数进行编码,这样不管各浏览器怎样对中文参数进行处理,此时经过我们编码后的中文对浏览器来说就是字节码,与a、b、c等字母没有什么区别。但是服务器会用UTF-8编码形式来还原中文参数。
javascript对url常见操作:
//设置或获取对象指定的文件名或路径。
alert(window.location.pathname);
//设置或获取整个 URL 为字符串。
alert(window.location.href);
//设置或获取与 URL 关联的端口号码。
alert(window.location.port);
//设置或获取 URL 的协议部分。
alert(window.location.protocol);
//设置或获取 href 属性中在井号“#”后面的分段。
alert(window.location.hash);
//设置或获取 location 或 URL 的 hostname 和 port 号码。
alert(window.location.host);
//设置或获取 href 属性中跟在问号后面的部分。
alert(window.location.search);
获取参数:
<Script language="javascript">
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串
var theRequest = new Object();
if (url.indexOf("?") != -1) {
var str = url.substr(1);
strs = str.split("&");
for(var i = 0; i < strs.length; i ++) {
theRequest[strs[i].split("=")[0]]=(strs[i].split("=")[1]);
}
}
return theRequest;
}
</Script>
正则表达式:
function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
关于url的更多相关文章
- HTML URL地址解析
通过JavaScript的location对象,可获取URL中的协议.主机名.端口.锚点.查询参数等信息. 示例 URL:http://www.akmsg.com/WebDemo/URLParsing ...
- URL安全的Base64编码
Base64编码可用于在HTTP环境下传递较长的标识信息.在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式.此时,采用Base64编码不仅比较简短,同时也具有不可 ...
- Android业务组件化之URL Scheme使用
前言: 最近公司业务发展迅速,单一的项目工程不再适合公司发展需要,所以开始推进公司APP业务组件化,很荣幸自己能够牵头做这件事,经过研究实现组件化的通信方案通过URL Scheme,所以想着现在还是在 ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
- Node.js:path、url、querystring模块
Path模块 该模块提供了对文件或目录路径处理的方法,使用require('path')引用. 1.获取文件路径最后部分basename 使用basename(path[,ext])方法来获取路径的最 ...
- angular2系列教程(十一)路由嵌套、路由生命周期、matrix URL notation
今天我们要讲的是ng2的路由的第二部分,包括路由嵌套.路由生命周期等知识点. 例子 例子仍然是上节课的例子:
- MVC通过路由实现URL重写
public static class WebApiConfig { public static void Register(HttpConfiguration config) { config.Ro ...
- 【转】java通用URL接口地址调用方式GET和POST方式
java通用URL接口地址调用方式GET和POST方式,包括建立请求和设置请求头部信息等等......... import java.io.ByteArrayOutputStream; import ...
- linux字符串url编码与解码
编码的两种方式 echo '手机' | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' echo '手机' |tr -d '\n' |od -An -tx ...
- 如何获取url中的参数并传递给iframe中的报表
在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...
随机推荐
- C#接扣和抽象类
什么是接口? 接口是包含一组虚方法的抽象类型,其中每一种方法都有其名称.参数和返回值.接口方法不能包含任何实现,CLR允许接口可以包含事件.属性.索引器.静态方法.静态字段.静态构造函数以及常数.但是 ...
- 【计算机图形学】openGL常用函数
OpenGL常用函数 glAccum 操作累加缓冲区 glAddSwapHintRectWIN 定义一组被 SwapBuffers拷贝的三角形 glAlphaFunc允许设置alpha检测 ...
- 使用html5 canvas绘制图片
注意:本文属于<html5 Canvas绘制图形入门详解>系列文章中的一部分.如果你是html5初学者,仅仅阅读本文,可能无法较深入的理解canvas,甚至无法顺畅地通读本文.请点击上述链 ...
- c++ 的 坑真多之头文件
我发现类在做参数时,是可以不引用头文件,即不用#include"xxx.h"的,比如下面这样是没有问题的 #pragma once #include <string> ...
- WPF中使用ReportViewer报表
本篇博客将介绍如何在WPF中使用ReportViewer控件. 1. 环境准备:下载安装最新版ReportViewer(PS:需要安装Microsoft SQL Server System CLR T ...
- hdu 4278 2012天津赛区网络赛 数学 *
8进制转为10进制 #include<cstdio> #include<iostream> #include<algorithm> #include<cstr ...
- 在64位Win7中使用Navicat Premium 和PL\SQL Developer连接Oracle数据库备忘
最近接手了一个项目,服务器端数据库是oracle 11g 64位.由于主要工作不是开发,也不想在自己的电脑上安装庞大的oracle数据库,因此寻思着只通过数据库管理工具连接数据库进行一些常用的查询操作 ...
- ubuntu kylin中如何截图
windows操作系统中,我通常使用的截图工具是QQ的“ctrl+alt+a”快捷键.但是在ubuntu中,linux qq常年不更新,我也就彻底放弃了使用了,反正ubuntu通常只是拿来开发.其实没 ...
- 【微信Java开发 --番外篇】错误解析
虽然在微信开发过程中,会有微信公众平台开发者文档中的<全局返回码>作为错误的参考对比:但是依旧的,会觉得有时候的问题莫名其妙.[注:本人使用weixin-java-tools进行开发] 下 ...
- 创建一个Portlet工程
使用Liferay的SDK创建一个简单的Portlet,此Portlet不包括业务逻辑.不包括数据库,只有简单的页面展现,用以说明Portlet的开发过程. 一.创建Portlet工程 1.打开Lif ...