js获得地址栏参数,实现getParameter(),getParameterValues() 方法

本文详细解析了如何使用JavaScript构建HashMap和简单对象,包括put、get、getKey、getValue等方法的具体实现,以及如何在实际场景中应用。

//js构建HashMap
function HashMap(key,value){
var key;
var value;
this.put = function(key,value){
this.key = key;
this.value = value;
}
this.getKey = function(){
return key;
}
this.getValue = function(){
return value;
}
}

//构建简单对象
function Request(){
var parameters = null;
this.init = function(){
var location = window.location.href;
var index = location.indexOf("?");
var queryString = ((index>0)?location.substring(index+1):null);
if(null!=queryString){
parameters = new Array();
var parameterArray = queryString.split("&");
var length = parameterArray.length;
for(var i=0;i<length;i++){
var parameter = parameterArray[i];
index = parameter.indexOf("=");
var key = parameter.substring(0,index);
var value = parameter.substring(index+1);
if(null!=key && key.length>0){
parameters.push(new HashMap(key,value));
}
}
}
}

this.getParameter = function(key){
this.init();
if(null==parameters)
return "";
var length = parameters.length;
for(var i=0;i<length;i++){
hashMap = parameters[i];
if(hashMap.getKey() == key){
return hashMap.getValue();
}
}
return "";
}

this.getParameterValues = function(key){
this.init();
if(null==parameters)
return null;
var array = new Array();
var length = parameters.length;
for(var i=0;i<length;i++){
hashMap = parameters[i];
if(hashMap.getKey() == key){
array.push(hashMap.getValue());
}
}
return array;
}
}

//用法
new Request().getParameter(key) 返回string
new Request().getParameterValues(key) 返回array
在Java Web开发中,`getParameter` 和 `getParameterValues` 方法本身是用于从请求中获取参数值的,它们并不直接提供修改消息体参数的功能。不过,可以通过自定义请求包装器(Request Wrapper)来重写这两个方法,从而实现修改消息体参数的目的。以下是一个示例代码: ```java import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; import java.util.*; public class ParameterRequestWrapper extends HttpServletRequestWrapper { private final Map<String, String[]> parameterMap; public ParameterRequestWrapper(HttpServletRequest request) { super(request); this.parameterMap = new HashMap<>(request.getParameterMap()); } public void addParameter(String name, String value) { String[] values = {value}; parameterMap.put(name, values); } public void addParameter(String name, String[] values) { parameterMap.put(name, values); } @Override public String getParameter(String name) { String[] values = parameterMap.get(name); if (values != null && values.length > 0) { return values[0]; } return null; } @Override public String[] getParameterValues(String name) { return parameterMap.get(name); } @Override public Map<String, String[]> getParameterMap() { return Collections.unmodifiableMap(parameterMap); } @Override public Enumeration<String> getParameterNames() { return Collections.enumeration(parameterMap.keySet()); } } ``` 使用示例: ```java import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class MyServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 创建自定义请求包装器 ParameterRequestWrapper wrapper = new ParameterRequestWrapper(request); // 修改参数 wrapper.addParameter("newParam", "newValue"); // 使用包装器处理请求 String paramValue = wrapper.getParameter("newParam"); String[] paramValues = wrapper.getParameterValues("newParam"); // 输出修改后的参数 System.out.println("Modified parameter value: " + paramValue); if (paramValues != null) { for (String value : paramValues) { System.out.println("Modified parameter value in array: " + value); } } } } ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值