为了解决表单提交获得数据的方便性,我们将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. vim格式化代码实际上就是 "缩进代码", 命令是等号=

    vim格式化代码实际上就是 "缩进代码", 命令是等号= 格式化就是 vim 根据 文件的类型, 自动的对代码进行 缩进 缩进的类型有多种, 都是用等号命令: = 全部格式化 : ...

  2. [从产品角度学EXCEL 01]-EXCEL是怎样运作的

    这是<从产品角度学EXCEL>系列第二篇. 前言请看:从产品角度学EXCEL-系列0-为什么要关注EXCEL的本质 本文不接受无授权转载,如需转载,请先联系我,非常感谢. 1.EXCEL是 ...

  3. FFmpeg-for IOS 一[安装]

    FFmpeg编译环境搭建 准备 下载 gas-preprocessor 下载 ffmpeg包,ffmpeg 安装yasm,先安装homebrew,输入:ruby -e "$(curl -fs ...

  4. mysql_config 问题

    1 .you should have mysql_config available in $PATH For CentOS: yum install mysql-devel For openSUSE: ...

  5. 数据库 'xxx 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。

    ---清空日志: USE [master] GO ALTER DATABASE cits SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE cits ...

  6. Autoit3 获取WinForm下的ToolTip

    相比Autohotkey,在我看来,Autoit最实用的就是对于WinForm Application的良好支持 然而,要想将鼠标放在WinForm的ToolTip上,简直无异于自己把自己举起来,故而 ...

  7. retrofit一点点理解

    retrofit是什么? retrofit可以认为是一款基于http协议的rpc框架.基于java的. 它可以连到支持restful的服务器,将服务器返回的json数据反序列化成java对象. 用途 ...

  8. JS学习:第二周——NO.3盒子模型

    1.CSS盒子模型包括四个部分组成:设定的宽高+padding+border+margin: 2.JS盒子模型:通过系统提供的属性和方法,来获取当前元素的样式值   JS提供的属性和方法: clien ...

  9. android Viewpager HorizontalScrollView 实现分页栏拖拽

    源码:http://files.cnblogs.com/android100/ViewPaperDemo.rar首先我们先看一个效果:  前两个是网易的,它做的title不能拖拽,.不过点击动画效果挺 ...

  10. http://www.microsoft.com/en-pk/download/details.aspx?id=40762

    http://www.microsoft.com/en-pk/download/details.aspx?id=40762