一. 开发社区首页

1. 目标

1)开发流程:
用户一次请求能够访问到牛客网的首页。
2)分步实现(简化开发流程,一步一步完成)

  • 开发社区首页,显示前10个帖子
  • 开发分页组件,分页显示说有的帖子

    3)从下向上进行开发
  1. **Dao:**首先通过Dao组件书写sql语句,对数据库进行访问
  2. **Service:**通过Service书写服务功能,对Dao进行注入访问
  3. **Controller:**通过Controller对功能进行显示,然后对Service进行注入访问

2. 步骤一:显示前十条数据

2.1 准备工作

1)新建maven项目,在Mybatis数据库中导入所需要的表。(进入数据库后的操作)

  1. 首先建立一个community数据库,然后选择该数据库,并把下面三个资源导入进去
  2. init_schema.sql:建表文件 : source E:/source/init_schema.sql;
  3. init_data.sql:显示数据文件:source E:/source/init_data.sql;
  4. tables_mysql_innodb.sql: source E:/source/tables_mysql_innodb.sql;
    2)Entity:数据库中一些重要表格的说明(这个都放在实体类entity中)
  5. User(用户详情表)
    private int id;                //用户id(系统分配)
    private String username;       //用户账户名
    private String password;       //用户密码
    private String salt;           //对密码进行保护(MD码)
    private String email;          //用户邮箱
    private int type;              //用户类型
    private int status;            //用户状态(会员)
    private String activationCode; //激活码
    private String headerUrl;      //用户头像路径
    private Date createTime;       //用户账号创建时间
  1. DiscussPost(帖子详情表)
    private int id;               //帖子id
    private int userId;           //用户id
    private String title;         //帖子标题
    private String content;       //帖子内容
    private int type;             //帖子类型(0-普通;1-置顶)
    private int status;           //帖子状态(0-正常;1-精华;2-拉黑)
    private Date createTime;      //帖子创建时间
    private int commentCount;     //帖子评论数量
    private double score;         //帖子分数(为后面帖子排名用)
  1. Page(分页表): 封装分页的一些信息,用在最下面分也处
    // 当前页码
    private int current = 1;
    // 显示上限
    private int limit = 10;
    // 数据总数(用于计算总页数)
    private int rows;
    // 查询路径(用于复用分页链接)
    private String path;
    //一些方法:
    //1)获取当前页的起始行
    //2)获取总页数
    //3)获取起始页码
    //4)获取结束页码

2.2 Dao层的书写

  1. 在Dao层建立DiscussPostMapper的接口,功能说明1. :
    (1)方法一:分页功能
    (2)方法二:查询表中帖子的行数
  2. 功能实现:将会在Resource层的maper文件夹中discusspost-mapper.xml文件实现
  3. 功能测试:在测试处实现:MapperTest

2.3 Service层的书写(业务说明)

  1. 在Service层新建DiscussPostService
    (0):首先需要自动注入Dao层的DiscussPostMapper
    (1):定义两个方法,返回值为调用Dao中DiscussPostMapper的两个方法
//1)    //方法一:设定方法,调用dao中的方法进行分页数据输出
//2)    //方法二:设定方法,调用dao中的方法进行数据总行数输出
  1. 在Service层新建UserService
    (0):主要功能是根据用户id能够得到用户的名字,方便后续的一些操作。
  2. 注意事项:
    1)由于在此处的Service并没有完成一些额外的操作,可不可以直接调用Dao层的方法,跳过Service层,答案是不可以,因为后续如果要添加一些功能,还是需要Service层,所以最好一开始就把层级搭建完善。

2.4 Controller层的书写(视图层)

  1. 首先在Controller层新建文件:HomeController,即首页层
  2. 注入Service层的两个依赖:DiscussPostService和UserService
  3. 书写方法getIndexPage,采用的是get请求,从服务端获取信息,数据时动态显示的,有帖子的内容和用户的内容。:通过url就能够访问得到所需要的结果,不需要数据进行传递:url:http://localhost:8080/community/index
  4. 书写前端的页面代码,即在templates的indexhtml文件进行修改,把能够map(从HomeController得来,包含所有帖子和用户的数据:map.use和map,post进行数据获取)获取的数据填入页面进行展示。

3. 步骤二:分页组件

  1. 核心逻辑:在前端点击分页的部分,能够向后端传递一个页面的值,后端再根据页面的值,返回数据展示在前端,前后端不分离,进行交互(在公司项目是前后端分离的)
  2. 封装分页需要组件:entity中的page
  3. 在模板引擎中进行循环输出,discusspost为循环对象。在前端页面,根据当前的页面信息,动态显示需要数据。

3. 步骤二:分页组件

二. 目调试技巧

1. 状态码(排查错误原因)

0.状态码
根据状态码,查找问题的原因

2. 断点调试

找到错误的位置,并且进行修改。

  1. 服务端代码:就是项目中打断点,打了断点之后通过访问页面进行方法调用查看情形;服务端的断点还可以集中管理
  2. 客户端代码:就是调试JS代码,在网页开发者模式中调试

3. 日志输出

  1. 日志输出是显示项目运行的一些基本情况。
  2. 首先可以设置日志的级别,低于设置级别的日志不输出,并且可以把日志放进指定文件中进行存取
    日志级别:从低到高debug,info,warn和error。
  3. 日志自动输出到后台,且能够按照级别进行分文件夹,同时可以保证每一个文件夹不会太大,调用文件放到resource中:logback_spring.xml

三. 版本控制

3.1 版本控制软件为git

  1. 访问地址:https://git-scm.com/book/zh/v2
  2. 书籍阅读:有中文版,核心学习第一章和第二章
  3. 属于分布式版本控制系统,好用

3 版本控制系统发展

集中化版本控制系统VCS

  1. 原理与缺点:
    原理:每个人把做的项目都上传到一个线上数据库中,记录项目各种历史信息
    缺点:如果线上数据库出现问题,那么就会丢失信息

分布式版本控制系统Git

  1. 原理与缺点:
    原理:每个人的电脑上有本地仓库,还有线上仓库,有两个,更加安全

3. Git的常用命令

4. IDEA集成Git

四. 项目调试tip(自己总结)

1.打开一个新的project,如果要在本地运行的话,需要检查以下几步
0)查看mysql是否已经开启了,开启的方式见上面的详细说明。
1)首先在配置文件中,需要修改MYSQL的登录名和账号
2)需要重新配置一下maven的地址:setting文件和repository的存放位置,还有就是jdk的版本号,也是在maven处进行调试
3)可以开始运行了,首先可以通过首页展示查看一下效果,一定要注意端口号,避免进行复用。

主要针对后端,前段的内容快一点,不用了解那么细,先整体过一遍

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐