项目实战 |
您所在的位置:网站首页 › 黑马结果 › 项目实战 |
传智健康项目
2022.3.2-2022.3.16 --BDY 文章目录 传智健康项目项目介绍及技术架构一、项目流程1.后台管理系统编写2.微信端预约系统编写在这里插入图片描述3.图形展示及权限控制4.数据库设计5.项目总框架和配置 二、项目代码收获1.与前端页面交互(springmvc)2.服务层(spring)3.数据访问层(mybatis)4.其他实体类以及操作 三、项目问题1.项目初入杂谈2.关于setmeal中的add方法出现的问题3.关于ordersetting中日期格式问题4.关于ordersetting中mysql时区问题5.关于静态页面展示问题6.关于List的问题7.关于数组空指针异常 的问题8.关于business报表问题 四、总结 项目介绍及技术架构传智健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提高健康管理师的工作效率,加强与会员间的互动,增强管理者对健康管理机构运营情况的了解。 — 主要后端技术栈: Spring,SpringMVC,Mybatis (SSM框架) zookeeper,dubbo,SpringSecrity (分布式与权限) Git,Apache POI,Echarts (版本控制与报表) 腾讯云短信服务,七牛云存储服务,微信开发平台 (第三方服务) 一、项目流程 1.后台管理系统编写预约管理
主要学习内容: 1.主要关于CRUD操作,和基本的SSM项目编写 2.有分页查询的学习 3.关于日历控件和EXCEL文件上传下载 4.有关七牛云服务上传图片 2.微信端预约系统编写 Setmeal全部及详情展示![]()
主要学习内容: 1.CRUD及腾讯云短信服务 2.登录和短信验证服务 3.微信开发平台操作 4.页面静态化技术 3.图形展示及权限控制4.Security 登录验证,赋予权限 主要学习内容: 1.Echarts 有关图形报表的数据的查询上传 2.关于Spring Security的学习使用 4.数据库设计##表关联和描述不做展示 5.项目总框架和配置1.总框架 health_parent父项,统一管理 后台系统 ![]() 服务接口 关于定时组件 微信端 health_servide_provider 存放dubbo中的service服务 2.项目pom依赖 主要pom依赖在common,interface依赖于commom,其余依赖interface,parent实现pom文件版本控制。 3.配置 主要配置文件 1.log4j.properties:日志文件 2.springmvc.xml:关于SpringMVC配置,注解驱动,包扫描 3.spring-redis.xml:redis缓存,jedis连接池 4.spring-security.xml:SpringSecurity权限控制 5.web.xml:web容器配置,与前端交互 6.redis.properties:redis启动配置 7.freemarker.properties:网页静态化技术 8.spring-service.xml:服务注册,包扫描 9.spring-dao.xml:mybatis使用JDBC配置 10.spring-tx.xml:用于开启事务支持 二、项目代码收获 1.与前端页面交互(springmvc)
项目主要是通过ajax请求来访问,一般get请求是请求数据,将要传给后台的数据放在url中,数据一般是基础类型,post请求一般是向后台传输数据,数据主要放在表单或请求体中。通过观察前端页面可以知道后台需要如何操作 Controller层,通过@RequestMapping 来映射请求,通过@RequestBody来获取传回来的json数据并封装,或者通过@RequestParam来获取一般数据,然后通过@Reference(调用dubbo)调用service层来获取服务。 在返回数据中,一般在实体类entity中添加返回实体类Result,然后返回Result对象。 2.服务层(spring)项目的Controller层通过调用dubbo服务来访问service层,在service层中主要编写业务代码,然后调用Dao层访问数据库,取得数据 主要注解@Service(interfaceClass = OrderService.class),@Transactional 3.数据访问层(mybatis)mybatis中Dao接口被调用后会通过dao.xml中的sql语句来查询数据库。主要设计CRUD和多表联查以及条件查询 //mapper动态代理 4.其他实体类以及操作在编写实体类时需要注意对应数据库中的表,还有分页查询PageQuery,返回结果Result的实体类 @PreAuthorize(“hasAuthority(‘CHECKITEM_DELETE’)”)//权限校验,权限校验注解使用 如何使用分页查询,如何使用日期 三、项目问题 1.项目初入杂谈//去zookepper服务注册中心查找服务,注解的作用 @Reference //因为是int所以不用解析不用requestBody public Result delete( Integer id){ //因为RestController ,java数据转为json数据 //明确实现的是哪个服务接口 @Service(interfaceClass = CheckItemService.class) Mysql版本问题 driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/health?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Hongkong" //checkgroupIds名称要跟前端穿回来的一样 public Result add(@RequestBody Setmeal setmeal,Integer[] checkgroupIds){ 2.关于setmeal中的add方法出现的问题在setmealService中能调用到取到id在Controller中取不到的问题,在前端传回的数据中并没有id,要在调用Dao 的新增方法后才有id值 3.关于ordersetting中日期格式问题//这里数据库中的数据是2022-03-01; //传过来的数据是2022-3-1; //对ordersetting。html中的月份前面加0 //不加0也能成功,?mybatis会自动判断?==》 sql语句 SELECT * FROM t_ordersetting WHERE orderDate BETWEEN ‘2022-3-4’ AND ‘2022-3-24’;也能查询成功 //说明不需要零,加0不加0都能成功 4.关于ordersetting中mysql时区问题//这里的date传入后会出现问题,因为数据库的时间是UTC比中国早八个小时,所以时间传过去会变成前一天的时间 时区详解 //https://blog.csdn.net/qq631431929/article/details/51731834 //方法,更改时区hongkong //还有个问题,select错误,insert能操作??? 5.关于静态页面展示问题原视频中的静态页面重新新增数据后并不会覆盖原有页面,需要先删除原有文件,再添加静态页面。 //静态网页并不会覆盖原有静态网页 //解决办法,将原有的文件删除,new File(outputPath + “\” + htmlname).delete(); 6.关于List的问题//这里list的值会覆盖原来的值????? //https://blog.csdn.net/ChaoticNg/article/details/121669316LIst //在for循环里面Map map = new HashMap(); 即可,每次在堆中创建一个新的map,防止覆盖。 //因为list指向的是map 的地址,所以不管什么时候查list,在map中就只有一个数据 7.关于数组空指针异常 的问题//出现数组空指针异常,解决办法先查数量再赋值 8.关于business报表问题
本次项目一共历时16天,总的来说效率很低,正常情况下应该是十天以内。本次项目最主要是练习了基于SSM的CRUD,学习了SpringSecurity和Redis缓存的问题,复习了很多东西,也学习了整个项目的开发流程和开发规范。 包括腾讯云,七牛云,微信端的开发,也简单利用了zookeeper和dubbo构建分布式系统,也学到了分页 查询,日历操作,报表和图文等操作。 项目成功上传到gitee url:https://gitee.com/bian-deyong/project-practice.git |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |