您的位置:首页 > Web前端 > JavaScript

jsp从固定类型的字符串中取出多个数值并转化为float型

2013-08-02 21:20 288 查看
2013-8-2 17:05:27

在我的上一篇博客的结尾提到我接下来要实现的就是从字符串中分离出数值并得到经纬度,现在这一计划已经实现。

固定类型的字符串例子为:POINT(121.38785 28.426766)

需要做的就是将 ”POINT(“ 和”)“这两部分去掉,然后得到一个含有数字和空格的字符串:”121.38785 28.426766“。这需要使用replace()函数。

然后以空格为分隔符分离、提取两个数字字符串:"121.38785 "和”28.426766“。这里使用的是split()函数。

但这两个数值却是字符串(string)类型的,还需要将其转float型换数值。这里用到的是Float.parseFloat()函数。

具体insert_map.jsp页面的代码如下:

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
%>
<htnl>
<head>
<title>往地图数据库里插入数据 </title>
</head>
<body>
<%
String id=request.getParameter("id"); //从表单获得
String name=request.getParameter("name"); //从表单获得
String voltage_level=request.getParameter("voltage_level"); //从表单获得
String lon=request.getParameter("lon"); //从表单获得
String lat=request.getParameter("lat"); //从表单获得

try
{
/** 连接数据库参数 **/
String driverName = "com.mysql.jdbc.Driver"; //驱动名称
String DBUser = "root"; //mysql用户名
String DBPasswd = "hel610"; //mysql密码
String DBName = "map_db"; //数据库名
String lonlat = "";//存储经纬度字符串
String[] strArray = new String[2];//存储 经纬度的字符数组
float lonValue;//存储经度值
float latValue;//存储纬度值

String connUrl = "jdbc:mysql://localhost/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(connUrl);
Statement stmt = conn.createStatement();
stmt.executeQuery("SET NAMES UTF8");
String insert_sql = "INSERT INTO biandianzhan_point_tb VALUES('" + id + "','" + name + "','" + voltage_level + "',GeometryFromText('POINT (" + lon + " " + lat + ")') )";
String query_sql = "select id,name,voltage_level,AsText(the_geom) from biandianzhan_point_tb";

try {
stmt.execute(insert_sql);
}catch(Exception e) 	{
e.printStackTrace();
}
try {
ResultSet rs = stmt.executeQuery(query_sql);
while(rs.next()) {
%>
ID:<%=rs.getString("id")%> </br>
名称:<%=rs.getString("name")%> </br>
电压等级:<%=rs.getString("voltage_level")%> </br>
<%
lonlat = rs.getString("AsText(the_geom)").replaceAll("POINT|\\(|\\)","");
strArray = lonlat.split(" "); //以空格为分隔符进行分割,分隔符前后的内容按字符串形式存进字符数组strArray
lonValue = Float.parseFloat(strArray[0]);//字符串转换成浮点数
latValue = Float.parseFloat(strArray[1]);
%>
经度:<%=lonValue%> </br>
纬度:<%=latValue%> </br></br>
<%
}
}catch(Exception e) {
e.printStackTrace();
}
//rs.close();
stmt.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
对于lonlat = rs.getString("AsText(the_geom)").replaceAll("POINT|\\(|\\)","");这一句,可以这样来看:

str = rs.getString("AsText(the_geom)");

lonlat = str.replaceAll("POINT|\\(|\\)","");//将POINT这个字符串及(、)这两个字符(左右括号)全用一个空字符代替,等于就是将这个三个字符(串)(一个字符串及两个字符)删除掉。符号|是或的意思,而\\(是(的转义字符,同样\\)是)的转义字符。

最后,直接在浏览器上访问insert_map.jsp,结果如下:



很成功!

另外,为了验证所得到的是数值而不是其他类型的(不可进行运算的),我特意做了如下测试:



可见,我的操作是成功的。

下一步需要做的:

1,将现有文件放至测试服务器;

2,修改jsp页面代码,实现jsp页面上不含java代码,java代码放在。class文件里。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: