检查与评审学员完成的项目情况。
1.一个普遍的问题是大家在前台界面上下的功夫不够,界面都很粗糙和简陋,其实,项目开发中的很大一部分精力都是耗费在前台界面上的,前台界面也是一种最苦、最累的工作,用户对整个软件系统进行评价的主要因素就是用户界面,他们只关心软件的功能和界面操作,他们不关心后台是采用什么技术和什么框架实现的,采用什么技术和什么框架是开发人员为了加速自己的开发进度和软件的易维护性而自己内部作出的选择。
2.毛卓强对设计模式有了一定的认识,但是,他在昨天的项目中显然有点滥用设计模式而撇弃了struts自身的功能,例如,他写了一个BaseActionForm,在BaseActionForm的validate方法中调用了一个doValidate的抽象方法进行具体的错误校验,validate方法自身中则是创建ActionErrors对象,然后调用doValidate方法,最后将doValidate方法返回的ActionErrors对象保存到request中。其实,毛卓强的程序对大家还是应该有一定启发的,例如,如果所有的Action都要记录日志,他在BaseAction的execute方法中完成日志记录功能,然后调用一个doExectue方法去执行业务逻辑,doExecute方法由各个Action子类去完成,这样就做到了对摸板方法设计模式的灵活应用。
我再次对摸板方法设计模式的总结:如果所有子类的某个方法内部有一段相同的程序逻辑代码,那就可以把这个方法抽象到父类中去实现,父类中实现的这个方法去调用一个自定义的方法(摸板方法),各个子类在摸板方法中完成不同的代码逻辑。
3.通过王涛完成的项目,发现了struts中的表单校验失败后重显的一个问题:假设ActionForm Bean中有一个整数类型的属性,如果将其类型定义为int,这个属性的默认值是0;在表单页面中用一个文本框来输入这个属性的值,当文本框中没有填写任何内容时,发送到WEB服务器的参数值为一空字符串"";当ActionForm Bean中的其它属性校验失败时,回到表单页面重新显示,这时,与整数字段对应的文本框中显示的内容为0,而不是没有任何内容。关于这个问题的详细讲解,请参看我的下一篇blog:struts表单校验失败后的整数重显问题。
让李杰为大家讲解了一下他研究Spring JPetstore的一些心得,我顺带为大家讲解了ParameterizableViewController的作用,为了让同学们能够掌握ParameterizableViewController,我要求同学们能够自己讲解出ParameterizableViewController的作。我顺便也为大家讲解了<c:url>的作用,<c:url>生成的地址地址为“/web应用程序名/...”。
待实验的小问题:
据说,对于Servlet 2.4规范,可以将Servlet映射成welcome页面。仔细想想,index.jsp页面可以作为welcome页面,它不也是映射到jsp引擎这个Servlet上的吗?
我个人的一个想法:把error的错误描述信息不要写在默认的资源包中,而是写在一个单独的error资源包中,然后在<html:errors>标签中设置bundle属性,这样就可以把错误信息和普通文本信息分散在不同的资源文件中。