通过map自动获取url参数值

来源:互联网 发布:java培训多少 编辑:程序博客网 时间:2024/06/06 03:48

从页面传递参数到后台,不管是form表单提交还是ajax请求或者是url问号传参,都可以通过构建实体类自动获取到参数的名称和它所对应的数值,只需要一个实体类和一个方法

PageData的实体类

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();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(); }returnMap.put(name, value); }map = returnMap;}public PageData() {map = new HashMap();}@Overridepublic 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")@Overridepublic Object put(Object key, Object value) {return map.put(key, value);}@Overridepublic Object remove(Object key) {return map.remove(key);}public void clear() {map.clear();}public boolean containsKey(Object key) {// TODO Auto-generated method stubreturn map.containsKey(key);}public boolean containsValue(Object value) {// TODO Auto-generated method stubreturn map.containsValue(value);}public Set entrySet() {// TODO Auto-generated method stubreturn map.entrySet();}public boolean isEmpty() {// TODO Auto-generated method stubreturn map.isEmpty();}public Set keySet() {// TODO Auto-generated method stubreturn map.keySet();}@SuppressWarnings("unchecked")public void putAll(Map t) {// TODO Auto-generated method stubmap.putAll(t);}public int size() {// TODO Auto-generated method stubreturn map.size();}public Collection values() {// TODO Auto-generated method stubreturn map.values();}}

BaseController中的方法

/** * BaseController */public class BaseController {private final static String SUCCESS = "1";//成功private final static String ERROR = "0";//异常/** * 返回正确结果 * @param msg 文本内容 * @param data 返回数据对象 * @return */public ReturnMap success(String msg, Object data){return new ReturnMap().state(SUCCESS).msg(msg).data(data);}/** * 返回正确结果 * @param state * @param msg * @return */public ReturnMap success(String msg){return success(msg, null);}/** * 返回错误结果 * @param state * @param msg * @return */public ReturnMap fail(String msg){return new ReturnMap().state(ERROR).msg(msg);}/** * 得到PageData */public PageData getPageData(){return new PageData(this.getRequest());}/** * 得到ModelAndView */public ModelAndView getModelAndView(){return new ModelAndView();}/** * 得到request对象 */public HttpServletRequest getRequest() {HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();return request;}/** * 得到32位的uuid * @return */public String get32UUID(){return UuidUtil.get32UUID();}}

在controller中继承这个基础的类,调用其中的方法即可

这样在PageData的对象中,自动获取到了所有的参数名称和它对应的数值

原创粉丝点击