经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了。

同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题。

做了一个简单的测试,不过基本上能满足前台展示的问题,若有问题,可以及时联系我,及时沟通。

在上篇博客<<mongodb基础系列——java操作mongodb实现CURD>>中,当时查看数据如下,无论是查看所有还有查看具体。

          //查询所有
//其中类似access数据库中游标概念
DBCursor cursor=collection.find();
System.out.println("mongodb中的user表结果如下:");
while(cursor.hasNext()){
System.out.println(cursor.next());
}

同时网上很多篇博客,也都是如此查看。那若界面需要后台数据咋办?到底怎么传递过去啊?

想想咱们程序是如何传递过去的,查询操作,无非是传递List、Map、具体实体对象。

OK,既然想到如此,那在你对mongdb一无所知时,其API是最好的入口处。通过API,发现DBCursor类有个方法toArray,其返回值为List,OK,发现这个方法后,其问题已经解决了50%啦。

继续……

上述代码中数据结果,可以发现其实是JSON对。

{ "_id" : { "$oid" : "52564aa6b16b9c6f728c0cf8"} , "id" : 1 , "name" : "小明" , "address" : { "city" : "beijing" , "code" : "065000"}}

那看看输出List结果如下:

      List<DBObject> list=cursor.toArray();
System.out.println(list.toString());
return list;

其实List其上的数组而已。

[{ "_id" : { "$oid" : "52564aa6b16b9c6f728c0cf8"} , "id" : 1 , "name" : "小明" , "address" : { "city" : "beijing" , "code" : "065000"}}]

那我们测试这个list,JSP就显示输出name、复核地址中的city、code

提示:测试Demo使用Jquery的Ajax做测试。

步骤:

第一:后台Dao的查询方法。与上篇博客基本一样,只是方法返回值不同而已。

     public static List selectAll() throws Exception{
//第一:实例化mongo对象,连接mongodb服务器 包含所有的数据库 //默认构造方法,默认是连接本机,端口号,默认是27017
//相当于Mongo mongo =new Mongo("localhost",27017)
Mongo mongo =new Mongo(); //第二:连接具体的数据库
//其中参数是具体数据库的名称,若服务器中不存在,会自动创建
DB db=mongo.getDB("myMongo"); //第三:操作具体的表
//在mongodb中没有表的概念,而是指集合
//其中参数是数据库中表,若不存在,会自动创建
DBCollection collection=db.getCollection("user"); //查询操作
//查询所有
//其中类似access数据库中游标概念
DBCursor cursor=collection.find();
System.out.println("mongodb中的user表结果如下:");
/* while(cursor.hasNext()){
System.out.println(cursor.next());
}*/ List<DBObject> list=cursor.toArray();
System.out.println(list.size());
System.out.println("dao.."+list.toString());
return list;
}

第二:搭建JSP与后台的桥梁,在此使用Servlet,没有配置Struts【有点嫌麻烦】,写简单的Servlet,配置Servlet【在web.xml中配置,不在此给出了,后面有具体demo】

其中doGet方法中,因为前台使用Ajax,所以应该写到response中,使用response的getWriter,当然也可以使用Struts2Util【若使用struts2】。

	@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
List list=new EntityTest().selectAll();
response.setCharacterEncoding("UTF-8");//解决显示中文乱码问题
response.getWriter().write(list.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

第三:前端JSP使用Ajax调用,来获取name、city、code值。

<body>
<input type="button" value="test" onclick="testajax()" />
</body>
	function testajax() {
var _url = "http://localhost:8080/testmongodb/mongodb/";
jQuery.ajax({
url : _url,
type : "get",
dataType : "json",
success : function(d) {
alert(JSON.stringify(d));
alert(d[0].name);
alert(d[0].address.code);
}
});
}

Ajax中的成功返回的d,是个object对象,准确的说是JSON对象,为了方便客户看,转换成字符串.JSON.stringfy(object)

为啥是用d[0]呢?

因为返回的d是个数组,[]包围的。打印的d是[],所以以数组方式显示。

若返回的不是数组形式,比如不用[],结果如下:

response.getWriter().write(list.get(0).toString());
{ "_id" : { "$oid" : "52564aa6b16b9c6f728c0cf8"} , "id" : 1 , "name" : "小明" , "address" : { "city" : "beijing" , "code" : "065000"}}

这样的话:前台Ajax展示如下:直接使用d.name、d.id、d.address.city

success : function(d) {
alert(JSON.stringify(d));
alert(d.name);
alert(d.address.code);
}

通过这种方式基本可以获取其中的某值,若付给某个字段,可以通过jquery赋值。

比如$("#id值").val(d.name); //类似这种形式赋值。

下篇博客,给出常规table如何显示list以及ligerui中显示查询的数据的demo。

至于博客中项目demo,稍后会上传~~

mongodb基础系列——数据库查询数据返回前台JSP(一)的更多相关文章

  1. mongodb基础系列——数据库查询数据返回前台JSP(二)

    上篇博客论述了,数据库查询数据返回前台JSP.博客中主要使用Ajax调用来显示JSON串,来获取其中某一个字段,赋给界面中的某一个控件. 那这篇博客中,我们讲解,把后台List传递JSP展示. Lis ...

  2. laravel 查询数据返回的结果

    laravel查询数据返回的结果 在插入数据库的时候,发现查询数据返回的结果是一个对象;即使是空数据 返回的不是true或者false 那么要判断该结果是否查询有结果 该如果呢? 学习源头: http ...

  3. C#连接Oracle数据库查询数据

    C#连接Oracle数据库可以实现许多我们需要的功能,下面介绍的是C#连接Oracle数据库查询数据的方法,如果您对C#连接Oracle数据库方面感兴趣的话,不妨一看. using System; u ...

  4. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  5. 在使用Ibatis查询数据返回时,报如下错误:java ibatis The error happened while setting a property on the result object

    问题: 在使用Ibatis查询数据返回时,报如下错误: [com.show.add.proxy.SqlMapClientTemplateProxy]com.ibatis.common.jdbc.exc ...

  6. koa 基础(二十一)nodejs 操作mongodb数据库 --- 查询数据

    1.app.js /** * nodejs 操作mongodb数据库 * 1.安装 操作mongodb * cnpm install mongodb --save * 2.引入 mongodb 下面的 ...

  7. Mongodb基础用法及查询操作[转载]

    插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...

  8. Mongodb基础用法及查询操作

    插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":&qu ...

  9. [转]C#反射,根据反射将数据库查询数据和实体类绑定,并未实体类赋值

    本文来自:http://www.cnblogs.com/mrchenzh/archive/2010/05/31/1747937.html /****************************** ...

随机推荐

  1. Android手势监听

    public class MainActivity extends Activity { /* * 要实现手指在屏幕上左右滑动的事件需要实例化对象GestureDetector,new * Gestu ...

  2. javascript 闭包暴露句柄和命名冲突的解决方案

    暴露 最近在琢磨前端Js开源项目的东西,然后就一直好奇他们是怎么句柄暴露出来的,特整理一下两种方法. 将对象悬挂到window下面. 不使用var进行变量声明.下面上代码: (function(win ...

  3. 看看baidu是如何AJAX跨域的[转]

    看看baidu是如何AJAX跨域的 最近做个人网站遇到AJAX跨子域名的问题. 偶尔看到baidu的通行证处理都是在二级域名passport.baidu.com中处理的, 但是baidu很多地方登录都 ...

  4. [转载]Winform等待窗口的实现(附源代码)

    在开发Winform程序的时候,经常会用到等待窗口(如网络通讯.数据库连接等需要一定时间来执行的操作),这样可以给用户提供更好的体验. 等待窗口的主要功能是一边执行需要等待的操作,一边显示一个等待界面 ...

  5. 升级mac中的系统之后,给PHP安装扩展常出现问题

    (1)在装mcrypt插件时报错,提示:mcrypt fatal error: 'php.h' file not found,然后又仔细操作了一次在输完phpize回车时就已经开始出错了,出错信息如下 ...

  6. 想使用 MongoDB ,你应该了解这8个方面!

    应用性能高低依赖于数据库性能,MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.MongoDB 是一个介于关系数据库和非关 ...

  7. CF Codeforces Round #231 (Div. 2)

    http://codeforces.com/contest/394 话说这次CF做的超级不爽,A题一开始交过了,我就没再管,B题还没看完呢,就死困死困的,后来觉得B题枚举一下估计能行,当时是觉得可以从 ...

  8. 解决eclipse+tomcat7的中文乱码的一个方法

    我用的eclipse+tomcat7进行开发部署个一个项目,在页面展示的时候出现中文乱码,我想尽了所有方法,eclipse开发环境可以配置成utf-8的地方都进行了配置,tomcat也进行了配置URI ...

  9. FileSystemWatcher使用方法

    FileSystemWatcher控件主要功能: 监控指定文件或目录的文件的创建.删除.改动.重命名等活动.可以动态地定义需要监控的文件类型及文件属性改动的类型. 1.常用的几个基本属性: (1) P ...

  10. .Net中C#的DllImport的用法

    大家在实际工作学习C#的时候,可能会问:为什么我们要为一些已经存在的功能(比如 Windows中的一些功能,C++中已经编写好的一些方法)要重新编写代码,C#有没有方法可以直接都用这些原本已经存在的功 ...