“面对面”app及员工管理系统---第一个java项目总结

个人层面

  1. JFinal入门

做了这么久项目,对JFinal框架似懂非懂,趁这个机会我们来一起深入理解一下。

1.1 JFinal五大组成部分

1.1.1 Controller

Controller 是 JFinal 核心类之一,该类作为 MVC 模式中的控制器。基于 JFinal 的 Web 应 用的控制器需要继承该类。Controller 是定义 Action 方法的地点,是组织 Action 的一种方式, 一个 Controller 可以包含多个 Action。Controller 是线程安全的。

 

在本项目中,config配置路由,将“/”映射到HomeCtrl这个控制器

 

相关名词解释:

MVC模式:是业务模型(model)用户界面(view)控制器(controller)的缩写,是一种软件设计典范。它是用一种业务逻辑后端、数据数据库与界面显示前端分离的方法来组织代码,将众多的业务逻辑聚集到一个部件调用方法里面,在需要改进和个性化定制界面及用户交互更改页面的同时,不需要重新编写业务逻辑重写后端,达到减少编码的时间。

Controller控制器:指控制器接受用户的输入并调用模型后端和视图前端去完成用户的需求,控制器本身不输出任何东西和做任何处理。

 

基于JFinal的Web应用的控制器需要继承该类”在本项目中的体现。

Action在controller中定义的 public 无参方法,是请求的最小单位。

1.1.2 plugin

JFinal拥有Plugin体系结构,扩展性强。

在本项目中ActiveRecord 和EhCachePlugin是作为 JFinal 的 Plugin 而存在的,所以使用时需要在 JFinalConfig 中配置它们.

相关名词解释:

ActiveRecord:JFinal 最核心的组成部分之一,通过 ActiveRecord 来操作数据库,将极大 地减少代码量,极大地提升开发效率。

EhCachePlugin:JFinal 集成的缓存插件,通过使用 EhCachePlugin 可以提高系统的并发 访问速度。

 

 

1.1.3 render

render系列方法将渲染不同类型的视图并返回给客户端。

通常情况下使用 Controller.render(String)方法来渲染视图,使用Controller.render(String)时的 视图类型由JFinalConfig.configConstant(Constants constants)配置中的constants. setViewType(ViewType)来决定,该设置方法支持的 ViewType 有:FreeMarker、JSP、Velocity, 不进行配置时的缺省配置为 FreeMarker.

 

在本项目中,config配置视图类型(viewType)为JSP

常用的render方法:renderJson(jhm)

将 JsonHashMap对象转换成 json 数据并渲染再返回给客户端

 

1.1.4 Handler

Handler 可以接管所有 web 请求,并对应用拥有完全的控制权,可以很方便地实现更高层的功能性扩展。

在本项目中,config配置Handler为空

1.1.5 Interceptor

Interceptor 可以对方法进行拦截,并提供机会在方法的前后添加切面代码,实现 AOP 的 核心目标。Interceptor 接口仅仅定了一个方法 void intercept(Invocation inv)。

在本项目中,config配置Interceptor

 

 

1.2 JFinal架构图解析

 

1.3 JFinal主要特点之四

 

  1. 熟练运用SQL

项目CRUD式的业务需求决定了我们将大量运用SQL的知识,比如模糊查询、关联查询、子查询等等。通过本次项目,我们对SQL的使用更加熟练,但写出来的SQL语句并无法实现最高效的查询。只有在以后的项目中,多写多思考,才能有更大的进步!

 

2.1 SQL生疏知识总结

  1. !=等价于<>
  2. LIKE条件(模糊查询)
  3. IN和NOT IN(符合列表范围中的数据)
  4. BETWEEN ... AND ...(符合某个值域范围的数据)
  5. ANY和ALL条件(大于最大、小于最小....)
  6. DISTINCT过滤重复
  7. 聚合函数(MAX和MIN、AVG和SUM)
  8. GROUP BY (按什么分组)
  9. HAVING (进一步限制分组结果)
  10. 查询语句的执行顺序(重要!)
  11. 笛卡尔积
  12. 内连接(返回两个关联表中满足连接条件的所有记录)
  13. 外连接(不仅返回满足连接条件的记录,还将返回不满足连接条件的记录)

 

2.2 SQL查询详解

https://blog.csdn.net/kuangzhixuan/article/details/74299047

 

  1. Tomcat 部署

3.1 rebuild project

3.2 copy out/production下的目标文件

3.3连接远程服务器

 

3.4复制到目标位置,并开启Tomcat部署

  1. Git使用

4.1 频上传/更新

每次上传前要更新,每写完一个方法,用浏览器测试后无问题立即上传并提醒大家更新。

4.2一般冲突解决方法

碰到冲突先stash,再unstash基本都能解决。

或者是先将冲突的本地文件备份,将本地的改成与服务器一致,pull后再进行替换。

 

  1. 非技术方面的能力提升

5.1沟通表达能力

在项目开发过程中,每天与老师、同学们沟通交流项目的问题,给同学们讲解Findbugs和AJCG等等。沟通表达能力逐步提高,但还是有很大进步空间。从一开始表达的不够准确,到现在相对准确了。特别是刚开始和焦老师接触时,我好几次将问题说错,降低了效率。现在明白了碰到任何问题应该这么描述:1.现状是什么?2.目标是什么?3.应该改哪里?

5.2协作管理能力

与前端对接接口,联合测试,一起改bug,遇到不懂的互相请教

管理接口、数据库、bug、任务,使每个人各司其职,稳步推进项目

5.3良好的心态

在项目开发过程中,保持良好的心态很重要!

在和别人沟通时,一定要保持足够的耐心,学会表达的同时也要学会倾听。

要学会谦虚,不懂的问题要敢于向他人请教,彼此互相学习,共同进步。

当自己负责的模块出现bug时,要淡定,要明白“完美的程序不是一次就能写出来的”,而是经过多次打磨、纠错,最终才能达到相对完美。

 

团队层面

  1. 开发过程中的不足之处

6.1数据库问题

  1. 很多数据表中的字段没有注释(必须得有),让人看不懂。
  2. 数据表有改动时,没有及时更新到远程数据库和每个人的本地库,同时记录改动请况。
  3. 测试功能时经常因为数据“不合理”导致bug百出,极其浪费时间。

 

6.2界面设计问题

PC端的界面设计频繁改动,原因在于初期规划时考虑的不够周全。

(例如:“全部”刷新建、工资的全职兼职等等)

希望在下个项目中设计页面时能够更多地站在用户的角度思考,设计更加合理。

 

6.3后端代码问题

1.开发顺序不合理(个人认为应先做“登录权限设置”,再做其他)

2.代码不写注释!!

3.代码不够精简、规范。

6.4前后对接问题

  1. 接口文档错误不断,无疑增加了沟通的时间成本。
  2. 前端拿到接口,如果出现bug,应先判断是前端/后端的(ret/F12),再进行处理。

 

  1. 对今后开发的建议

7.1后端代码

  1. 在开发前,写一个开发工具文档。
  2. 代码必须要有注释!
  3. 变量命名语义化。
  4. 每写完一个类,要及时用AJCGFindBugs插件进行检测并修改。

7.2 bug/任务管理

使用bugdone系统管理bug/任务,分配到个人,解决后要及时勾选“完成”。

7.3前后端对接

使用eolinker AMS系统记录接口文档,分配到个人,文档有改动要及时更新。

 

7.4定时开会

建议每一或两周项目组开一次会:

一是可以沟通项目存在的共性问题。

二是锻炼大家的表达能力。

只有多进行有效的沟通,团队成员之间才能越来越默契。

 

猜你喜欢

转载自blog.csdn.net/Cary_1029/article/details/83045213