驴窝窝旅游点评项目
项目目的
项目的理解和技术技巧的熟练使用;月薪可达8K水平;
对原来技术的掌握,项目中的技术请无死角掌握;
想一下项目可以怎么去拓展,去实现新功能;
独立完成新的需求,举一反三;自主学习,自主思考;不要局限于老师讲的;
对技术需求的理解和掌握,怎么用好工具完成需求;
易忘,要在固定的时间复习;
1,项目的总体安排;
2,项目的重点:
1,本项目的重点不是去制作一个完整旅游点评项目,而是了解整个旅游点评项目各个流程和需求,对实际项目开发有一个较为深刻的理解;
2,掌握项目中的一些重要的第三方工具/框架;比如bootstrap;uploadify;ueditor;等的使用;
3,掌握提升自我价值的知识点;比如redis,dubbo,mongodb,elasticsearch
4,掌握如何从0到1开发项目。
3,项目的学习方法:
1,深入学习和理解项目的需求,和一个产品的设计理念;
2,这个项项目,重点不要纠结于细节的代码实现,要从更大的范围去理解一个项目/产品的开发过程;
3,理解项目中的相关业务流程,学会自己去阅读第三方开发文档等(分享/第三方登录/短信发送);
4,从原理上掌握更高级的工具的使用,重点是要理解,什么时候需要用到这些东西,和使用这些东西的基本方式;
演示项目
技术路线
我们在做架构的时候并没有讲到SSH,SSM。这些东西不叫架构.做叫做技术路线.在做架构的时候根本就没必要在意用得是什么语言,或者什么框架。
项目技术路线:
数据库:mongodb + elasticsearch;
持久化层:mongodb+Redis (缓存);
业务层:Springboot;
Web:SpringMVC;
前端:
管理后台:jQuery+Bootstrap3
前端展示:vue +jquery + css;
从零开始搭项目就要明确要使用的技术;
项目搭建
项目拆分
trip-website
:PC前端,用于数据展示trip-mgrsite
:PC前端数据提供接口trip-website-api
:前端数据管理项目
拆分目的:
方便维护:项目部署之后不会一下全部停掉;
安全考虑:数据资源不允许外界访问(数据藏起来);
部署可性能考虑:用户访问量太大一个服务器撑不住了,前端Tomcat需要进行拓展;后端进行数据的维护,不需要拓展;需要提高想性能的时候只需要针对某个项目做优化即可;
责任分离,专人专事:前端与后端的拆分(动静拆分:纯页面
[trip-website]
+ 纯接口[trip-website-api]
);展示与管理的拆分(trip-mgrsite
,trip-website/api
);
maven项目结构分析
项目拆分之后,项目的结构和设计会发生什么变化?
两个web项目没有必要都配置一样的依赖和插件和共同的操作(作为依赖):
将两个项目都要的操作提出来,通过依赖的方式共有:
项目核心功能 core
domain/repository/service/uitl等
所有的项目中依赖的相同部分,再抽上去,
怎么抽取依赖:parent 统一管理整个项目的依赖,其他的通过继承的方式来使用到这些共同的依赖;
parent里的依赖来源于SpringBoot:所以parent继承自SpringBoot
项目组成结构
父项目:统一管理整个项目的依赖 pom.xml
,不需要写任何代码;
对子项目进行版本管理
对子项目的依赖进行管理
如果所有子项目都需要引入同一个依赖,那么就可以将这个依赖添加到父项目中的pom.xml文件中,这样所有的子项目都可以拥有这个依赖;
如果某部分子项目需要引入某个依赖,而另一部分不需要,需要将这个依赖防止到父项目的pom.xml文件中的dependencyMangement标签内,它仅仅管理的依赖版本,需要用到的依赖在子项目中只需引入X轴跟Y轴,不需要引入版本;
新建项目:
在pom.xml中添加依赖:
这样就完成这部分了:
core
项目结构:同级结构,层级结构;
这是层级结构:
修改路径为同级结构:
创建前端的项目:在一个idea中做,两个idea可能内存撑不住
依赖版本管理
父项目中仅仅管理版本;
在子项目里添加需要的依赖,不需要版本
代码实现
需求:通过浏览器查看数据库的数据;
库的CRUD放的位置?core中,子项目公用
数据库配置:
添加需要的依赖:明白为什么要哪些?
注意实现序列化接口;
CRUD操作相关:
service接口和实现:
项目weapi里:建controller
添加依赖:
web
、core
mongodb的配置文件
启动测试能不能访问:
配置类:
项目结构:
项目搭建出了问题修改:
删除会错乱的情况,因为idea没有即时更新文件记录,所以我们要让idea重新建一次:
删除磁盘文件中的文件留下src、和pom文件
代码实现思路:
用户注册和登录:
准备页面数据和文件:
用户注册:
打开对应的需求文档看着需求来做;
需求分析:拆分需求,然后再按步骤一步一步实现;千万别直接动手写代码,那样写的是bug,不是代码,会漏掉很多的细节。
需求实现:
思考项目简单的模块,看页面——后台——页面,是怎么实现的?
明白应该去哪里写功能实现的代码;
验证方法实现:
JPA查询数据:
测试:号码验证功能
跨域访问的问题:
在配置类中添加跨域的解决代码。
缕清思路,顺着思路写代码,测试;
注册信息:
校验:前端插件做校验;拓展:jquery-validation插件,可看菜鸟教程实例;
暂时不做验证码;
注册功能:
参数:
方法中形参位置和前台传过来的要一样:
问:重复输入的密码要不要传到后台?
前端校验过了,后端也必须要对密码进行验证(保证代码健壮性);前端要做的校验,后端必须要做,保证健壮性。涉及参数的传递——校验。
参数的判断抽到parent,写断言;
断言:代码到某个步骤出问题抛个异常;
如此代码更优雅了:少了一堆的if判断
判断两次密码是否一样:也需要判断是否为null,因为工具方法中方法的调用顺序可能不同。
拓展:java中怎么执行正则表达式判断手机号码;
装插件:给对象的许多属性设置默认值。再保存,简化操作。
回调函数的参数设计:
后台返回的参数应该是什么?
测试注册过程:
异常处理
如果程序运行过程中出现异常,要进行处理。
区分给用户和给系统的异常:自定义异常
将给用户看的异常都throw自定义的异常
小伙砸,欢迎再看分享给其他小伙伴!共同进步!
本文分享自微信公众号 - java学途(javaxty)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4673060/blog/4660942