Java旅游点评项目笔记之项目搭建和实现

我与影子孤独终老i 提交于 2021-02-11 20:32:05


不点蓝字,我们哪来故事?



驴窝窝旅游点评项目

项目目的

项目的理解和技术技巧的熟练使用;月薪可达8K水平;

对原来技术的掌握,项目中的技术请无死角掌握;

想一下项目可以怎么去拓展,去实现新功能;

独立完成新的需求,举一反三;自主学习,自主思考;不要局限于老师讲的;

对技术需求的理解和掌握,怎么用好工具完成需求;

易忘,要在固定的时间复习;



1,项目的总体安排

2,项目的重点

    1,本项目的重点不是去制作一个完整旅游点评项目,而是了解整个旅游点评项目各个流程和需求,对实际项目开发有一个较为深刻的理解;

  2,掌握项目中的一些重要的第三方工具/框架;比如bootstrap;uploadify;ueditor;等的使用;

 3,掌握提升自我价值的知识点;比如redis,dubbo,mongodb,elasticsearch

 4,掌握如何从0到1开发项目。

3,项目的学习方法

1,深入学习和理解项目的需求,和一个产品的设计理念;

2,这个项项目,重点不要纠结于细节的代码实现,要从更大的范围去理解一个项目/产品的开发过程;

3,理解项目中的相关业务流程,学会自己去阅读第三方开发文档等(分享/第三方登录/短信发送);

4,从原理上掌握更高级的工具的使用,重点是要理解,什么时候需要用到这些东西,和使用这些东西的基本方式;


演示项目


技术路线

我们在做架构的时候并没有讲到SSH,SSM。这些东西不叫架构.做叫做技术路线.在做架构的时候根本就没必要在意用得是什么语言,或者什么框架。

项目技术路线:

  1. 数据库:mongodb + elasticsearch;

  2. 持久化层:mongodb+Redis (缓存);

  3. 业务层:Springboot;

  4. Web:SpringMVC;

  5. 前端:  

    管理后台:jQuery+Bootstrap3  

    前端展示:vue +jquery + css;


从零开始搭项目就要明确要使用的技术;



项目搭建

项目拆分
  1. trip-website:PC前端,用于数据展示

  2. trip-mgrsite:PC前端数据提供接口

  3. trip-website-api:前端数据管理项目

拆分目的

  • 方便维护:项目部署之后不会一下全部停掉;

  • 安全考虑:数据资源不允许外界访问(数据藏起来);

  • 部署可性能考虑:用户访问量太大一个服务器撑不住了,前端Tomcat需要进行拓展;后端进行数据的维护,不需要拓展;需要提高想性能的时候只需要针对某个项目做优化即可;

  • 责任分离,专人专事:前端与后端的拆分(动静拆分:纯页面[trip-website] + 纯接口[trip-website-api]);展示与管理的拆分(trip-mgrsitetrip-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

添加依赖:

webcore

mongodb的配置文件


启动测试能不能访问:

配置类:



项目结构:


项目搭建出了问题修改:

删除会错乱的情况,因为idea没有即时更新文件记录,所以我们要让idea重新建一次:

删除磁盘文件中的文件留下src、和pom文件


代码实现思路:


用户注册和登录:

准备页面数据和文件:

用户注册:

打开对应的需求文档看着需求来做


需求分析:拆分需求,然后再按步骤一步一步实现;千万别直接动手写代码,那样写的是bug,不是代码,会漏掉很多的细节


需求实现:

思考项目简单的模块,看页面——后台——页面,是怎么实现的?


明白应该去哪里写功能实现的代码;

验证方法实现:

JPA查询数据:

测试:号码验证功能

跨域访问的问题:

在配置类中添加跨域的解决代码。


缕清思路,顺着思路写代码,测试;


注册信息:

校验:前端插件做校验;拓展:jquery-validation插件,可看菜鸟教程实例;




暂时不做验证码;


注册功能:

参数:

方法中形参位置和前台传过来的要一样:

问:重复输入的密码要不要传到后台?

前端校验过了,后端也必须要对密码进行验证(保证代码健壮性);前端要做的校验,后端必须要做,保证健壮性。涉及参数的传递——校验

参数的判断抽到parent,写断言;

断言:代码到某个步骤出问题抛个异常;


如此代码更优雅了:少了一堆的if判断

判断两次密码是否一样:也需要判断是否为null,因为工具方法中方法的调用顺序可能不同。

拓展:java中怎么执行正则表达式判断手机号码;

装插件:给对象的许多属性设置默认值。再保存,简化操作。


回调函数的参数设计:

后台返回的参数应该是什么?



测试注册过程:



异常处理

如果程序运行过程中出现异常,要进行处理。

区分给用户和给系统的异常:自定义异常

将给用户看的异常都throw自定义的异常



java学途

只分享有用的Java技术资料 

扫描二维码关注公众号

 


笔记|学习资料|面试笔试题|经验分享 

如有任何需求或问题欢迎骚扰。微信号:JL2020aini

或扫描下方二维码添加小编微信

 




小伙砸,欢迎再看分享给其他小伙伴!共同进步!




本文分享自微信公众号 - java学途(javaxty)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!