昨天的时候我们先在网上找了测试类,测试了一下mongdb的简单使用,今天就来实地在项目中用一用

没安装mongodb的参考我上一篇文章:idea+springboot+mongodb的简单测试使用分享

其实我们初学者最好是安装一个可视化的工具,这样方便我们管理数据:
下载地址:MongoDB Compass

我们选择Msi 安装版的,然后安装。

安装完成以后就可以打开软件使用了。
默认连接我们的27017端口

说完这个,现在来说一下我的业务需求:

今日用户活跃度:登录了web产品的用户数统计
今日用户访问量:用户每打开一个网站页面就被记录1次。用户多次打开同一页面,浏览量值累计。

思路:
用户登陆了就要把用户id,用户ip,用户名字等存入t_user_login,添加一条记录;同时要在t_user_visits表插入一条记录
用户访问了就t_user_visits表插入一条记录

开始干!
1.首先在拦截器中拦截,然后获取我们需要的信息
2.将获取的信息存入MongoDB
3.然后统计人数
1>先复制出一个拦截器取名为AccessLogInterceptor,然后修改

public class AccessLogInterceptor implements HandlerInterceptor {@Autowiredprivate MongoTemplate mongoTemplate;@Autowiredprivate SysParamMapper sysParamMapper;@Autowiredprivate UserMapper userMapper;private void responseForbiddenResult( HttpServletResponse httpResponse) {try {httpResponse.setContentType("application/json;charset=UTF-8");PrintWriter pw = httpResponse.getWriter();pw.write(JSONObject.toJSONString(ResultUtil.getResult(ResultCode.FORBIDDEN)));pw.flush();} catch (IOException e) {e.printStackTrace();throw new RuntimeException(e);}}@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {return  true;}/*** 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)* 我们主要修改这个方法 里的代码*/@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {//通过request获取用户正式ipString ip = IPUtil.getIpAddress(request);HttpSession session = request.getSession();//获取用户登陆的userIDString userID = request.getSession().getAttribute(WebConstants.CURRENT_USER_ID).toString();int userId = Integer.parseInt(userID);User user = userMapper.get(userId);//判断当前URL是否为登陆的url如果是就给userLoginDoc插入一条数据if("/v1/user/login_sms".equals(request.getRequestURI())){UserLoginDoc userLoginDoc = new UserLoginDoc();userLoginDoc.setUserName(user.getUsername());userLoginDoc.setCreateTime(new Date());userLoginDoc.setLastIp(ip);userLoginDoc.setUserId(user.getUserId());mongoTemplate.save(userLoginDoc,"t_user_login");}//不管访问那个页面都要在这个UserAccessDoc插入一条数据UserAccessDoc userAccessDoc = new UserAccessDoc();userAccessDoc.setUserId(user.getUserId());userAccessDoc.setAccessUrl(request.getRequestURI());userAccessDoc.setLastIp(ip);userAccessDoc.setUserName(user.getUsername());userAccessDoc.setCreateTime(new Date());mongoTemplate.save(userAccessDoc,"t_user_visits");}/*** 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)*/@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {}
}

实体类:

@Getter
@Setter
@ToString
public class UserLoginDoc implements Serializable {private Integer userId;private String userName;private Date createTime;private String lastIp;}

上面就已经存到我们的MongoDB中了,现在就要去查询总数

//获取当天0点的时间
Date morning = DateUtil.getTimesmorning();
//获取第二天0点的时间
Date times = DateUtil.getTimesnight();
int loginCount = mongoTemplate.aggregate(Aggregation.newAggregation(Aggregation.match(where("createTime").gte(morning).lte(times))),"t_user_login", BasicDBObject.class).getMappedResults().size();

idea+springboot+mongodb的实战使用分享相关推荐

  1. MongoDB实战经验分享

    2019独角兽企业重金招聘Python工程师标准>>> 转自: http://www.cnblogs.com/ymind/archive/2012/04/25/2470551.htm ...

  2. SpringBoot+MongoDB GridFS文件上传、下载、预览实战

    SpringBoot + MongoDB GridFS 随着web 3.0的兴起,数据的形式不局限于文字,还有语音.视频.图片等.高效存储与检索二进制数据也成为web 3.0必须要考虑的问题.然而这种 ...

  3. SpringBoot+MongoDB实现一个物流订单系统

    码字不易,点赞收藏,养成习惯!原创作者公众号:bigsai,回复bigsai领取5G的PDF学习资源!共同进步.更多精彩期待与您分享! 项目收录在github的MongoDB案例中,文章收录在回车课堂 ...

  4. Node.js Express+Mongodb 项目实战

    Node.js Express+Mongodb 项目实战 这是一个简单的商品管理系统的小项目,包含的功能还算挺全的,项目涵盖了登录.注册,图片上传以及对商品进行增.删.查.改等操作,对于新手来说是个很 ...

  5. springboot做网站_Github点赞接近100k的SpringBoot学习教程+实战推荐!牛批!

    如果觉得看完文章对你有帮助记得点个赞,不要做收藏党.丢进收藏夹吃灰哦! 很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Boot 进行开发,毕竟它这么好用以及天然 ...

  6. 视频教程-SpringBoot+MongoDB+Vue前后分离-Java

    SpringBoot+MongoDB+Vue前后分离 10多年互联网一线实战经验,现就职于大型知名互联网企业,架构师, 有丰富实战经验和企业面试经验:曾就职于某上市培训机构数年,独特的培训思路,培训体 ...

  7. 微博scrapy爬虫实战经验分享

    微博scrapy爬虫实战经验分享 这两天想要爬一些微博的数据,在github上找到了开源代码,但是在实际使用过程中遇到了很多困难,在此做一下记录. 安装MongoDB 首先安装MongoDB,Wind ...

  8. Hadoop实战视频分享 2013年完整版学习视频种子下载

    Hadoop实战视频分享_2013年完整版学习视频种子下载 http://pan.baidu.com/share/link?shareid=354989&uk=1778669877 本人有一套 ...

  9. Hadoop实战视频分享_2013年完整版学习视频种子下载

    Hadoop实战视频分享_2013年完整版学习视频种子下载 http://pan.baidu.com/share/link?shareid=354989&uk=1778669877 本人有一套 ...

最新文章

  1. 229页,CMU博士张浩毕业论文公布,探索机器学习并行化的奥秘
  2. gcc 5.2.0 编译安装笔记-20151110
  3. python绘图subplots函数使用模板
  4. 回溯算法的题目,这样做,秒杀!!
  5. 反击“猫眼电影”网站的反爬虫策略
  6. python如何输出两列数据_如何用python将一列数据分为两列?
  7. 去哪儿-18-detail-list
  8. SVD — 奇异值分解
  9. 用onSaveInstanceState()方法保存Activity状态
  10. springboot注解式AOP通过JoinPoint获取参数 学习笔记
  11. python基本语法总结(超级全面,细致,只用一周就可以入门python到实践),会持续更新
  12. 卫星移动通信系统的分类
  13. 学习通网页版无法粘贴至提交答案框的解决方法
  14. java 聊天室源代码_java聊天室源码(含客户端、服务端)
  15. selenium+java+chrome环境搭建
  16. 使用图灵机器人笑话功能提高微信公众帐号活跃度
  17. cadence使用教程
  18. 关于Oracle数据库如何查询非当前用户名命名空间下的表不需要写ower直接from 表名
  19. Elasticsearch搜索引擎(一)——基础使用
  20. CentOS 7 的安装教程

热门文章

  1. idea怎么给项目改名_微软改名部惹祸了
  2. 基于Java+SpringMvc+vue+element实现驾校管理系统详细设计
  3. c语言将字符串按空格分割_字符串单词输入反向输出怎么搞?C语言又带着二维数组来了!...
  4. lvds接口屏线安装图解_五分钟让你学会液晶拼接屏安装方法
  5. html 纵向选项卡,竖直选项卡式面板的实现_html/css_WEB-ITnose
  6. 火狐 html5 退出 白屏,Html5+ 后退按钮出现白屏(webView.back会白屏)
  7. python实例 91,92,93,94
  8. wifidog java_wifidog 配置中文说明
  9. 【OpenCV 例程200篇】42. 图像的灰度变换(比特平面分层)
  10. 通过八叉树进行空间分割和搜索