zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

jsp连接MySQL操作GIS地图数据实现添加point的功能代码

mysqlJSP连接数据代码 实现 操作 功能
2023-06-13 09:15:03 时间


index_map.jsp中的代码:

复制代码代码如下:

<%@pagelanguage="java"pageEncoding="utf-8"%>
<%@pagecontentType="text/html;charset=utf-8"%> 
<% 
  request.setCharacterEncoding("UTF-8"); 
  response.setCharacterEncoding("UTF-8"); 
  response.setContentType("text/html;charset=utf-8"); 
%> 
<html>
<head>
</head>
<body>
<formaction="insert_map.jsp"method="post">
ID:<inputtype="text"name="id"value="0"/>
名称:<inputtype="text"name="name"value="aaa"/></br>
电压等级:<inputtype="text"name="voltage_level"value="110kv"/>
经度:<inputtype="text"name="lon"value="121."/>
纬度:<inputtype="text"name="lat"value="28."/>
</br>
<inputtype="submit"value="提交"/>
</form>
</body>
</html>

insert_map.jsp的代码:
复制代码代码如下:

<%@pagelanguage="java"import="java.util.*,java.sql.*"pageEncoding="utf-8"%>
<%@pagecontentType="text/html;charset=utf-8"%>
<% 
  request.setCharacterEncoding("UTF-8"); 
  response.setCharacterEncoding("UTF-8"); 
  response.setContentType("text/html;charset=utf-8"); 
%> 
<HTML>
<HEAD>
<TITLE>addmessageintotable</TITLE>
</HEAD>
<BODY>
<%
Stringid=request.getParameter("id");//从表单获得
Stringname=request.getParameter("name");//从表单获得
Stringvoltage_level=request.getParameter("voltage_level");//从表单获得
Stringlon=request.getParameter("lon");//从表单获得
Stringlat=request.getParameter("lat");//从表单获得

java.util.Datedate=newjava.util.Date();
Stringdatetime=newTimestamp(date.getTime()).toString();
try
{
/**连接数据库参数**/
StringdriverName="com.mysql.jdbc.Driver";//驱动名称
StringDBUser="root";//mysql用户名
StringDBPasswd="123456";//mysql密码
StringDBName="map_db";//数据库名

StringconnUrl="jdbc:mysql://localhost/"+DBName+"?user="+DBUser+"&password="+DBPasswd;
Class.forName(driverName).newInstance();
Connectionconn=DriverManager.getConnection(connUrl);
Statementstmt=conn.createStatement();
stmt.executeQuery("SETNAMESUTF8");
Stringinsert_sql="INSERTINTObiandianzhan_point_tbVALUES(""+id+"",""+name+"",""+voltage_level+"",GeometryFromText("POINT("+lon+""+lat+")"))";
Stringquery_sql="select*frombiandianzhan_point_tb";

try{
stmt.execute(insert_sql);
}catch(Exceptione){
e.printStackTrace();
}
try{
ResultSetrs=stmt.executeQuery(query_sql);
while(rs.next()){
%>
ID:<%=rs.getString("id")%></br>
名称:<%=rs.getString("name")%></br>
电压等级:<%=rs.getString("voltage_level")%></br>
经纬度:<%=rs.getString("the_geom")%></br></br>
<%
}
}catch(Exceptione){
e.printStackTrace();
}
//rs.close();
stmt.close();
conn.close();
}catch(Exceptione){
e.printStackTrace();
}
%>
</body>
</html>

访问index_map.jsp:
 
提交前数据库的值:
 
输入测试值并提交,得到如下页面:
 
数据库的变化如下:
 
可以看出,在上面的提交后的页面上经纬度是乱码的,原因是the_geom的数据类型是POINT类型,是几何数据类geometry类中的一个子类,有特定的格式,可能这种特定的格式没能被浏览器识别。我正在考虑的解决方案是将the_geom数据进行剥离,得到两个数值及经纬度。不过可能没这个必要,因为没必要显示这两个值。
总的来说,大功告成了一半吧,呵呵,今天收获很大啊!很开心!