问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

谁给一段用servlet/jsp实现从数据库中读取数据显示在jsp页面代码

发布网友 发布时间:2022-04-07 22:51

我来回答

2个回答

懂视网 时间:2022-04-08 03:12

这两天在图书馆边看jsp边查边写代码,改完了老板交给的任务,也顺带实现了查询的效果,先来看下最终实现的效果图:

技术分享

整个实现思路是:服务器端采用servlet+mysql模糊查询,servlet返回json数据,客户端解析json数据以表格形式显示并根据经纬度在地图上进行标注。

1、服务器端Servlet代码:

package edu.whu.vge.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import edu.whu.vge.dbUtil.PoiDBBean;

public class SchoolQueryServlet extends HttpServlet {

	private static final long serialVersionUID = 1L;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest
	 * , javax.servlet.http.HttpServletResponse)
	 */
	@Override
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// 设置输出内容格式和编码
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		// 设置接收参数编码格式
		response.setCharacterEncoding("utf-8");
		String schoolID = request.getParameter("schoolID");
		String schoolName = request.getParameter("schoolName");
		String schoolAddress = request.getParameter("schoolAddress");
		String sql = "select * from school where ID like " + "'" + "%"
				+ schoolID + "%" + "'" + " and name like " + "'" + "%"
				+ schoolName + "%" + "'" + " and address like " + "'" + "%"
				+ schoolAddress + "%" + "'";
		PoiDBBean poiDBBean = new PoiDBBean();

		//
		JSONArray array = new JSONArray();
		try {
			ResultSet resultSet = poiDBBean.query(sql);
			while (resultSet.next()) {
				JSONObject object = new JSONObject()
						.element("schoolName", resultSet.getString(4))
						.element("schoolAddress", resultSet.getString(5))
						.element("schoolTel", resultSet.getString(6))
						.element("schoolKind", resultSet.getString(7))
						.element("schoolLat", resultSet.getDouble(3))
						.element("schoolLon", resultSet.getDouble(2));
				array.add(object);

			}
			out.println(array.toString());
			System.out.println(array.toString());

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				poiDBBean.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

	}

	public void destroy() {
		super.destroy(); // Just puts "destroy" string in log
		// Put your code here
	}

	/**
	 * Initialization of the servlet. <br>
	 * 
	 * @throws ServletException
	 *  if an error occurs
	 */
	public void init() throws ServletException {
		// Put your code here
	}

}
这里看一下servlet的知识就可以了。

2、客户端请求代码:

这里采用jquery  ajax方法异步请求服务器端servlet,jquery及ajax见:w3cschool。代码如下:
 $.ajax({
 
  url: "http://127.0.0.1:8080/taxGIS/servlet/SchoolQueryServlet",
  type: 'post',
  dataType: 'json',
  data: {
  schoolID: $("#schoolID").val(),
  schoolName: $("#schoolName").val(),
  schoolAddress: $("#schoolAddress").val()
  },
  success: function(jsonData){
  //查询返回数据后标注在地图上并启用查询结果显示对话框
  patchAddMarker(jsonData);
  showQueryRes(jsonData);
  }
  
 });

3、解析json并标注在地图上:

以一次查询为例,得到的json数据如下:
[
 {
 "schoolName": "城阳区第二实验中学", 
 "schoolAddress": "山东省青岛市城阳区礼阳路107号", 
 "schoolTel": "0532-81156666", 
 "schoolKind": "教育学校:中学", 
 "schoolLat": 36.28491, 
 "schoolLon": 120.40238
 }, 
 {
 "schoolName": "小寨子幼儿园", 
 "schoolAddress": "山东省青岛市城阳区 ", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.29791, 
 "schoolLon": 120.39172
 }, 
 {
 "schoolName": "新太阳托管中心", 
 "schoolAddress": "山东省青岛市市北区嘉兴路11-2", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.10921, 
 "schoolLon": 120.35659
 }, 
 {
 "schoolName": "金苹果幼儿园(香江医院西)", 
 "schoolAddress": "山东省青岛市黄岛区香江路311号(香江医院西)", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 35.97422, 
 "schoolLon": 120.16204
 }, 
 {
 "schoolName": "锦桥社区托辅中心", 
 "schoolAddress": "山东省青岛市黄岛区王家石桥村锦桥社区", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 35.87418, 
 "schoolLon": 120.00619
 }, 
 {
 "schoolName": "艺星幼儿园", 
 "schoolAddress": "山东省青岛市城阳区岙东北路541", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.33419, 
 "schoolLon": 120.2701
 }, 
 {
 "schoolName": "隐珠街道办事处中心幼儿园", 
 "schoolAddress": "山东省青岛市胶南市灵海路126号", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 35.89869, 
 "schoolLon": 120.0444
 }, 
 {
 "schoolName": "慧诺托管家园", 
 "schoolAddress": "山东省青岛市黄岛区虹桥大街83-5", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 35.87653, 
 "schoolLon": 120.00338
 }, 
 {
 "schoolName": "四方区尚志幼儿园", 
 "schoolAddress": "山东省青岛市市北区尚志路4", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.11456, 
 "schoolLon": 120.35691
 }, 
 {
 "schoolName": "宝贝之家亲子园", 
 "schoolAddress": "山东省青岛市崂山区松岭路58-1", 
 "schoolTel": "(0532)88891918,(0532)88893227", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.10406, 
 "schoolLon": 120.47963
 }, 
 {
 "schoolName": "天真幼儿园(灵山卫街道办事处人大工作办公室北)", 
 "schoolAddress": "山东省青岛市黄岛区329省道(灵山卫街道办事处人大工作办公室北)", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 35.93806, 
 "schoolLon": 120.15021
 }, 
 {
 "schoolName": "城阳区城阳街道皂户幼儿园", 
 "schoolAddress": "山东省青岛市城阳区正阳中路", 
 "schoolTel": " ", 
 "schoolKind": "教育学校:幼儿园", 
 "schoolLat": 36.30772, 
 "schoolLon": 120.35847
 }, 
 {
 "schoolName": "胶南市王台镇石梁小学", 
 "schoolAddress": "山东省青岛市黄岛区 ", 
 "schoolTel": "0532-83116752", 
 "schoolKind": "教育学校:小学", 
 "schoolLat": 36.07053, 
 "schoolLon": 120.03613
 }
]

json解析可以采用json2.js也可以使用js的eval函数。这里采用后者,代码如下,很简单就不做解释了。
function patchAddMarker(jsonData){
 var jsonArray = eval(jsonData);
 for (var i = 0; i < jsonArray.length; i++) {
 var schoolName = jsonArray[i].schoolName;
 var schoolAddress = jsonArray[i].schoolAddress;
 var schoolTel = jsonArray[i].schoolTel;
 var schoolKind = jsonArray[i].schoolKind;
 var schoolLat = jsonArray[i].schoolLat;
 var schoolLon = jsonArray[i].schoolLon;
 
 var lonlat = corTransform(schoolLon, schoolLat);
 var lonLatStr = lonlat.toShortString();
 var lonLatArr = lonLatStr.split(",");
 var lon = lonLatArr[0];
 var lat = lonLatArr[1];
 
 var att = {
  名称: schoolName,
  地址: schoolAddress,
  电话: schoolTel,
  类别: schoolKind
 
 };
 addMarke(lon, lat, att);
 }
}

4、表格显示:

这里采用jquery easyui的datagrid控件来实现,其表格控件的使用网上有很多博客,参考就可以实现了,这里不再展开了。

5、总结

1、遇到跨域问题,客户端请求不到访问结果。解决办法:访问地址为:http://127.0.0.1:8080/taxGIS/index.jsp;而不是http://localhost:8080/taxGIS/index.jsp 2、jquery-ui和jquery easyui冲突问题。这两个都是基于jquery,有些方法和属性名称都是相同的,导致冲突,就看引入其js的先后顺序,后引入的覆盖先引入的。我这里主要用到jquery-ui的对话框和按钮以及折叠栏,而jquery easyui只用到了datagrid,所以我的引用是这样的:jquery--->jquery-ui--->jquery easyui
 <script src="lib/jquery/js/jquery-1.10.2.js"></script>
 <script src="lib/jquery-easyui-1.4.2/jquery.easyui.min.js"></script>
 <script src="lib/jquery/js/jquery-ui-1.10.4.custom.js"></script>
3、前端开发用到的知识比较多而且杂,不像C#、java开发那般只用一种语言。刚开始可能会觉得手足无措,但是只要用心,入了门后面就会轻松些了。 4、注重开发部署的便宜性、用户体验度,不能做出来的东西部署非常复杂而又不实用。


OpenLayers学习笔记8——使用servlet实现从数据库获取数据并标注

标签:javascript   openlayers   webgis   前端开发   地理信息   

热心网友 时间:2022-04-08 00:20

追问:
路径没有错误/GbInfoPre/jsp/GBInfo.jsp,我用的request.getRequestDispatcher("GBInfo.do").forward(request,response);GBInfo.do就对应的这个jsp页面
回答:
你用.do的话不是应该在配置文件里添加GBinfo的相关路径吗?
追问:
是的在web.xml里映*路径我想要的结果:在一个JSP页面初始加载时显示为无条件从数据库里查询出来的数据
然后我想在这个页面里实现按照条件查询
还在这个页面里显示查询得到的数据这个jsp页面初始加载的数据都是从servletA出来的
回答:
request.getRequestDispatcher("aa。jsp").forward(request,response);你把路径直接改了,,改成你的jsp所在的位置,你试试,,肯定可以出来,,,一定是你的路径出错了。
追问:
HTTP
Status
404
-
我直接指定jsp路径还是出现这个错误
回答:
2.9.0.2.5.7.0.6.1避免删除,,如果可以的话个我源码我个你看看那
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
请问这台电脑是什么型号的? 闲鱼跟淘宝有关联吗 袋鼠什么牌子 除了苹果还有什么减肥效果更好? 如何食用苹果醋既好喝又减肥? 苏州科技学院石湖校区有哪些学院?住宿条件好不好? 做空放贷是什么意思? 成语马前泼水是用来比喻 ...要做管理咨询吗?湖南中域康达医疗投资管理公司是湖南省卫生厅推荐的... 湖南国实控股集团有限公司集团旗下公司介绍 办银行卡是不是必须绑定手机号 银行卡为什么预留手机号 农行卡一定要绑手机号吗 你好,请问华为荣耀4G手机怎么开启麦克风权限? 银行卡绑定手机号码,有什么关系?, 有什么好处??? 华为荣耀7话筒声音小怎样能调大 我用的是美的空调,请问一下如何使用空调的睡眠功能 空调遥器美的没有睡眠模试怎么办 荣耀50话筒在哪里 临时解除租赁合同应如何赔偿 房东单方面终止租房合同,怎么赔偿 怎么关闭电信路由器隐藏信号 电信路由器隐藏wifi 租赁合同终止怎么赔偿 写简历(找工作) 电信路由器WIFI怎么隐藏信号 在一个公司四月份就辞了,十月份还没找到工作,简历上面工作时间怎么写比较好啊??? 从没喝过白茶的人,想要好入口一些的茶,有推荐的吗? 简历 工作经历还在工作 要怎么表示 58同上的招聘简历工作时间一栏应当怎么填写? q讯家园的访问记录怎么删,就是打开网页后,搜索栏输入QQ号的地方点左键就出现以前输入过的QQ号,这个怎么 关于Q讯家园 Q讯家园帮你解决。很多朋友都有这个问题,我想看前女友的相册,心情,日志,但是都加密了, 怎么办呢? Q讯家园为什么不能该注册啊,一输入信息就显示错误,有没有类似的网站啊 我想进一个好友QQ空间,但是有访问权限,求方法 Q讯家园注册不了,注册时候总是提示错误什么的,怎么办?谁能帮我注册一个? 我今天登录Q讯家园查看别人的空间时,是打不开了为什么?????难道关闭了吗??? 气动扣钉枪 英文翻译 码钉枪最近感觉扣动很费力是什么原因? 怎样用气钉枪装扣板 JuNON牌双控开关怎么从墙壁上拆下检测,灯不亮了光管换新的了? 双控开关的其中一个,另一个想不要了,拆掉以后灯就不亮了,这是那个没有拆的开关,另外一个怎么接线,灯 直钉枪扣不动是怎么回事 有电工朋友吗?单开双控开关怎么换 30直钉气钉枪扣不动板机是什么原因? 双控开关的一端关掉,另一端开不了灯 双控开关拆其中一个是火线和零线不小心碰了没有是吧? 电灯双控开关,怎么改成单控 如何拆卸松本c2.8两位双控开关呢? 拆了盖后 不知道那两个开关怎么拆 求高手详细解答 房间灯开关有两个 其中一个开关拆下来了 另一个开关也开不起来了吗