10月27日培训日记内容

10月27日培训日记内容

再次回顾了 FormBean BO
ActionServlet----------->Action--------->Manager-->DAO-->DB的调用流程序

以用户登录为例,让大家必须能自己把这个流程和其中的细节说出来,包括如何判断用户登录信息是否正确的细节。

接着详细为大家讲解Cookie的有关细节知识:
Cookie相当于服务器给客户端的变量。
假设所有人的声音一样,服务器接到连续接到几个电话,他能识别出这些电话是来自同一个人的,还是多个人的吗?不要考虑来电显示。通过Cookie可以让Web服务器识别出是哪一个浏览器发出的请求信息。
Cookie的细节与高级应用:如果实现单点登陆多个网站、如果让Session跨多个应用程序

项目练习:如何用Cookie实现自动显示上次的登陆用户名:显示登陆框和处理登陆请求用同一个jsp页面。

最后点评了一些学员完成的作业,发现问题比较突出:一些学员现在能够应用起spring,hibernate等完成一些用例,表面上看,程序的功能都可以实现,并且是使用了这些流行的所谓高级开发人员使用的框架,但是,检查他们的程序代码,真是非常糟糕,程序逻辑混乱,很多细节都显得非常幼稚可笑,让人读得头疼。例如,喜欢自作聪明,多次重复使用一个变量,以便达到用较少变量的定义来表达多个信息。我郑重告诫他们:“一个变量只去代表一种信息,不要让它身兼数职,否则,程序逻辑就容易混难,难以让人理解!”
另外,他们对如何复用程序代码,基本上还没有概念,例如,如果用户登陆成功跳转到success.jsp页面,如果用户登陆失败则跳转至failure.jsp页面,他们编写的代码如下:
if(bLogin)
{
RequestDispatcher rd = request.getRequestDispatcher("success.jsp");
rd.forward(request,response);
}
else
{
RequestDispatcher rd = request.getRequestDispatcher("failure.jsp");
rd.forward(request,response);
}
这是一种非常直接的,象写流水帐一样的思维,并且编译还报告错误,我建议他们进行如下修改:
String forwardPath = "failure.jsp";
if(bLogin)
{
forwardPath = "success.jsp";
}
RequestDispatcher rd = request.getRequestDispatcher(forwardPath);
rd.forward(request,response);
我的代码思维很简单,先编写好一种执行流程,然后再想想其他的流程怎样合理地嵌套到原来的执行流程中,无非常是通过增加一些代码修改一些变量值而已,这样就达到了执行效果的多样性。而学员习惯每个流程用一段单独的代码来处理,然后用if...else把代码这一段段代码组合起来。
其实,类似这样的编码技巧,我以前也讲过,只是学员们没有自己去感受,没有产生刻骨铭心的感受,所以,印象不深,听的时候觉得是这么回事,但过后就忘了。
对于稍微复杂一点的程序逻辑,他们的处理代码就更是混乱了,例如,我前几天让他们做的:对于这样的一个字符号串:"----xxx----bbbbbb----ccccc----",其中用"----"分隔出了每一部分内容,请提取和打印出其中的每段内容,要求采用String.indexOf和String.substring方法,一些学员做得就很不理想。

我以后的一个重要任务就是多看学员们写的代码,多指正他们的不足,这样才能让他们真正成为“精英”人才,而不是简单地掌握了那么多流行的框架技术。

myeclipse能够实现XML文档的DTD校验