我之前的代码一直都比较凌乱(虽然有无数的注释),嘿嘿!然后,带领我的大牛告诉我说Java的Commons下有许多的工具类,利用它们就可以使我们的代码更简洁了。

现在就实际用到的分享如下,没用到的慢慢学习积累吧!

1.XMLConfiguration——解析xml及properties文件

我们知道,解析xml文件的最基本方式有两种:DOM解析和SAX解析。可能大家和我一样,之前都是用的是这么繁琐的解析方式。

下面这个是SAX解析:

public static Map<String, String> parseXml(HttpServletRequest request) throws Exception {//输入流中传送的是xml格式的内容
		// 将解析结果存储在HashMap中
		Map<String, String> map = new HashMap<String, String>();

		// 从request中取得输入流
		InputStream inputStream = request.getInputStream();
		SAXReader reader = new SAXReader();
		Document document = reader.read(inputStream);
		Element root = document.getRootElement();
		List<Element> elementList = root.elements();

		// 遍历所有子节点
		for (Element e : elementList)
			map.put(e.getName(), e.getText());

		// 释放资源
		inputStream.close();
		inputStream = null;

		return map;
	}//然后,我们<span style="color:#ff0000;">可以从map中获得对应的节点的值</span>,这里就不写了



使用org.apache.commons.configuration.XMLConfiguration工具类:


public static XMLConfiguration getConfig(HttpServletRequest request){
		//使用commons-configuration工具类解析用户发过来的xml消息
		XMLConfiguration config = new XMLConfiguration()
		config.setDelimiterParsingDisabled(true);//加载文件前设置分隔符失效(不使用任何分隔符).
		try {
			config.load(request.getInputStream());//加载输入流中的xml
		} catch (Exception e) {
			e.printStackTrace();
		}
		return config;
	}



/**
	 * 设置响应给用户的消息
	 * @param request
	 * @return
	 */
	public static RespTextMessage setRespTextMessage(HttpServletRequest request) {
		RespTextMessage textMessage = new RespTextMessage();
		XMLConfiguration config = getConfig(request);
		//通过XMLConfiguration可以直接获得xml中的指定属性的值
		String fromUserName = config.getString("FromUserName"); // 发送方微信号,若为普通用户,则是一个OpenID
		String toUserName = config.getString("ToUserName"); // 公众帐号,开发者微信号,接收方微信号
		
		//其次,设置响应给用户的消息
		textMessage.setToUserName(fromUserName);//设置接收方帐号,即普通用户
		textMessage.setFromUserName(toUserName);//设置发送方帐号,即公众帐号
		textMessage.setCreateTime(new Date().getTime());//设置响应时间为当前时间
		textMessage.setMsgType(ImarkContants.MSG_TEXT);//设置响应消息类型为文本消息
		textMessage.setFuncFlag(0);
		
		return textMessage;
	}

另外,XMLConfiguration解析属性文件等功能。


2.MapUtils——操作map或SortedMap 实例的工具类

org.apache.commons.collections.MapUtils此工具类提供了大致有如下方法:


假设我们现在从数据库中查到一个map集合:

Map<String,Object> map= this.baseDao.findFirst(sql);

通常我们判断是否为空或null,需要写"map==null || map.isEmpty";我们可以使用MapUtils的isEmpty方法来直接判断“MapUtils.isEmpty(map)”,也就是isEmpty方法封装了前面的那条语句。

putAll方法可以将数组的键值对放入到一个map中,例如:

String[][] str = new String[][] { {"RED", "#FF0000"},{"GREEN", "#00FF00"},{"BLUE", "#0000FF"}};
MapUtils.putAll(new HashMap(), str);

另外,org.apache.commons.lang.StringUtils这个类的isEmpty可以判断字符串是否为null或empty,而不需要我们这样判断“str == null || str.length() == 0”。

3.JSON,JSONArray——处理json数据

这两个是com.alibaba.fastjson包下的工具类,举个例子,

String jsonStr = "[{'1.':'1'},{'2.':'22'},{'3.':'333'},{'4.':'4444'},{'5.':'55555'}]";
List jsonList =JSONArray.parseArray(respContent);//json字符串转换为list
Object json = jsonList.get(3);//随机获得list的第3条记录
String str = JSON.toJSONString(json);//转换为String,“4444”
上面标红jsonList的那一行获得的第3条记录返回的是个Object对象,不能直接转换为字符串,所以又使用JSON.toJSONString(json)来转换为String类型。
这样比较麻烦,所以我们可以在使用parseArray的时候,直接指定返回类型即可。

List<String> jsonList1 = JSONArray.parseArray(respContent,String.class);//json字符串转换为list
String str1 = jsonList1.get(0);

另外也可以转换为JavaBean类,如XXX:


List<XXX> listPerson =JSON.parseArray(jsonString, XXX.class);

此工具类的maven坐标为:

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.35</version>
 </dependency>