20xx大二第一学期实习体会

上传人:F****n 文档编号:63939591 上传时间:2018-12-26 格式:DOCX 页数:7 大小:18.63KB
返回 下载 相关 举报
20xx大二第一学期实习体会 _第1页
第1页 / 共7页
20xx大二第一学期实习体会 _第2页
第2页 / 共7页
20xx大二第一学期实习体会 _第3页
第3页 / 共7页
20xx大二第一学期实习体会 _第4页
第4页 / 共7页
20xx大二第一学期实习体会 _第5页
第5页 / 共7页
点击查看更多>>
资源描述

《20xx大二第一学期实习体会 》由会员分享,可在线阅读,更多相关《20xx大二第一学期实习体会 (7页珍藏版)》请在金锄头文库上搜索。

1、2016大二第一学期实习体会 文章莲山课件wwYk公文XX大二第一学期实习体会主要从下到上讲一下项目中一些值得注意的细节。0.关于数据库字段(实体类属性)设计:一开始要尽量想得全,想得长远,考虑周到仔细,字段类型都要考虑清楚。个人觉得这是非常重要的一步,多人商量讨论是最好的。因为到了后期再要添加、修改一点什么是要花更多的时间的(我大一写一些小项目时就经常这样,吃了很多亏),而往多了想,就算时间不够,要删除一些功能,直接读数据时不读,不写那个字段即可(在此次实训中深有体会)。1.关于SqL语句,(下面代码只是片段,有删减,select*只是为了减少代码篇幅,不建议在开发中使用)javaviewp

2、laincopypublicListqueryDvdByName(Stringdname)dname=+dname+;Stringsql=select*fromDvdwheredname=+dname;Listlist=null;trylist=operquery(sql,null,);catch(Exceptione)();returnlist;不难发现,我为dname两端加上了单引号,不加是会报异常的,这个细节其实我早已发现。这次实训中发现有好多同学问我问题时都是在这吃了亏,说明好多同学还不知道,这里特别提一下。javaviewplaincopypublicbooleandelDva(in

3、tdid)Stringsql=deletefromDvdwheredid=+did;returnoperUpdate(sql,null);此处为int类型,故不用加,当然double也不需要。再看代码javaviewplaincopypublicListqueryDvdByName(Stringdname)Stringsql=select*fromDvdwheredname=?;Listplist=newArrayList();(dname);Listlist=null;trylist=operquery(sql,plist,);catch(Exceptione)();returnlist;这

4、段程序和第一段几乎一样,不同的是,用?占位符代替参数,再传入填补占位符的plist,也不用加单引号,而且此方法能有效防止sql注入攻击(我也是百度“如何防止sql注入”时才知道的),经过我的验证,确实不错。故推荐使用此方法构造sql语句。2.答辩时发现好多人说自己的程序实现了模糊查询(即简单的在要查询的字符串前面、后面各加一个%),可是我觉得他们的模糊查询都还差一步,比如:查“从你的全世界路过”,上述模糊查询输入“从全世界路过”,就会出现查不到的情况,可是有时候人们就记得“从全世界路过”,所以我认为他们都没有实现真正的模糊查询。其实只需再加一步即可,如下:javaviewplaincopypu

5、blicListqueryDvdByName(Stringdname)/按片名模糊查询Stringname=%;for(inti=0;ilist=null;trylist=operquery(sql,null,);catch(Exceptione)();returnlist;/S架构中,使用write()及read()传输络信息时,需传输的类必须实现Serializable接口,比如publicclassDvdimplementsSerializable.补上序列号privatestaticfinallongserialVersionUID=7261093218919169833L;序列号应该

6、是随机的一个码(这个我也不是很清楚,个人觉得是随机生成的)值得注意的是:服务器端的实体类名,包名,序列号都必须与客户端的保持一致,不然络传对象时,无法将对象还原成预期所需要的对象(会报找不到XXX类的错)。连接,分为长连接与短连接(各有优缺点,由于我也是自己百度看的,想了解的可以百度),在此次项目中用的是长连接。长连接时每次客户端请求、或者接收服务器端的数据后,显然不能关闭socket(即不能();),要注意的是连由socket得到的输出输入流均不能关闭,例如InputStreamois=newInputStream();不能();否则报socketisclosed错误。5.关于分包结构,如下

7、图这是服务器端客户端值得注意的是,Dao虽然叫Dao但并不是一个接口,而是一个类,所以放在DaoImpl里面,答辩时发现有不少组由于这个问题被扣分。6.关于界面Ui界面是程序与用户交互的实现,在做到尽量美观之时,更重要的是防止应用户的错误输入而导致程序崩溃,这样才是一个好的界面。1)就比如应该要输入整数的地方,用户不小心输入了一个字符串、中文、小数,如果没有捕获异常,程序是会飘红的。2)做空值判断,在ui往biz层传数据时,若用户输入信息有空值,就不应当继续往biz传数据,而应当提示用户输入有误。3)数值范围判断,上面做了非法字符判断,及空值判断,还是不够的。比如输入一个同学的成绩,那么用户不小心输入-55,在1)处不会报错,2)处也符合,若没有加数据范围判断就糟糕了。当然要防止这些情况,在数据进入数据库之前防止均可,为什么我要在ui防止呢,当然是为了减轻服务器的负担,否则就无法体现c/S架构的优势所在了,那还不如用B/S架构呢!而且在Ui处防止响应也更快,若在服务器端防止,数据还要传到服务器,服务器检测数据发现有错又传回错误息.又麻烦又费时。我个人觉得若是多人合作写大项目的话两边都判断一下是最好的(这个没有试过,没有经验,不知道是否正确) 文章莲山课件wwYk公文第 7 页 共 7 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号