以下是课堂笔记(无实际用处):
1. 新建一个web项目(笔者用的是IDEA) 2. 构建基本的项目结构编写4个文件(笔者用的是已经写好的代码),放至web目录下(暂时忽略其他的文件),如图:
文件内容如下所示:
back.jsp文件(注意这里是jsp)内容如下:
//back.jsp
<%@page contentType="text/html; charset=UTF-8" language="java"
import="java.text.*,org.json.JSONObject,java.util.ArrayList,java.io.PrintWriter"
import="java.util.HashMap,java.util.List,java.sql.*,java.util.Map,java.io.IOException"%>
<%
//front.html和back.jsp。
//功能是接收用户从页面输入的时间和设备ID,查询对应的gps数据,把经纬度和GPS时间查到,显示在页面上。
//点查询后,back.jsp根据设备ID和时间范围从ylxdb数据库的gps_history表里查询数据,返回json给前端front.html。
//然后front.html可以解析json,显示在textarea里。
//可以先编写back.jsp,在front.html没有编写出来的情况下,用
//http://xxx.xxx.xxx.xxx:9998/gps/back.jsp?device_id=868120122684159&gps_time_from=2015-11-02&gps_time_to=2015-11-04&action=get_gps_record
//来查看数据是否已经能查询出来。这是一种调试方法。
//以后要是前后端出了问题,就可以用这种方式一步步排除。
response.setContentType("text/xml;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.setHeader("Cache-Control", "no-cache");
String deviceId=request.getParameter("device_id");
String gpsTimeFrom=request.getParameter("gps_time_from");
String gpsTimeTo=request.getParameter("gps_time_to");
String action=request.getParameter("action");
System.out.println("获得的参数是:action="+action+",device_id="+deviceId+",gps_time_from="+gpsTimeFrom+",gps_time_to="+gpsTimeTo);
//开始查询数据库
List jsonList = new ArrayList();
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException classnotfoundexception) {
classnotfoundexception.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=ylx&password=ylx&useUnicode=true&characterEncoding=UTF-8");
Statement statement = conn.createStatement();
System.out.println("连接数据库Ok!!!");
//构造sql语句,根据传递过来的查询条件参数,目前是deviceId和gpsTime
String sql="select * from gps_history where gpstime>'"+gpsTimeFrom+"' and gpstime<'"+gpsTimeTo+"' and deviceId='"+deviceId+"' order by gpstime";
System.out.println("构造出来的sql语句是:"+sql);
ResultSet rs = statement.executeQuery(sql);
while (rs.next()) {
Map map = new HashMap();
map.put("device_id",rs.getString("deviceId"));
map.put("gps_time",rs.getString("gpstime"));
map.put("recv_time",rs.getString("recvtime"));
map.put("longitude",rs.getString("longitude"));
map.put("latitude",rs.getString("latitude"));
jsonList.add(map);
}
statement.close();
conn.close();
System.out.println("数据库关闭了!!!");
} catch (SQLException sqlexception) {
sqlexception.printStackTrace();
}
//数据库查询完毕,得到了json数组jsonList//
//下面开始构建返回的json
JSonObject json=new JSONObject();
json.put("record_list",jsonList);
json.put("action",action);
json.put("result_msg","ok"); //如果发生错误就设置成"error"等
json.put("result_code",0); //返回0表示正常,不等于0就表示有错误产生,错误代码
System.out.println("最后构造得到的json是:"+json.toString());
response.setContentType("text/html; charset=UTF-8");
try {
response.getWriter().print(json);
response.getWriter().flush();
response.getWriter().close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("返回结果给调用页面了。");
%>
front.html文件内容如下:
请输入:
jquery-1.8.3.min.js文件内容如下:
//内容太多
gif如下所示:
所在的目录如下(尽量不要把文件直接放在src里面)
此时可能会提示无法解析Servlet符号,解决方法可以搜其他博客,这里给出一种笔者可用的方式:
1.
点击之后,添加这个:
添加完之后,保存即可。
将back.jsp中的代码添加到ServletAction.java中(记得顺便修改一下web.xml文件)
ServletAction gps.monitor.ServletAction ServletAction /gps_monitor_servlet_action
注意:如果IDEA出现需要添加exception的错误提示,除了顶层的函数自己处理外,其余的函数均往上抛。
配置完之后直接运行即可



