在构建J2EE web的时候,MVC的请求通常有两种方案:
- 浏览器请求直接发送到后端,后端的Servlet对请求进行解析,解析完后再将解析结果forward到某html template上,渲染显示;
- 浏览器先请求静态网页,静态网页通过javascript脚本向后端的Servlet发送ajax请求,将后端返回的结果回填到网页上显示。
本人一般习惯于采用第二种方案。第二种方案能更好的实现前后端的分离,部署时可以将静态网页和后端部署在不同的服务器上,实现负载的分流。
如果浏览器采用GET请求发送了诸如“http://xxxxxx?param1=xx¶m2=xx”消息,那么采用第一种方案,可以直接在后端的HttpServletRequest中解析出或者通过Spring MVC自动得到各个参数,但是采用第二种方案,则需要自己写代码在前端的javascript中来解析参数了。
在网上直接搜到了以下代码,拿来使用即可:
function getparams(url) {
if(url == undefined) {
url = window.location.href;
}
var params = {};
var parser = document.createElement('a');
parser.href = url;
var query = parser.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
params[pair[0]] = decodeURIComponent(pair[1]);
}
return params;
};
据说可以适配各浏览器(不包括IE6以下)。