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

来源:互联网 发布:手机学钢琴软件 编辑:程序博客网 时间:2024/05/17 21:55

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(" "); //以空格为分隔符进行分割,分隔符前后的内容按字符串形式存进字符数组strArraylonValue = 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文件里。