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

一、 准备工作

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;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值