java获取最新地区
2015-11-30 18:05
573 查看
在开发中我们一般会用到用到下拉地区联动,而数据的来源确是个问题,而地区不是一成不变的,下面我分享一个我自己琢磨的获取三级地区的一个java方法,可参考。数据来源http://202.108.98.30/map 这个是比较权威的。 jar包准备:commons-codec-1.6.jar commons-io-2.2.jar commons-logging-1.1.2.jar commons.httpclient.jar gson-2.2.4.jar poi-3.8-20120326.jar需要这些jar,可以网上搜索下载,我一般会去这个http://www.manyjar.com/ 网站下载。方便快捷,不需要登录,jar包还是蛮全面的
import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.io.IOUtils; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; /** * * * @author 氵言 * @date 2015-11-30 下午06:13:12 * */ public class Test { public static void main(String[] args) throws Exception { List<String> map = new ArrayList<String>(); map.add("北京市(京)"); map.add("天津市(津)"); map.add("河北省(冀)"); map.add("山西省(晋)"); map.add("内蒙古自治区(内蒙古)"); map.add("辽宁省(辽)"); map.add("吉林省(吉)"); map.add("黑龙江省(黑)"); map.add("上海市(沪)"); map.add("江苏省(苏)"); map.add("浙江省(浙)"); map.add("安徽省(皖)"); map.add("福建省(闽)"); map.add("江西省(赣)"); map.add("山东省(鲁)"); map.add("河南省(豫)"); map.add("湖北省(鄂)"); map.add("湖南省(湘)"); map.add("广东省(粤)"); map.add("广西壮族自治区(桂)"); map.add("海南省(琼)"); map.add("重庆市(渝)"); map.add("四川省(川、蜀)"); map.add("贵州省(黔、贵)"); map.add("云南省(滇、云)"); map.add("西藏自治区(藏)"); map.add("陕西省(陕、秦)"); map.add("甘肃省(甘、陇)"); map.add("青海省(青)"); map.add("宁夏回族自治区(宁)"); map.add("新疆维吾尔自治区(新)"); map.add("香港特别行政区(港)"); map.add("澳门特别行政区(澳)"); map.add("台湾省(台)"); Gson gson = gson = new GsonBuilder().setDateFormat("yyyy-MM-dd hh:mm:ss").create(); List<Map<String, String>> listMap = new ArrayList<Map<String, String>>(); for (String mapStr : map) { HttpClient client = new HttpClient(); PostMethod post = new PostMethod("http://202.108.98.30/selectJson");//请求获取市/区列表的地址 post.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=utf-8"); NameValuePair[] pare = new NameValuePair[] { new NameValuePair("shengji", mapStr) };//塞入上面的map的省级名 post.setRequestBody(pare); client.executeMethod(post); String ret = IOUtils.toString(post.getResponseBodyAsStream()); List<Map<String,Object>> l = gson.fromJson(ret, new TypeToken<List<Map<String,Object>>>() { }.getType()); for (Map s : l) { HttpClient client_1 = new HttpClient(); String diji = (String) s.get("diji"); NameValuePair[] pare_1 = new NameValuePair[] { new NameValuePair("shengji", mapStr), new NameValuePair("diji", diji) }; PostMethod post_1 = new PostMethod("http://202.108.98.30/selectJson"); post_1.setRequestHeader("content-type", "application/x-www-form-urlencoded; charset=utf-8"); post_1.setRequestBody(pare_1); client_1.executeMethod(post_1); String ret_1 = IOUtils.toString(post_1.getResponseBodyAsStream()); List<Map<String,Object>> l_1 = gson.fromJson(ret_1, new TypeToken<List<Map<String,Object>>>() { }.getType()); System.gc(); for (Map s_1 : l_1) { String xianji = (String) s_1.get("xianji"); if (!"".equals(xianji)) { Map<String, String> m = new HashMap<String, String>(); //去掉省级后面的括号和括号里面的内容 Integer index = mapStr.indexOf("("); if (index != -1) m.put("shengji", mapStr.substring(0, index)); else m.put("shengji", mapStr); m.put("diji", diji); m.put("xianji", xianji); listMap.add(m); } } } } System.out.println(listMap); /**listMap就是获取到的省市区的数据map,**/ /**下面就是我把数据填充到excel中,方便查看和导入数据库,数据已经得到,自己可以灵活做处理**/ HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet("全国地区表)"); for (int j = 0; j < listMap.size(); j++) { Map<String, String> mmap = listMap.get(j); HSSFRow row = sheet.createRow(j); HSSFCell cell_1 = row.createCell(0); cell_1.setCellValue(mmap.get("shengji")); HSSFCell cell_2 = row.createCell(1); cell_2.setCellValue(mmap.get("diji")); HSSFCell cell_3 = row.createCell(2); cell_3.setCellValue(mmap.get("xianji")); } OutputStream outputStream = new FileOutputStream(new File("c:/address.xls"), true); workbook.write(outputStream); outputStream.flush(); outputStream.close(); System.out.println("完成ing"); } }
下图就是我导出的excel
相关文章推荐
- 关于REST
- java byte[] 转图片 在jsp页面显示
- 在 Java 中应用设计模式 -- Singleton
- openstack-java-sdk maven 工程环境搭建及编译
- Date类型的实体类属性中,Date必须是Java.util.Date,而不能是Java.sql.Date
- 第二章 Spring MVC入门
- Java新手之路——Day03 Java语言基础组成_数据类型
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson9_引用SQL片段
- Java基础1
- Spring学习之整合Struts2
- Spring注解详解
- Java IDE_Myeclipse快捷键
- Java正则表达式之语法规则
- Calendar获取指定时间
- Hadoop运行mapreduce任务过程中报错:Error: Java heap space问题解决
- spring 事务浅谈
- java并发编程-线程池的使用
- 给Java程序猿们推荐一些值得一看的好书
- java 多线程
- bug--java访问hdfs (Server IPC version 9 cannot communicate with client version 4 错误)