利用 InitializingBean Jackson的ObjectMapper 进行页面传值

来源:互联网 发布:量化投资算法类书籍 编辑:程序博客网 时间:2024/06/15 21:11

一、 准备工作

1、 下载依赖库jar包

Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar

然后在工程中导入这个jar包即可开始工作

官方示例:http://wiki.fasterxml.com/JacksonInFiveMinutes

ObjectMapper是一个高效转化json格式数据的类,如果创建的是spring boot项目,会自动导入com.fasterxml.jackson 依赖包,我使用的是这个类ObjectMapper。 

public class BaseAction extends ActionSupport implements BaseActionInf, ServletRequestAware, ServletResponseAware, CookiesAware, ServletContextAware, InitializingBean {

/**
* 项目初始化,启动方法
*/
@Override
public void afterPropertiesSet() throws Exception {
objectMapper = new ObjectMapper();
// param与前端传值不一致时候,不会报错
objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_CONTROL_CHARS, true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
}


/**
* 从键值对获取对象,h5用,加入token

* @param clazz
* @return
* @throws Exception
*/
@Override
protected <T> T readParamByParamMap(Class<T> clazz) throws Exception {
return this.readParamByParamMapFinal(clazz, true);


}


/**
* 从键值对获取对象,h5用,加入token

* @param clazz
* @return
* @throws Exception
*/
@Override
protected <T> T readParamByParamMapFinal(Class<T> clazz, boolean ifCreate) throws Exception {
HttpServletRequest request = getHttpServletRequest();
Map<String, String[]> paramsMap = request.getParameterMap();
Map<String, Object> values = new HashMap<String, Object>();
// if (!StringUtils.isBlank(getCookie("token"))) {
// values.put("token", getCookie("token"));
// }
for (Entry<String, String[]> e : paramsMap.entrySet()) {
if (e.getValue() != null) {


if (e.getValue().length == 1) {
values.put(e.getKey(), StringUtils.trim(e.getValue()[0]));
} else if (e.getValue().length > 1) {
List<String> list = Arrays.asList(e.getValue());
values.put(e.getKey(), list);
}


}


}
// map为空
if (values.size() <= 0) {
logger.info("read value is empty.");
if (ifCreate) {
T t = clazz.newInstance();
return t;
}
return null;
}
String s = null;
try {
s = objectMapper.writeValueAsString(values);
logger.info("read value is :" + s);
} catch (Exception e) {
logger.error("", e);
}
s = s.replace("\\\"", "\"");
T t = readValue(reomveStr(s), clazz);
if (t == null) {
t = clazz.newInstance();
}
return t;
}

}

原创粉丝点击