花时间练手的项目,怎能不做总结
- 项目中用到的技术
- 项目中用到的设计模式
- MVC设计模式
- Filter+Servlet+反射
- 模块化的jsp设计
- 做项目的流程
- 需求分析
- 实体类的设计
- DAO类的设计
- 后台管理的开发
- 前台页面的开发
- 项目中遇到的错误
- 通过项目学到了什么
项目中用到的技术
Java SE基础;
前端:HTML,CSS,JavaScript,JQuery;
J2EE:Tomcat,Servlet,JSP,Filter;
数据库:MySQL;
项目中用到的设计模式
1.MVC设计模式贯穿了整个项目
2.Filter+Servlet+反射的设计模式
3.模块化的jsp设计
MVC设计模式
即模型(Model)、视图(View)、控制器(Controller)
模型就是数据(bean,dao);
视图就是网页,jsp,用来展示数据;
控制器就是把不同的数据,显示在不同的视图上。
Filter+Servlet+反射
原本一个功能需要对应一个Servlet,而后台管理需要增删改查编辑5种功能,所以仅仅后台就会需要30个Servlet,编程的成本还有出错的概率大大提高了。
所以就使用了这种设计模式,其中拦截器主要拦截浏览器的访问路径,对其进行判断,获取带有servlet名称和方法名称的字符串,转发到具体的servlet后通过反射调用指定的方法。
降低了开发成本,节约了大量时间。
模块化的jsp设计
通过jsp包含关系抽象出多个公共页面,并且把业务jsp按照功能,设计为多个小的jsp文件,便于维护和理解。
做项目的流程
1.需求分析
做一个项目,你当然要明白你要做什么功能。关于展示页面,后台的操作,还有它们之间的交互。
2.表结构的设计
表结构设计可以说相当于你建造大楼的地基,很重要。你需要想清楚在你这个项目中需要用到哪些表,以及表与表之间的关系。然后创建数据库和所需的表。
3.实体类的设计
根据创建好的表设计实体类,一个表对应着一个实体类。
4.DAO类的设计
根据实体类进行对应的DAO类的设计,包含有基本的CRUD方法和非CRUD方法,非CRUD方法比如说通过关键字查询、填充订单的订单项数据等等。
5.业务层设计
在此项目中DAO层比较详细,设计service层也只是调用DAO中的方法,倒显得麻烦了。所以在这个项目中直接使用Servlet调用DAO中的方法。
6.后台的原型以及开发
7.前台的原型以及开发
需求分析
1.后台方面,需要做对分类信息,产品信息的增删改查功能,还有对订单的查看,以及订单状态的修改功能。
2.前台方面,需要做产品的展示,产品的购买,订单状态的流转,登录注册等功能。
实体类的设计
通过表的列来创建相应实体类的属性,通过表与表之间的关系创建相应的集合。比如说产品类的属性应该有基本的产品信息,即产品的id、名称、小标题、原价、优惠价格、产品的库存数量、什么时候添加的产品、这个产品属于哪一个分类、该产品的首页图片、该产品的图片集合、产品的销量和评价数。
DAO类的设计
通过对应的实体类来设计对应的DAO类,DAO类中的方法应该具有基本的CRUD方法和非CRUD方法。比如说产品类的CRUD方法包含增删改,通过id查询、获取总数、分页查询、查询所有。非CRUD方法就包含查询某种分类下的所有产品、获取某种分类的产品总量、为分类填充产品集合、根据关键字查询产品、为产品设置主图片、为产品设置销量和评价数。
后台管理的开发
后台的管理基本是对数据库的增删改查操作。由于用户信息和订单信息很重要,故不需要相关的删除操作,而且都是由用户注册或生成订单,故后台也不需要相关的增加和修改功能,只需要查询功能即可。
1.分类管理
包含有设置分类的属性,设置分类下的产品的功能
2.用户管理
查看所有的用户
3.订单管理
主要是查看订单的详细信息,并且提供了发货按钮,用于修改订单状态信息。
前台页面的开发
在前台的页面中,几乎每一个页面都需要一些公共的代码,比如搜索框,页头,页脚的代码。所以能够抽出来公共的页面,来简化编程。
面对一些比较复杂的界面,比如首页来说,我们需要有横向的导航栏,还有竖向的分类信息栏,分类信息栏中又要显示具体的分类链接,再加上产品的信息。是很麻烦的一个界面。
故将首页拆分成公共页面:header.jsp、top.jsp 、search.jsp footer.jsp,再加上homePage.jsp就可以组成首页。然后homePage.jsp又可以分成分类加轮播的jsp和分类产品的jsp页面。对分类加轮播的jsp再进行拆分,将其拆分为分类的横向导航、竖向导航和轮播图三个jsp页面。
后面的页面都可以根据首页的这种拆分小jsp页面的方法来做。
项目中遇到的错误
1.在jsp页面写错属性名,导致获取不到数据。
根据错误提示能够很快找到出错点并修改,主要原因粗心。
2.在对数据库进行插入操作并返回自增的id时报错
错误原因是在使用getGeneratedKeys方法的过程中,没有使用Statement.RETURN_GENERATED_KEYS,导致出错。
当然在插入数据后有很多方法可以返回自增长的id,不过其他的我看着有挺大缺点的,所以就没有用。
3.还有其他的一些错误,大都是粗心大意导致,就不再一一详谈了。
通过项目学到了什么
1.巩固了项目中所用到的基础知识;
2.比较清晰的开发思路和流程;
3.Filter+Servlet+反射的设计模式;
4.模块化jsp的思想。