项目总结

来源:互联网 发布:拍小成本电影知乎 编辑:程序博客网 时间:2024/05/22 03:08

刚开始,由于是第一次做java项目嘛,虽然说之前柴哥在课堂上讲课有项目的架构,而且还重点讲了CRUD,但是自己做得的时候脑袋还是一片空白,不知道从什么地方下手,于是呢,我就把项目的模板看了一下,看着看着慢慢就有了思路,因为模板上的数据或者图片都是静态的嘛,所以呢为了实现功能就把这些数据动态化,把数据都存在数据库中。

一、创建数据库

在建数据库的时候,我就把模板上的静态数据根据我的想法分类了,开始是特别感觉挺简单的,很快创建了几张表,表之间的联系也没有细想,当时做到后面以后发现有些表感觉不全,实现不了模板上的功能,就全部删了,导致最后做得功能就没那么多了,所以呢,感觉做项目之前数据库要创建好,想好每个表要实现的功能,以及各个表之间的联系,这样在实现功能的时候就方便很多。

二、写DTO和DAO

这一部分相对简单,根据数据库的数据把DTO给写完了;DAO就写了一个BaseDAO的接口,一开始只写了del();add();update();findAll();findByID();findByproperty();getCount();的方法的实现,这些功能在前面单表的查询完全够用;在后面做多表的分类查询时个人感觉有点不够用了,其实在多表的分类查询时,由于返回查询的数据也要分页,而之前获取的数据总条数是所以数据的总条数,所以就在这里不适用了;说实话在做这个多表的分类查询,其实花了一些时间,而且中途出现好多bug,这里就不详说了,后面在会详细说明的。

三、功能的实现

①  登陆和注册功能

由于柴哥提供了我们好多模板,所以这些页面的样式也就节省了不少的时间,只需要做一些逻辑处理,由于一开始没想那么多,就做了LoginServlet和RegisterServlet,发现其中大部分的代码都是重复,而且还发现通过注册存入数据库里的用户数据还有乱码问题,并且还有表单的重复提交,刚开始也没怎么重视,后面通过几天的自主学习,感觉对这些问题有了更加清晰的认识,乱码问题通过过滤器把编码改成了utf-8,后面为了防止用户的恶意登陆也做了过滤器,而表单的重复提交问题就用了Token,把Token存入session中,通过隐藏域传值把token传到servlet,在于session中的token作比较,相等的话就表明是第一次登陆,清空session中的token,就不会出现重复提交的问题了。

②  单表的CRUD

这一块可以说花了大部分时间,由于刚开始还不熟练,遇到好多问题,而且不知道怎么实现,只能自己看看视频或者上网查资料,总之花了大量时间,过程是痛苦了,不过熬下来之后,收获是大大的,感觉自己对CRUD以及很熟练了,对隐藏域的传值和target传值有了深刻的认识,所以说这张表就只做了一个BrandServlet。来说说遇到的问题吧,分页查询功能:这个算我做了最久的一个功能吧,我看好同学做得是一个ajax的通用分页,这样异步加载对用户的体验要好一些,但是我刚开始做的时候,我以为特别难也就没有尝试,后来看了看感觉还好,也就是把转成json对象,传到jsp页面,再进行一个遍历,我做的是一个简单的分页,是一个全局的页面,不过中途也出现了很多bug,因为没有考虑对totalPage==0的情况,所以当没数据的时候就会出现异常,还有一个就是因为是把集合存在session中,然后重定向到jsp页面,而session以为每过20min会失效,也就是说过一段时间后在刷新页面,数据就消失了,需要重新查询,后来我就把直接用请求转发把数据存在service中,传到jsp中;添加功能:其实和注册一样的,也就是向数据库中加数据,然后返回来对数据做了个查询(调用查询方法),使页面进行了一个刷新,不过在数据添加的过程中有一个图片的上传,做了一个按钮触发上传页面的功能,这个用了jquery,不过上传时图片没有重新命名,只是直接截取请求路径上的文件名,还有就是表单的重复提交(上面已经说了);删除功能:首先是对特定数据的删除,也就是通过id删除,可以直接通过一个onclick=”del(${list.id})”把id传给一个函数,然后直接locationhref =“”,把id传到servlet,执行删除功能,然后返回查询所有刷新页面,其中删除的时候方向它会刷新页面直接跳到第一页,感觉不符合人类的习惯,于是发现在del()再传一个cp(当前页:通过servlet中获取的)就行啦,之后做了一个批量的删除,这个通过表单的提交获取uids(选中的chickbox的id数组),然后遍历处理进行一个sql语句的拼接,执行批量删除的sql,全选和反选这个我想用jquery获取点中checkbox的所有id,发现这个不行,只能取到第一个的id,之后在网上查了可以通过class,获取全部的checkbook,然后用了一个简单的js判断,就实现了全选和反选;修改功能:可以通过id获取想要修改数据的信息,然后存在session中之后,直接用el表达式在页面显示出来,通过修改数据传到servlet中,进行修改的实现;以上就是单表的crud,现在做完之后感觉不怎么难,思路清晰,但是做得过程中发现好多不会,这也是做项目所带来的成长啊!

③  多表的CRUD

这个也就不是那么多废话了,大部分和前面差不多,就直接说我遇到的难点吧,也就是前面所说的一个多表的分类查询的的一个分页问题,因为之前做的是一个对所有数据的查询和分页,所以我之前在页面跳转写的都是一些比较固定的数据,比如

后来发现分类查询以后,由于页面返回的是通过一个类型id查的数据,target不同了,还要传类型id,所以就变成这样了:

全部是通过存在session中,用EL表达式取出的动态数据,不过这样做又会出现一个bug,就是你进行添加和删除时,返回页面,你再进行上一页,下一页操作是就会直接跳到添加和删除的servlet中,就会跳出个NullpointerException,因为删除是会传入一个id,而这里面没有,servlet会对id做一个格式转换,所以就会出现异常,所以为了解决这个问题,就直接在后面加了一个逻辑判断,如果为null就直接调用findAll()跳回jsp页面,其实这样做还是有些功能有点不完善,就是分类的分页查询,和所有的分页查询重复了分页的代码,感觉还是有些不完美;

项目的总结:

                   经过这次项目的洗练吧,我感觉整个人升华了,进步了好多,也发现了自己的不足之处,我因为是一个人做项目吧,所以思想觉悟不够,就没有这么认真做,而且比较懒,做了2个以后发现,后面的基本差不多,就基本没啥兴趣做下去了,这也是自己的惰性吧,这次项目验收发现好多同学都做的比较好,而且很完善,前端,后台都有,感觉自己瞬间低了一个档次,而且还有一些模态窗口,编辑框的他们都应用上了,感觉特别高大上,而我自己也就做了简单的crud,不过我也不沮丧,看到他们演示的功能,我感觉我自己大部分也可以实现,总而言之,这次项目是对我一个促进,我希望在下次做项目是不在迷茫,认认真真做,将自己所会的全部展现出来,很期待下次项目。

原创粉丝点击