最近这一个月完成了自己的第一个java web项目,虽然进度很慢,但是中间确实学到了不少东西,深刻体会到了自己看几个月书都不如做一个项目来的实在。这个项目自己主要负责的是JSP页面、JS脚本、CSS样式表的编写,虽然主要做的是前端,但是在设计前端后台交互功能时,对MVC架构和数据库又多了一分了解,这一个月的时间,自己在技术上也确实成长了不少。
下面分成几块总结一下自己的这个项目中的心得吧:
- 项目开发流程:从确认需求开始,到原型设计,再到原型测试,这些都没什么说的了,主要是刚开始开发前端JSP页面时,自己走了很多弯路,想到有什么页面就写什么页面,GET和POST的路径也是随心所欲,想到什么名字就起什么名字,结果发现这样做严重影响了项目开发的进度,后来经过主管的提点后,我幡然醒悟,其实,面向对象的思想就贯穿在整个项目当中,在前面的原型设计的过程中,除了页面的设计还有数据库的设计,数据库的每个表就对应着Java中的每个实体类,这个类封装了数据库中的列作为属性,封装了数据库的增删改查作为方法,就拿整个系统为例,实体主要有用户、文件等等,实体间还有着一对一映射或者一对多映射等对应关系。其实,整个系统的开发就是围绕着这些个实体进行的,甚至于我们可以把实体名字做为二级目录,把实体的增删改查作为GET或POST的路径,譬如account/add、paper/delete等等,有了这些路径,那么与之对应的GET和POST的Controller也就有了,接下来我们要做的就是,定义Controller中返回的视图,写完Controller后再把与实体相关的增删改查方法写到服务层中,再把项目的整个骨架搭起来,再去处理细节,很快的,这个项目就成型了。这里前端和后台的配合尤为重要,数据交互是整个系统的核心。
- JSP页面设计:提到JSP页面,在这里我想说的一点是,其实JSP页面是在服务器生成的,那么传给JSP页面的变量、参数都会在服务器转化为它们具体的值,然后再传给客户端。JSP页面可以实现很多服务器端的功能,因为可以直接在页面嵌入JAVA代码,但是我们必须明确的一点是,JSP页面主要是用来呈现视图的,不要再其中套入大量的代码,要明确前端与后台的分工。
- JSTL标签:JSTL标签就是JSP standard taglib,即JSP标准标签库,首先,EL表达式可以非常方便的取出Controller返回的View包含的Model,甚至都无需声明EL表达式。其次,JSTL标签可以实现很多的逻辑控制功能,比如最基本的c:if判断、c:forEach循环,甚至有更强大的c:choose,有了这些,我们可以大大简化代码量,JSP页面中用几十行java写的代码,有时用几句JSTL标签组合就实现了,此外,像fmt:parseDate和fmt:formatDate也是很好用的标签,用于日期的解析和格式化,此外JSTL更有强大的函数标签库fn:,项目中我也只用到了fn:length取后台传的list的长度。要善用JSTL标签,但是又不要完全依赖于它,JSTL标签很方便、快捷,但是切记,JSTL功能有限,不要完全依赖于它。
- shiro框架:shiro框架是apache的一款面向java web项目的权限控制框架,这个框架无论前端、后台都十分好用,在前端,我们可以使用shiro强大的标签库,通过用户角色赋予用户不同的访问权限。譬如,如果一个系统的用户有访客、用户、管理员三种角色,我们就可以通过shiro标签来控制游客不能访问哪些内容,页面向用户和管理员呈现的不同内容,这就是shiro标签的神奇之处。
- sitemesh框架:这个主要是用来将所有页面套用固定格式,用以页面的复用,其实有些时候标签更为方便,而且sitemesh框架的内存开销是的二倍,还会导致拦截器出现一些莫名的bug,所以并不推荐使用。
- jquery:在这个项目中写了很多的jquery代码,发现jquery确实是个神奇的东西,jquery的神奇之处就在于jquery强大的选择器可以方便的取到页面的DOM元素,并且给这些元素绑定不同的事件,提到绑定事件,说一下on、live和bind的区别:bind是jquery最早的绑定事件方法,on是jquery 1.7.0以后才有的方法,bind和on都不能将事件绑定给DOM加载完毕后后添加到页面的DOM元素,这时就需要live了。还有一个经常使用的就是jquery的ajax了,其实在做这个项目之前自己一直不理解ajax的作用机理,只是心里又个概念而已,但是,在真正使用的ajax之后,才发现ajax的强大之处,确实如AJAX自身描述一样,异步加载javascript,这就允许我们在不打开新页面的情况POST一些参数给后台,后台得到并处理这些参数后将JSON返回给前端,这个JSON的处理function就写在ajax的success处理function中。在这个项目JSON和AJAX最主要的应用就是翻页,加载一个页面,把页面传给后台然后把得到的JSON呈现给用户,翻页时重新POST参数,然后在用js重新处理一下翻页区域即可。
- jquery.validate.js:这是一个轻量的jquery框架,主要用于表单的验证,非常方便。
- twitter bootstrap.js:bootstrap自带的js框架,里面定义了许多与bootstrap样式相关联的函数,使用起来也很方便。
- 正则表达式:正则表达式的模式匹配是很强大的,灵活运用正则表达式,也会简化代码,甚至在查找替换时都可以使用正则表达式。
总体上说,这个项目极大的锻炼了自己的代码编写功能,从以前写一句代码要敲无数次backspace,现在居然可以将某些简单的函数一气呵成了。今天项目终于上线了,总结一下,希望以后自己能够取得长足的进步!
如果你交给某人一个程序,你将折磨他一整天;如果你教某人如何编写程序,你将折磨他一辈子。