MongoDB:mongodb在项目开发时的安全验证、分页查询操作。

对于数据库而言,在项目应用中都需要安全验证,不然,就会报错,呵呵~~

现在贴出来我在项目中是怎么做的。

原创文章,转载请注明出处:http://blog.csdn.net/jessonlv/article/details/18656333

数据源bean:

package com.ishowchina.user.dao;import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;public class DataSource {private String ip;//数据库连接信息要从配置文件中获取  参考appconfig.properties文件private Integer port;protected String dbName;protected Boolean auth;protected String userName;protected String passWord;//打开连接 此处在获取数据库信息(ip、账户、密码等)后,打开数据库。public MongoClient OpenConnection() throws Exception{MongoClient mongoClient = new MongoClient( ip,port);return mongoClient;}//获取数据集  此处为数据库安全验证public DBCollection getCollection(MongoClient client,String tableName){if(client==null){return null;}else {DB db = client.getDB(getDbName());//获取数据库boolean r=true;//验证用户及密码if(auth!=null && auth.equals(true)){r = db.authenticate(userName, passWord.toCharArray());//密码验证}if(r){DBCollection coll = db.getCollection(tableName);//获取数据集return coll;}else {return null;}}}//释放连接public void ReleaseConnection(MongoClient mongoClient){if(mongoClient!=null){mongoClient.close();}}//删除操作,注意要传入参数public void deleteObject(DBObject o,DBCollection col){col.remove(o);}//分页查询   分页查询mongodb已经为我们集成了,只需调用api就行public DBCursor queryPage(DBObject query,DBObject sort,int start,int limit,DBCollection col){//.sort('account',1).limit(10),int count = cursor.count()BasicDBObject exp=new BasicDBObject("_id",0);return col.find(query,exp).sort(sort).skip(start).limit(limit);}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public Integer getPort() {return port;}public void setPort(Integer port) {this.port = port;}public String getDbName() {return dbName;}public Boolean getAuth() {return auth;}public void setAuth(Boolean auth) {this.auth = auth;}public void setDbName(String dbName) {this.dbName = dbName;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}
}

appconfig.properties配置文件的内容,配置数据库源信息

mongo.ip=160.0.0.243
mongo.port=27017
mongo.auth=true
mongo.user=ucenter
mongo.pwd=user2show
mongo.dbName=ucenter

此外,肯定还要把配置文件appconfig.properties导入到spring bean factory,也就是需要让datasource.java 知道去appconfig.properties 中找数据库配置信息

spring-servlet.xml

    <!-- 导入配置文件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  <property name="locations">  <list>  <value>classpath:appconfig.properties</value></list>  </property>  </bean>

这样做还不够,虽然知道了去那找数据库配置信息,但是,怎么获取数据库配置信息呢,还是在spring-servlet.xml里。

    <!-- 数据源 --><bean id="dataSource" class="com.ishowchina.user.dao.DataSource"><!-- 此处是和我们的数据库bean是对应关系 --><property name="ip" value="${mongo.ip}"/> <!-- 此处是去appconfig.properties里找关键字对应的数据库信息 --><property name="port" value="${mongo.port}"/> <property name="dbName" value="${mongo.dbName}"/> <property name="auth" value="${mongo.auth}"/><property name="userName" value="${mongo.user}"/> <property name="passWord" value="${mongo.pwd}"/> </bean>

以上就是完全的相关配置,接下来我们就可以调用getCollection、OpenConnection等方法了
举个例子:

public DBObject getUserInfo(DBObject o) throws Exception{MongoClient mongoClient = dataSource.OpenConnection();DBCollection coll = dataSource.getCollection(mongoClient,tableName);//获取数据集userinfo//mongoClient.setWriteConcern(WriteConcern.JOURNALED);//Setting Write ConcernBasicDBObject exp=new BasicDBObject("_id",0);//排除ID字段DBObject myDoc = coll.findOne(o,exp);dataSource.ReleaseConnection(mongoClient) ;//释放连接return myDoc;}

以上,大致流程就这样。。
大家如果有问题或者更好的方法,欢迎交流。

转载于:https://www.cnblogs.com/jessonlv/p/4387997.html

MongoDB:mongodb在项目开发时的安全验证、分页查询操作相关推荐

  1. 刚开始用 Go 做项目开发时都会面临哪些问题?

    我身边几个朋友,当初掌握Go的时候都是硬赶着上架,语法还没完全掌握就投入到项目开发中.因为有了前人在企业项目里打好的基础,一开始我们就是写业务,感觉跟在前人定好的大纲里做填空题一样,后来慢慢上手后才更 ...

  2. Cocos2d-x项目开发时在Eclipse中配置环境编译C++

    最近在做cocos2d-x的项目开发,当然前期肯定是环境的配置工作,为了能方便的在Eclipse中编辑和编译C++部分的代码,则需要配置Eclipse的环境,之前几次犯了一些错误,导致每次打开C++的 ...

  3. 瑞吉外卖项目:新增菜品与菜品分页查询

    目录 一. 新增菜品 1.1 需求分析 1.2 数据模型 1.3 代码实现 二. 菜品分页查询 2.1 需求分析 2.2 代码编写 一. 新增菜品 1.1 需求分析 后台系统可以管理菜品信息,通过新增 ...

  4. 使用Eclipse进行Javaweb项目开发时,如何设置外置浏览器Chrome

    使用Eclipse开发Javaweb项目时,在Eclipse中显示页面不是很好,那么如何让它自动打开外置浏览器呢?操作如下

  5. 详解Python项目开发时自定义模块中对象的导入和使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象:2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时 ...

  6. python导入模块中的对象_详解Python项目开发时自定义模块中对象的导入和使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象:2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时 ...

  7. 作为嵌入式软件工程师在项目开发时的一些易错总结-05

    一.一个开关选择芯片引发的逻辑混乱问题 1.问题描述:初始化时,使用开关选择芯片,只能改变一边的状态:但是在运行过程中,可以分别控制两边:但是方向是反的: 2.当时脑子一团雾水,没有一点想法: 3.查 ...

  8. 项目开发时前端及数据库遇到的问题

    目录 解决Navicat导入Excel文件表时无法打开 页面缩放不影响布局方法,类似百度那样 html td标签 单行数据,限制字符长度,剩下字符以....显示 多行文本溢出省略号解决方案 让ul l ...

  9. 在项目开发时创建上传微服务,我们一些纠结的点

    微服务除了可以进行业务处理之外,也可以针对上传功能进行创建,所有的上传微服务依然需要向Eureka中注册,这样就可以在zuul中进行微服务代理操作.   注意:不建议构建上传微服务        在实 ...

最新文章

  1. 基于简化点云地图的语义边缘对齐的单目定位方法
  2. MySQL优化篇:数据准备
  3. 为什么华为在发布会不提鸿蒙,华为又要开发布会?这次没有手机,鸿蒙系统要当主角!...
  4. 横线登记式明细分类账
  5. 【转】Xposed+JustTrustMe关闭SSL证书验证解决无法抓取https包问题
  6. 英语语法学习--名词
  7. 职业规划-三大职业生涯阶段
  8. linpack学习记录
  9. 举个栗子!Tableau 技巧(109):用 LOD 计算产品销售周期
  10. vue - vue项目使用BOS (百度云对象存储)上传文件
  11. c语言调用min()函数求最小值,min函数(min函数多条件求最小值)
  12. prometheus 告警配置以及配置项解释
  13. Pembuatan Sistem Registrasi Kamar Hotel Berbasis Website Pada Hotel Graha Prima Pacitan 外文翻译
  14. 如何用成长型思维赋能敏捷
  15. 数据库字段动态扩展设计
  16. D. Sonya and Matrix
  17. matlab画动图留下末端点轨迹,请问Matlab robotic Toolbox中怎么让机械手运动时末端走过的轨迹显示出来?...
  18. Homebrew error: Another active Homebrew process is already in progress
  19. jdk-18.0.0.1安装包下载安装教程
  20. 视频教程-JSON入门基础视频课程-Java

热门文章

  1. Windows10下git bash中添加wget下载工具
  2. octotree的安装
  3. 在 Windows 10 中开启移动 WLAN 热点
  4. java集合(List,Set,Map)详细总结
  5. 51nod 算法马拉松18 B 非010串 矩阵快速幂
  6. 中山大学2016年硕士研究生入学考试复试基本分数线
  7. js控制select数据绑定下拉列表
  8. 教育技术研究生必读书目(转载)
  9. 返回或输出类型为 unsigned 8-bit type(8U) 的函数积累!
  10. OpenCV中的cvCreateImage的参数channels()的意义