栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSP移动到后端改造成servlet

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSP移动到后端改造成servlet

以下是课堂笔记(无实际用处):

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如下所示:

3. 创建一个Servlet文件

所在的目录如下(尽量不要把文件直接放在src里面)

此时可能会提示无法解析Servlet符号,解决方法可以搜其他博客,这里给出一种笔者可用的方式:
1.

点击之后,添加这个:

添加完之后,保存即可。
将back.jsp中的代码添加到ServletAction.java中(记得顺便修改一下web.xml文件)



    
        ServletAction
        gps.monitor.ServletAction
    

    
        ServletAction

        
        /gps_monitor_servlet_action
    


注意:如果IDEA出现需要添加exception的错误提示,除了顶层的函数自己处理外,其余的函数均往上抛。

配置完之后直接运行即可
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号