Java萬能接收頁面資料,並自動匹配封裝為map物件
阿新 • • 發佈:2019-01-23
package com.mwk.util; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; public class PageData extends HashMap implements Map{ private static final long serialVersionUID = 1L; Map map = null; HttpServletRequest request; public PageData(HttpServletRequest request){ this.request = request; Map properties = request.getParameterMap(); System.out.println("....."+properties); Map returnMap = new HashMap(); Iterator entries = properties.entrySet().iterator(); Map.Entry entry; String name = ""; String value = ""; while (entries.hasNext()) { entry = (Map.Entry) entries.next(); name = (String) entry.getKey(); Object valueObj = entry.getValue(); if(null == valueObj){ value = ""; }else if(valueObj instanceof String[]){ String[] values = (String[])valueObj; for(int i=0;i<values.length;i++){ value = values[i] + ","; } value = value.substring(0, value.length()-1); }else{ value = valueObj.toString(); } try { value = URLDecoder.decode(value, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } returnMap.put(name, value); } map = returnMap; } public PageData() { map = new HashMap(); } @Override public Object get(Object key) { Object obj = null; if(map.get(key) instanceof Object[]) { Object[] arr = (Object[])map.get(key); obj = request == null ? arr:(request.getParameter((String)key) == null ? arr:arr[0]); } else { obj = map.get(key); } return obj; } public String getString(Object key) { return (String)get(key); } @SuppressWarnings("unchecked") @Override public Object put(Object key, Object value) { return map.put(key, value); } @Override public Object remove(Object key) { return map.remove(key); } public void clear() { map.clear(); } public boolean containsKey(Object key) { // TODO Auto-generated method stub return map.containsKey(key); } public boolean containsValue(Object value) { // TODO Auto-generated method stub return map.containsValue(value); } public Set entrySet() { // TODO Auto-generated method stub return map.entrySet(); } public boolean isEmpty() { // TODO Auto-generated method stub return map.isEmpty(); } public Set keySet() { // TODO Auto-generated method stub return map.keySet(); } @SuppressWarnings("unchecked") public void putAll(Map t) { // TODO Auto-generated method stub map.putAll(t); } public int size() { // TODO Auto-generated method stub return map.size(); } public Collection values() { // TODO Auto-generated method stub return map.values(); } }
結合springmvc可以不用建實體類,在傳參與接參中可以自動匹配引數並封裝
在mybatis中這樣配置即可,怎樣的好處慢慢發掘
<typeAliases>
<typeAlias type="com.mwk.util.PageData" alias="pd"/>
</typeAliases>