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查询/子域名收集/ ...
随机推荐
- nginx_https
nginx使用ssl模块配置HTTPS支持 默认情况下ssl模块并未被安装,如果要使用该模块则需要在编译时指定–with-http_ssl_module参数,安装模块依赖于OpenSSL库和一些引 ...
- hibernate学习二(HelloWorld)
一.建立hibernate配置文件 在工程Hibernate_01_HelloWorld下的src上建立hibernate.cfg.xml,打开hibernate-release-4.3.11.Fin ...
- SQL拼接自己需要的字符串
SQL行转列有多种写法,如果想把多行数据拼接成为新的一行,比如: 首先,将查询转为XML 替换XML的标签 将第一个字符,去掉试用 STUFF函数 sql STUFF用法 1.作用 删除指定长度的字符 ...
- spring MVC 尝试传参json(应用部分)
spring 3.1后增加新的注解:@Requestbody,@Responsebody, 暂不论Requestdody, 若想让后端代码直接返回json字符串,可使用@Responsebody, 用 ...
- [Machine Learning] logistic函数和softmax函数
简单总结一下机器学习最常见的两个函数,一个是logistic函数,另一个是softmax函数,若有不足之处,希望大家可以帮忙指正.本文首先分别介绍logistic函数和softmax函数的定义和应用, ...
- 【Android Studio】android Internal HTTP server disabled 解决
报错:Cannot start internal HTTP server. Git integration, JavaScript debugger and LiveEdit may operate ...
- css负边距之详解
自从1998年CSS2作为推荐以来,表格的使用渐渐退去,成为历史.正因为此,从那以后CSS布局成为了优雅代码的代名词. 对于所有设计师使用过的CSS概念,负边距作为最少讨论到的定位方式要记上一功.这就 ...
- CSS 中关于background 属性功能
background 是 css中的核心属性,我们对他应该充分了解. background-image 定义背景图像 这个属性是我们用的最多的属性 设置背景图像有两个方式 background: ...
- 详解SpringMVC中GET请求
GET请求概述 GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接.URL的编码格式采用的是ASCII编码,而不是uniclde,所有的非ASCII字符都要编 ...
- Unity 官网教程 -- Multiplayer Networking
教程网址:https://unity3d.com/cn/learn/tutorials/topics/multiplayer-networking/introduction-simple-multip ...