1. 省市区 地址联动 数据怎么创建
1、在做这个小项目前的准备工作:
1.1、分析:
由于省、市、县城(区)这些数据是存储到了MySQL数据库中的,我们要通过后台servlet获取数据库中的数据,然后再通过转发或者重定向的方式将数据呈现到前台页面中。
1.2、需要导入的jar包有:
mysql驱动包:mysql-connector-java-5.1.7-bin.jar
c3p0数据库连接池:c3p0-0.9.2.1.jar、mysql-connector-java-5.1.7-bin.jar(c3p0依赖包)
前台c标签(需要通过遍历的方式呈现——c:forEach):jstl-1.0.2.jar、standard-1.0.1.jar(jstl依赖包)
将集合或者数组转换成json数据格式(Jackson包):jackson-annotations-2.2.1.jar、jackson-core-2.2.1.jar、jackson-databind-2.2.1.jar
前台页面需要用到jQuery,故还需要导入jquery-1.7.2.js库文件
1.3、该小项目用到的技术:
jdbc的知识、servlet的知识、jquery的知识、Ajax的知识(局部刷新)、标签的知识、EL表达式的知识、JSP的知识
2、开发过程:
2.1、准备数据源
创建一个数据库,命名为thereaction并创建三个表——province(省)、city(市)、county(县/区)
2.2后台开发
创建三个Javabean分别是Province、City、County。(由于太过简单,这里就不粘代码了)
创建Java类和c3p0连接池实现与数据库的连接:DAO.java(实现获取数据库数据的功能)、jdbctools.java(实现获取数据库连接、释放连接的功能)、c3p0-config.xml
jdbctools.java代码如下:
[java] view plain
package com.xiaojie.;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Jdbctools {
private static DataSource ds=null;
//数据库连接池应只被初始化一次
static{
ds=new ComboPooledDataSource("helloc3p0");
}
//获取数据库连接
public static Connection getConnection() throws ClassNotFoundException, SQLException, IOException{
return ds.getConnection();
}
public static void shifanglianjie(Connection ct, PreparedStatement ps,ResultSet rs) {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
DAO.java的代码如下
[java] view plain
package com.xiaojie.;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;
public class DAO {
public List<Province> getprovince(String sql ,Object...args) throws ClassNotFoundException, SQLException, IOException{
List<Province> provinces=new ArrayList<Province>();
//准备去查数据库
Connection ct=null;
ct=Jdbctools.getConnection();
System.out.println("获取到数据库的连接了");
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
provinces.add(new Province(rs.getInt("province_id"),rs.getString("province_name")));
}
Jdbctools.shifanglianjie(ct, ps, rs);
return provinces;
}
public List<City> getcity(String sql ,Object...args) throws SQLException, ClassNotFoundException, IOException{
List<City> cities=new ArrayList<City>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
cities.add(new City(rs.getInt("city_id"),rs.getString("city_name")));
}
jt.shifanglianjie(ct, ps, rs);
return cities;
}
public List<County> getcounty(String sql,Object...args ) throws SQLException, ClassNotFoundException, IOException{
List<County> counties=new ArrayList<County>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
counties.add(new County(rs.getInt("county_id"),rs.getString("county_name")));
}
jt.shifanglianjie(ct, ps, rs);
return counties;
}
}
c3p0-config.xml的代码如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="helloc3p0">
<!-- 连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password"></property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///thereaction</property>
<!-- 若数据库中连接数不足时,一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
<!-- c3p0数据库连接可以维护的statement的个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的statement对象的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
创建servlet.java 文件
[java] view plain
package com.xiaojie.servlet;
import java.io.IOException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;
import com.xiaojie..DAO;
/**
* Servlet implementation class ThreeactiondServlet
*/
@WebServlet("/threeactiondServlet")
public class ThreeactiondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodname=request.getParameter("method");
try {
Method method=getClass().getDeclaredMethod(methodname,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, request,response);//调用各自的方法
} catch (Exception e) {
e.printStackTrace();
}
}
private DAO =new DAO();
protected void province(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("province的servlet进入了");
String sql="select province_id,province_name from province";
List<Province> provinces=.getprovince(sql);
request.setAttribute("provinces", provinces);
System.out.println(provinces);
//注意:这里不能用重定向的形式,因为我们好不容易在request请求域中存储了省的信息,目的是在前台页面中能够从请求域中获取到我们存在数据库中的值
//故这里只能用转发的方式
request.getRequestDispatcher("/index2.jsp").forward(request, response);
}
protected void city(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("city的servlet进入了");
String province_id=request.getParameter("province_id");
String sql="select city_id,city_name from city where province_id=?";
List<City> cities=.getcity(sql,Integer.parseInt(province_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(cities);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
protected void county(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("county的servlet进入了");
String city_id=request.getParameter("city_id");
String sql="select county_id,county_name from county where city_id=?";
List<County> counties=.getcounty(sql,Integer.parseInt(city_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(counties);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
}
2. 1∶万区域水文地质图空间数据库
一、内容概述
隶属于国土资源大调查“数字国土”工程基础数据库建设计划项目,是该工程中基础数据库重点建设项目之一。由中国地质调查局总工办公室管理,前期由中国地质环境监测院和中国地质调查局发展研究中心共同组织实施,后期由中国地质环境监测院组织实施,各省(市、自治区)地质调查院和地质环境监测总站共同参与建设工作。
该项目是在制定的“1∶20万区域水文地质图空间数据库图层及属性文件格式标准”的基础上,以信息标准化工作为先导,形成了区域水文地质图空间数据库建设的工作流程、质量控制体系和系列工具软件,建立了涉及全国范围内共1017幅1∶20万国际标准图幅的区域水文地质图空间数据库(未在台湾省开展工作)。该数据库成果基本完成了全国区域水文地质普查工作成果图件的数字化建库工作,是目前国内地质领域重要的全国性信息化成果之一,同时也是国内唯一的国家级、完整的区域水文地质信息化成果。
在已完成的全国区域水文地质普查工作成果基础上,以1∶20万区域水文地质图为数据基础,建立全国区域水文地质图空间数据库。
通过开展数字化建设,达到抢救全国范围内区域水文地质普查成果资料和实现区域水文地质图信息化建设的目标;通过编制区域水文地质图空间数据建设工作指南和标准化建设,达到在全国范围内普及水文地质专业信息化建设相关知识、培训水文地质专业信息建设人员的目的,进而完善地质成果信息化建设流程、建立信息化建设质量控制体系;通过建立区域水文地质图空间数据库,达到全面反映区域水文地质特征要素综合空间信息的目标;通过建立元数据库,实现对区域水文地质空间信息的编目、管理和发布。通过建立区域水文地质图图幅管理系统,实现区域水文地质图信息的检索查询,达到为政府主管部门提供水文地质专业需求服务和技术支撑的目标,实现区域水文地质普查成果社会化、公益性服务的目标。
二、应用范围及应用实例
区域水文地质基础资料数据的建立,在国土资源合理开发利用、工农业生产建设、区域规划设计及地质环境保护等方面发挥了巨大作用。但是,随着时间的推移,传统纸介质资料图件逐渐破损、辨认困难,少部分资料年久破损严重已无法正常使用。
有鉴于区域水文地质普查资料数据的重要性和资料保存现状,1∶20万区域水文地质图空间数据库旨在利用GIS(地理信息系统)技术,对以图件为主要对象的区域水文地质信息(含文字报告、记录卡片)进行数字化并建立空间数据库,抢救性保护这批极其珍贵的基础资料,同时为各行业规划、生产提供基础性资料服务,为国家经济建设宏观决策、国土资源综合管理提供高效、便捷的信息化支持服务。
建成了一个全国性的、大型的全国区域水文地质图空间数据库,采集、处理了全国范围内1∶20万国际标准图幅1017幅的全要素综合水文地质图信息。全部数据量200 G。
通过数字化建库工作,形成了可满足政府和社会公益需求和服务为目的的系列产品,主要包括:
(1)MAPGIS格式1∶20万综合水文地质图空间数据库;
(2)MAPGIS格式1∶20万综合水文地质图全要素数字图件;
(3)ARCINFO格式数据和E00交换格式数据;
(4)1∶20万综合水文地质图原始资料扫描图;
(5)国家级、省级和单图幅的1∶20万区域水文地质图空间数据库元数据。
项目形成的数字化成果,已被广泛的应用在全国地下水资源调查、四川红层地区找水、华北平原地面沉降调查、全国汛期地质灾害预警预报、城市规划及川气东送、地质灾害危险性评估等项目中,在行业内产生了巨大的影响,发挥了基础数据的支撑作用。
三、推广转化方式
通过建立区域水文地质图图幅管理系统,实现区域水文地质图信息的检索查询,达到为政府主管部门提供水文地质专业需求服务和技术支撑的目标,实现区域水文地质普查成果社会化、公益性服务的目标。
技术依托单位:中国地质环境监测院
联系人:褚洪斌张斌
通讯地址:北京市海淀区大慧寺20号
邮政编码:100081
联系电话:010-62179611
电子邮件:[email protected],[email protected]
3. 贵州数据库建在什么地方(大数据库为什么在贵州)
一、基础网络能力强悍,是数据中心的必须的基础设施
中国移动、中国联通和中国电信三大运营商大数据中心的建立为贵阳奠定了产业发展的基础。三大运营商数据中心在贵安新区相继开工建设,其中:中国电信云计算中心用地500亩,总投资70亿元;中国移动(贵州)数据中心项目用地275亩,总投资20亿元;中国联通(贵安)云计算基地用地500亩,总启迹投资50亿元。
三大运营商数据中心在贵安新区相继建成后,将使贵阳周边特定区域集聚20-30万的机架、上百万台的服务器,数据存储规模可达EB以上,成为国内乃至全球最大的数据聚集地之一。国内运营商的支持,使得数据中心所必须的网络基础能力得以具备。
二、可以省钱,缘由是得天独厚的气候条件
其实不仅仅是苹果公司,建立数据中心,有不少企辩历业选址贵阳。其中得天独厚的是自然条件,其中比较重要的是气候条件:贵阳市气候凉爽,周边年平均气温15.1摄氏度,夏无酷暑,冬无严寒。温度适宜的好处是可以省暖气费和空调费。以及,贵阳宜居,也有利于引进人才。空气清新,达到世界卫生组织设立的清新空气负氧离子标准的上限;纬度合适,处于北纬26度;海拔适中,在l000米左右,紫外线辐射为全国乃至全球最少的地区之一,非常适合人居;灾害罕见,没有发生过地震、台风等。
三、电力充足
对于大数据中心来说,断电或者电力不足是非常恐怖的事情。而贵阳,点亮充足,也是建立数据中心的亮点。贵州省电力充沛,能源富足,是“西电东送”的起源。贵州省水资源丰富,电力水火并携旁搜济,稳定可靠。
四、均衡城市资源,以获取更多的政府资源扶持
苹果公司目前已经在北京和深圳建立或开建了研发中心,并计划在上海和苏州也建立研发中心。对于都希望苹果落地支持的各大城市来说,苹果公司自然也得平衡一下各方的需求,同时分散到不同的城市也非常利于谈判,获得优厚政策支持。所以在北京、深圳、上海、苏州等落地或者即将落地,在选择一个新城市,就合情合理了。另一个原因,贵阳地处西部,也是布局数据中心的合理地方之一,西部无非成都,其次就是贵阳可选了。
五、优惠政策
在吸引公司前来投资方面,政府也做出了出色的工作,推出了试点工程,并为用电等的使用提供优惠。
事实上很多互联网企业数据中心放在一般意义的中西部省份,确实是存在的。除了贵州以外,其实还包括宁夏固原、内蒙古的乌兰察布等地区都有一些大型企业的数据和计算中心进驻,包括题主提到的这些企业,还有亚马逊云、华为等。
这些企业的计算和数据中心落户这些地区,可能出于如下原因:第一,地方政府出于发展地方经济,招商引资的结果。因为计算和数据服务业,属于典型的生产性服务业,附加值高,利于地方经济发展和区域品牌打造。第二,对企业而言,计算和数据中心等放在一线城市和中心城市成本偏高,而基础设施较好的中西部地区成本(空间成本、能源成本、运维成本等)相对要低很多。第三,安全考虑。数据和计算中心是互联网企业的命脉,特别是大型互联网企业,更是如此。在这种情况下,类似于美国把最前沿的科技研究放在人迹罕至的51区,很多大型互联网企业把数据中心放在不引人注目中西部地区就可以理解了。
最后,贵州一直得到国家支持建设信息产业基地,各种人才政策、财税政策和产业政策大力倾斜,这也是吸引互联网企业进驻,或者建设数据和计算功能性总部的原因吧。
4. 像美团之类带有地区选择的数据库是如何设计的呢
三级联动吧,(先得到省表数据,前端选择了某省,把省id带到市表,就得到该省下的城市,然后区也是)
最后发挥你网络的技能,搜索省市区的资源了哦。
5. 我想建一个关于省,市,县/区数据库,如果考虑SQL性能,请问建一张表好还是3张表好
一张表,增加一个字段 设置所属的父(省、或者市)的id就可以了,如果顶级(省或者直辖市id为0)