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

  • Post author:
  • Post category: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)的缩写,是一种软件设计典范。它是用一种业务逻辑







后端







、数据







数据库







与界面显示







前端










分离



的方法来组织代码,将众多的业务逻辑聚集到一个部件







调用方法







里面,在需要改进和个性化定制界面及用户交互







更改页面







的同时,不需要重新编写业务逻辑







重写后端







,达到减少编码的时间。



C




ontroller控制器


:指控制器接受用户的输入并调用模型







后端







和视图







前端







去完成用户的需求,控制器本身不输出任何东西和做任何处理。




基于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. 每写完一个类,要及时用


    AJCG





    FindBugs


    插件进行检测并修改。




7.2 bug/任务管理



使用


bugdone


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




7.3前后端对接



使用


eolinker AMS


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




7.4定时开会



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

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

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

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



版权声明:本文为Cary_1029原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。