IMap 对map的功能的强化
为了解决表单提交获得数据的方便性,我们将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的功能的强化的更多相关文章
- javascript实现map的功能(转载)
/* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, v ...
- Android(java)学习笔记102:Map集合功能概述
下面通过代码引入Map集合:如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生来说,是 ...
- Android(java)学习笔记41:Map集合功能概述
1. 下面通过代码引入Map集合: 如下 package cn.itcast_01; import java.util.HashMap; import java.util.Map; /* * 作为学生 ...
- javascript自定义简单map对象功能
这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...
- 利用Array Prototype的方法来实现对dom集合的筛选、indexOf、map等功能
<!DOCTYPE html><html> <head> <title>TODO supply a title</title> <me ...
- charles本地调试之map和rewrite功能
charles是一款mac下代理调试工具,对于前端开发同学来说是相当方便的一个调试接口的工具:不过charles需要收费,不过在天朝几乎收费的软件都能找到破解方法: 使用charles前,需要将cha ...
- python 列表解析与map和filter函数
不知哪儿看到一个说法,大概是当map的函数参数可以直接引用一个已有的函数变量时(比如内建函数int,str之类的),用map更优美些,否则还是用列表解析更直观和快速. 我同意此说法. 昨天在写一个函数 ...
- kali菜单中各工具功能
一.说明 各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 安装kali虚拟机可参考:https://www.cnblogs.com/lsdb/ ...
- Kali Linux菜单中各工具功能大全
各工具kali官方简介(竖排):https://tools.kali.org/tools-listing 名称 类型 使用模式 功能 功能评价 dmitry 信息收集 whois查询/子域名收集/ ...
随机推荐
- 严重: Error starting static Resources java.lang.IllegalArgumentException:
严重: Error starting static Resources java.lang.IllegalArgumentException: Document base E:\myworkspace ...
- 在Ubuntu下安装ISE并给Atlys板子编程
参考 http://blog.csdn.net/rill_zhen/article/details/13770655 http://www.eefocus.com/zilion/blog/12-07/ ...
- 为什么现在更多需要用的是 GPU 而不是 CPU,比如挖矿甚至破解密码?
作者:Cascade链接:https://www.zhihu.com/question/21231074/answer/20701124来源:知乎著作权归作者所有,转载请联系作者获得授权. 想要理解G ...
- How to build .apk file from command line(转)
How to build .apk file from command line Created on Wednesday, 29 June 2011 14:32 If you don’t want ...
- Velocity 局部定制模板
Velocity介绍 Velocity是一个基于java的template engine.它允许Web designer引用Java Code中定义的方法.Web designer可以和Java工程师 ...
- 查询EBS中LOV的SQL语句
1.帮助->关于:查找会话 SID : 507: 2.点一下LOV右边的三点,触发LOV事件: 3.运行如下代码段: DECLARE l_sid NUMBER := :SID;BEGIN F ...
- Android获取位置信息的方法总结
1.位置服务的简介:位置服务,英文翻译为Location-Based Services,缩写为LBS,又称为定位服务或基于位置的服务,融合了GPS定位.移动通信.导航等多种技术,提供与空间位置相关的综 ...
- Java实现线性阈值模型(Linear Threshold Model)
影响力传播的线性阈值模型: 网络中连接任意两个节点u,v之间的边都有权重,任意一个节点它的各个邻居节点的边的权重之和为1,即 N(v):neighbors of v. 网络中的节点分为已激活节点和未激 ...
- 【Kubernetes】K8S 网络隔离 方案
参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...
- RIDE -- Robot Framework setup
RobotFramework 是一款基于python 的可以实现关键字驱动和数据驱动并能够生成比较漂亮的测试报告的一款测试框架 这里使用的环境是 python-2.7.10.amd64.msi RID ...