为了解决表单提交获得数据的方便性,我们将map的功能进行加强,表单提交的数据会自动将页面数据放入PageData对象中,当从页面获取数据时 new的时候要传request。
request.getParameter(arg0): get(arg0)或getString(arg0)
 request.getParameterValues(arg0): getValues(arg0)方法
本类也可以当做一个普通的Map使用,new的时候不要传参数

package com.jit.el.common;
import java.net.URLDecoder;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; public class IMap extends HashMap{ private static final long serialVersionUID = 1L;
Map map = null;
HttpServletRequest request;
//从页面获取数据
public IMap(HttpServletRequest request){
map = new HashMap();
this.request = request;
Map requestParams = request.getParameterMap();
Set<Map.Entry> entrySet = requestParams.entrySet();
for (Map.Entry entry : entrySet) {
String key = (String) entry.getKey();
String[] values = (String[]) entry.getValue();
String value;
try {
value = transParamDecode(values[0], "UTF-8"); // value = value.replaceAll( "(?i)<script", "<script" );
// value = value.replaceAll( "(?i)</script>", "</script>" ); map.put(key, value);
} catch (Exception e) {
e.printStackTrace();
}
}
} //普通的Map
public IMap() {
map = new HashMap();
} public Object get(Object key) {
return map.get(key);
} //本方法只能用于从页面获取数组,例如相同名字的checkbox
public String[] getValues(Object key) {
return request == null ? null:request.getParameterValues((String)key);
} public String getString(Object key) {
Object o = get(key);
return o == null? null:o.toString();
} public String getString(String name, String defaultValue) {
String value = getString(name);
return value == null ? defaultValue : value;
} /**
* get names
* @return String[]
*/
public String[] getNames() {
String[] names = (String[]) keySet().toArray(new String[0]);
Arrays.sort(names);
return names;
} /**
* get int
* @param name
* @return int
*/
public int getInt(String name) {
return getInt(name, 0);
} /**
* get int
* @param name
* @param defaultValue
* @return int
*/
public int getInt(String name, int defaultValue) {
String value = getString(name, "");
return "".equals(value) ? defaultValue : Integer.parseInt(value);
} /**
* get double
* @param name
* @return double
*/
public double getDouble(String name) {
return getDouble(name, 0);
} /**
* get double
* @param name
* @param defaultValue
* @return double
*/
public double getDouble(String name, double defaultValue) {
String value = getString(name, "");
return "".equals(value) ? defaultValue : Double.parseDouble(value);
} /**
* get boolean
* @param name
* @return boolean
*/
public boolean getBoolean(String name) {
return getBoolean(name, false);
} /**
* get boolean
* @param name
* @param defaultValue
* @return boolean
*/
public boolean getBoolean(String name, boolean defaultValue) {
String value = getString(name, "");
return "".equals(value) ? defaultValue : Boolean.valueOf(value).booleanValue();
} @SuppressWarnings("unchecked")
public Object put(Object key, Object value) {
return map.put(key, value);
} public Object remove(Object key) {
return map.remove(key);
} public void clear() {
map.clear();
} public boolean containsKey(Object key) { return map.containsKey(key);
} public boolean containsValue(Object value) { return map.containsValue(value);
} public Set entrySet() { return map.entrySet();
} public boolean isEmpty() { return map.isEmpty();
} public Set keySet() { return map.keySet();
} @SuppressWarnings("unchecked")
public void putAll(Map t) { map.putAll(t);
} public int size() { return map.size();
} public Collection values() { return map.values();
} private static String transParamDecode(String param, String charset) throws Exception {
if (param == null) {
return null;
}
return URLDecoder.decode(param.replaceAll("%", "%25"), charset);
}
}

IMap 对map的功能的强化的更多相关文章

  1. javascript实现map的功能(转载)

    /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...

  2. Android(java)学习笔记102:Map集合功能概述

    下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...

  3. Android(java)学习笔记41:Map集合功能概述

    1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...

  4. javascript自定义简单map对象功能

    这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...

  5. 利用Array Prototype的方法来实现对dom集合的筛选、indexOf、map等功能

    <!DOCTYPE html><html> <head> <title>TODO supply a title</title> <me ...

  6. charles本地调试之map和rewrite功能

    charles是一款mac下代理调试工具,对于前端开发同学来说是相当方便的一个调试接口的工具:不过charles需要收费,不过在天朝几乎收费的软件都能找到破解方法: 使用charles前,需要将cha ...

  7. python 列表解析与map和filter函数

    不知哪儿看到一个说法,大概是当map的函数参数可以直接引用一个已有的函数变量时(比如内建函数int,str之类的),用map更优美些,否则还是用列表解析更直观和快速. 我同意此说法. 昨天在写一个函数 ...

  8. kali菜单中各工具功能

    一.说明 各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 安装kali虚拟机可参考:https://www.cnblogs.com/lsdb/ ...

  9. Kali Linux菜单中各工具功能大全

    各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 名称 类型 使用模式 功能 功能评价 dmitry 信息收集   whois查询/子域名收集/ ...

随机推荐

  1. jQuery的选择器中的通配符[id^='code'] 等示例及说明

    1.选择器 (1)通配符: $("input[id^='code']");//id属性以code开始的所有input标签 $("input[id$='code']&quo ...

  2. 一起阅读《Java多线程编程核心技术》

    目录 第一章 Java多线程技能 (待续...)

  3. Linux软件包管理

    Linux软件包管理 Linux软件包管理主要有2类:是二进制包管理.源码包管理 二进制包管理 主要有RPM和YUM两种 RPM包管理 安装 --ivh:-v ,-vv,-vvv显示的安装信息依次详细 ...

  4. STM32f103 定时器之编码器接口模式

    背景 买了个Arduino的旋转编码器模块,配合STM32定时器的编码器模式实现了旋转角度以及圈数的计数.这种旋转编码器我能想到的实际应用场景暂时只有实体音量旋钮,鼠标的滚轮等,所以只实现了计数.阅读 ...

  5. Python 局部变量与全局变量

    本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量.但是,再一次学习Python atm 中应用时发现了一次特例(意外) 字典中 在函数内部改变 ...

  6. .Net Framework认知

    在托管代码的世界里,应用程序首先被加载到应用程序域(AppDomain)中,然后将应用程序域加载到进程中,一个进程可以包含多个应用程序域,也就是说一个进程可以包含多个应用程序,毕竟应用程序域之间的切换 ...

  7. C#微信公众号开发系列教程三(消息体签名及加解密)

    http://www.cnblogs.com/zskbll/p/4139039.html C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C ...

  8. 学习 opencv---(4) 分离颜色通道 && 多通道混合

    上篇文章中我们讲到了使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像混合操作. 而为了更好地观察一些图像材料的特征,有时需要对R ...

  9. C#实现快速排序

    网上很多关于快速排序的教程,嗯,不错,版本也很多,有的试了一下还报错..呵呵 于是乎低智商的朕花了好几天废了8张草稿纸才弄明白.. 快速排序的采用的分治啊挖坑填数啊之类的网上到处都是,具体过程自己百度 ...

  10. android分页请求,重复数据如何处理

    1.如图 如图上的ks031数据,在数据请求时,第一次请求20条数据,再次加载下一页20条数据时,后台的数据处理导致ks031排序到了第2页,出现加载重复现象, 这种情况则是怎么处理? 有谁明白,求指 ...