项目介绍

 "HelloBird"是一个基于微信小程序搭建的资源回收o2o平台,目的是为了实现废旧资源的流转。在"HelloBird"中,用户可以轻松的获取生活垃圾的基本信息,并能根据自己的实际情况便捷考虑是否将废品出售,在用户选择好要出售的废品并提交订单之后,系统将自动派送回收员上门服务,收取废品,使用户足不出户就能将生活中的垃圾得到妥善处理,还能获得一定的收益,并且实现了资源的再利用。

功能需求如下

项目架构

 "HelloBird"项目客户端采用微信web平台,使用JavaEE做后台架构,数据采用的是关系型数据库MySQL。在后台架构上,采用SSM(Spring+SpringMVC+Mybatis)框架,Mybatis负责持久层操作,SpringMVC作为前端控制器,处理前台和后台的交互,Spring作为IOC容器,为Mybatis和SpringMVC提供支持(事物操作等)。

架构图如下

页面逻辑图如下

项目中遇到的问题

  • 使用json进行前后台数据交互的格式: 该项目使用json作为前后台数据传输的格式,SpringMVC的两个注解非常友好的帮我进行封装于实现,封闭式@ResponseBody和@RequestBody,@ResponseBody负责将数据包装成json字符串返回给前台,@RequestBody则将从前台接收到的数据包装成对应的JavaBean对象。在使用过程中,出现了中文字符乱码问题,后来进行了解决。
1. 使用如下配置可解决字符乱码问题(全局设置):
<mvc:annotation-driven><mvc:message-converters><bean class="org.springframework.http.converter.StringHttpMessageConverter"><property name="supportedMediaTypes"><list><value>application/json;charset=UTF-8</value></list></property></bean></mvc:message-converters></mvc:annotation-driven>2.使用produces = "text/html;charset=UTF-8"也能解决中文乱码问题
@RequestMapping(value = "/regist", method = RequestMethod.POST,  produces = "text/html;charset=UTF-8")
@ResponseBody
public Map<Integer, Object> regist(@RequestBody User user){Map<Integer, Object> map = new HashMap<>();try {//用户注册map = userService.regist(user);}catch (Exception e){System.out.println(e.getMessage());}return map;
}3.在请求头中进行设置
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.write(result);

上面所讲的第二种方法中,关于produces(还有一个 consumes),可以查看此博客,做更深了解:

  • https://blog.csdn.net/walkerjong/article/details/7994326

  • Transfer-Encoding:chunked和Content-Disposition:inline;filename=f.txt问题: 在做项目的时候,响应头里面出现了 Transfer-Encoding:chunked和Content-Disposition:inline;filename=f.txt,让我百思不得其解,后来经过多方查阅,终于让我弄明白了到底是设么意思。

  1. Transfer-Encoding:chunked 简单来说,Transfer-Encoding是一个Http的头部字段,意思是传输编码。而chunked是分块传输的意思,就是说对于输出内容长度不确定的,如gzip格式等,就会用到分块传输技术。参考博客:
- https://blog.csdn.net/whatday/article/details/7571451
- https://imququ.com/post/transfer-encoding-header-in-http.html
  1. Content-Disposition:inline;filename=f.txt 初遇这个响应头的时候我也是有点懵,不知道什么意思,后来也搞明白了。该属性设置的是在文件下载时对下载文件的一个标识字段。参考链接:
- https://blog.csdn.net/dabinge1/article/details/52587662
  • session问题和token的使用: 该项目是基于微信小程序的,在保存用户登录状态和身份验证这一点上,我首先想到了用session,同时我想项目比较小,可以把用户的购物车放在session中,一次会话结束就将session里面的购物车清除,后来我发现了这其中的问题。首先:微信小程序不支持Cookie(意味着session也用不了),这在项目后期对于我的打击肯定是很大的,因为我的好多业务逻辑都是基于session的,session用不了那么项目就瘫痪了一大半,后来经过冷静思考也发现的我设计的问题,关于session的问题只是其次,用户的购物车放在session中,一次会话后就被清除,这显然是不合理的,对于用户的信息,我们需要把它固话在数据库中,后来我又重新增添一张表来保存用户的购物车,这个逻辑想明白之后,还有一点不知道怎么弄,session用不了,那用什么好呢?后来我想到了使用token。

    • token是什么:token是一个加密的字符串,里面包含了后台给前台传递的加密信息(不容易被破解)

      • https://ninghao.net/blog/2834
      • https://dombro96.github.io/2017/12/11/浅谈token/

一点总结——我的心里话

 说实话,自己真正做完一个项目确实挺开心,特别是在把每一个接口都测试好,并且项目真正跑起来的时候,感觉身体特别放松,觉得付出的一切都值得。作为项目负责人,需要考虑的事情特别多,一边需要和团队成员沟通,讨论需求,讨论接口,另一边还需要思考如何进行后台的整个架构,还要关心项目的进度等等,虽然团队在磨合过程中确实出现了很多问题,比如由于前期的交流不充分,需求讨论的不清楚,导致后面的接口改了好多次。还有比如原先对微信小程序的机制不是太了解,差点导致项目崩盘等等。但好在我们都坚持了下来,不管这个项目做得好不好,但我们起码还是把它完成了,总的来说还是要谢谢我们的团队,谢谢这次做项目的经历,让我得到了锻炼与成长,同时也让我明白了作为一个项目负责人,应该明白如何和组员进行良好的沟通,应该有一个清晰的项目进度计划,应该制定一个完善的奖惩措施,应该统筹安排好每个分支的工作。确实,一次历练就是一次成长,一次成长对于整个人生来说弥足珍贵!

HelloBird——资源回收o2o平台相关推荐

  1. 基于微信小程序的再生资源回收平台设计与开发(论文+程序设计源码+数据库文件)

    1 绪论 2 1.1 项目开发背景 2 1.2 项目开发意义 2 1.3 项目主要的内容 2 2 相关技术介绍及系统环境开发条件 3 2.1相关技术介绍 3 2.2系统环境开发条件 4 3 系统的需求 ...

  2. 2022年O2O平台还值得做吗

    本地生活服务的诱人"蛋糕"十分可观,到2025年,我国本地生活服务市场规模将从2020年的19.5万亿元增长至35.3万亿元.由于"互联网+"和"懒人 ...

  3. O2O平台盈利模式有哪些

    直击法:说脸打脸 这是最常规.直接的玩法,生产什么卖什么.比如餐饮.美发.商品零售等等,传统企业玩互联网目下相当一部分还是玩营销渠道,后端系统与平台,后端与供应链,等等,整个信息链条的打通还有一段距离 ...

  4. O2O平台模式为什么需要接入分账系统?

    O2O的英文全称是Online To Offline,与传统的消费者在商家店里直接消费的模式不同,O2O平台模式是指线下商家能够入驻到线上平台,借助于互联网打通商家与消费者之间的联系,消费者可以在线上 ...

  5. 哪些平台属于典型O2O模式 O2O平台为什么要接入分账系统?

    随着互联网的不断发展,电商企业成为现在商业模式的主力军,而电商所依靠的就是商城平台系统,自行开发和入驻更好的平台商城系统是常见的模式,不管O2O商业模式,还是哪种模式,想要得到更好的使用效果,就必须要 ...

  6. Linux线程退出、资源回收、资源清理的方法

    首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题. 1.子线程创建时从父线程copy出来的栈内存; 线程退出有多种方式,如return,pthread_exit,pthread_c ...

  7. java手动回收_浅谈java是如何做资源回收补救的

    学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏.java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合理回收 ...

  8. java 线程池 资源回收_JAVA线程池资源回收的问题

    最近项目中为了提高用户体验度,前台创建任务后台任务,用多线程来跑. 现在的场景:后台定时任务管理这两个线程池,一个最大线程数10个,一个最大线程数15.应用部署之后,不超过5个小时,服务器负载高,内存 ...

  9. linux 线程退出资源回收,有关linux线程资源回收的有关问题

    有关linux线程资源回收的问题 使用linux c编程的,开启一个线程,这个线程中申请了一些资源.如果需要这个线程马上取消并且回收申请的资源怎么办啊? 前面使用了pthread_cancel()这个 ...

最新文章

  1. linux文本编辑nano
  2. html中的时间代码怎么写,html网页代码中的时间样式怎样设置
  3. java单例模式 三种_三种java单例模式概述
  4. 你是农村人吗?小时候没有自来水,每天喝的是什么水?
  5. 解决IDEA中Maven加载依赖包慢的问题
  6. 360服务器自动获取设置,360推“史上最严重安全漏洞”自动检测工具 用户一键获取补丁...
  7. 计算机软件质量保证计划示例
  8. 新春活动策划案例(共31份)
  9. 【Linux】POSIX信号量
  10. 指南针c语言程序,HMC5883L电子指南针单片机程序
  11. 坐在自己的命运之中——《大先生》鲁迅一生的最后一分钟
  12. 数字IC设计学习笔记_8位7段数码管1
  13. 第2章第6节:使用Slider滑杆在指定的范围内选择一个数值 [SwiftUI快速入门到实战]
  14. 【RPG黑暗之光】第四章· 物品模块
  15. python利用装饰器进行运行耗时分析
  16. 超详细Netty入门
  17. 开关电源空载吱吱声_导致开关电源啸叫的六种情况及解决方法
  18. 他是国家的儿子 如不再优秀请原谅他
  19. 天源财富:室温下成功合成新型稳定有机化合物
  20. 【x3daudio1_7.dll下载】x3daudio1_7.dll怎么安装

热门文章

  1. IATF16949认证辅导,对顾客特殊要求进行评估和确定并包含在质量管理体系范围
  2. 医疗时鲜资讯:在线问诊可否采用熟人推荐“模式
  3. 招聘 | 百度NLP部 - 对话算法实习生
  4. 二维火 Android 云收银模块化架构实践
  5. Linux 有/无设备树下 platform_driver 驱动框架
  6. ucGUI 重绘分析(一)
  7. 57闭环步进电机57闭环步进电机方案57步进电机42 自己做的闭环驱动器,驱动器是全新的
  8. 第八章 数组 个人总结笔记
  9. mRSA和SEM介绍
  10. 操作系统-Linux内核系列