写在前面
这是我第一次写博客,打算写一个系列,项目是一门课程的作业。本项目为j2ee的实践项目,没有用框架实现,旨在熟悉j2ee的基础知识。后续博客将具体介绍一些重要的步骤或者功能的实现,以及在实现上面遇到的一些困惑。想看代码的童鞋可直接跳转 项目GitHub地址,我的服务器是tomcat,版本为apache-tomcat-7.0.105,在其他版本上运行可能会出问题,数据库为mysql。我也把项目部署在了云端,不过这个服务器是某公司和我们学校合作借给我们上课用的,估计过不了多久就会被收回去了。如果和它有缘你应该还能一睹其丑容:云端地址
项目简介
随着经济社会发展,人们出行旅游的需求不断增多,人们分享自己旅行所见所闻的需求意愿也越来越强。为满足人民日益增长的精神文化需要,【Daddy旅行社】委托同学们充分运用所学知识,完成一个旅游图片分享的交流平台。
实现功能
用户需要能够注册账号,并使用已经注册过的账号登录。在未登录前,用户在网站首页可以通过点击查看图片详情,用户可以对图片评论并按照时间和热度显示在详情页,可以在搜索页搜索展示筛选结果。但是不能收藏任何图片,也不能查看自己的关注用户列表。在用户登录后,用户可以通过用户名搜索其他用户并发出添加请求,待该用户同意后两者互为好友。用户可以收藏不同的展品,并决定自己的收藏是否向好友公开。如果向好友公开收藏,好友可以互相通过点击好友列表对应用户名来查看其收藏的图片列表。如果不公开,则不展示。
使用技术
- J2EE:
JSP、Servlet、JDBC、javaBean - 面向对象设计思想:
将业务逻辑中的实体对象抽象成程序中的类,对这些类进行CRUD操作 - MVC和DAO设计模式:
项目分为model、view和controller三个部分,jsp负责负责显示页面,即view,servlet负责获取前端参数,调用相关方法,对前端做出响应,即controller,Dao类负责对Javabean类实现一系列特定操作,抽象对数据库的增删改查,即model - 网页脚本语言:
jquery、ajax - 网页开发框架:
boostrap - 数据库:
MySQL
关于前后端分离
该项目采取了前后端分离的思想,但是没有做到真正的前后端分离开发,即前后端属于同一个项目,部署在一起。jsp负责前端,支持HTML、css、js等语言,通过ajax和后端的servlet进行不刷新页面的异步通信,或者通过url跳转再重定向进行刷新页面的通信,后端用java实现,负责操作数据库以及给前端提供所需的数据。
业界开发中一般会采取前后端分离,前后端用各自的框架分别开发,比如我参加的一个vue+springboot的合作项目,在我看来有如下好处:
- 便于开发。前后端开发人员只要商量好接口就可以,不需要管另外一端如何实现,对双方都很方便。而且现在的项目相比以前变得越来越复杂,而前后端的分离能够降低复杂度。
- 提高性能。前后端分别部署在不同的服务器上,通过前端路由的配置可以实现页面的按需加载,后端只需负责相应提供对应的数据,不用像jsp一样,后端还要解析前端页面,服务器压力会很大。
- 提升用户体验。就算后端服务器暂时超时或者宕机,前端页面也还可以访问,只是没有数据,比起直接返回404等错误页面更加友好。
- 解耦。高耦合会导致程序的性能难以提升、负载能力低下、可维护性可扩展性低、组件难以复用、修改后端代码前端也需要重新发布等问题,前后端分离能够很好的降低耦合。