2016大二第一学期实习体会

文章
来源莲山课件
5YJOM公文

206大二第一学期实习体会


主要从下到上讲一下项目中一些值得注意的细节。

0关于数据库字段(实体类属性)设计:

一开始要尽量想得全,想得长远,考虑周到仔细,字段类型都要考虑清楚。

个人觉得这是非常重要的一步,多人商量讨论是最好的。

因为到了后期再要添加、修改一点什么是要花更多的时间的(我大一写一些小项目时就经常这样,吃了很多亏),而往多了想,就算时间不够,要删除一些功能,直接读数据时不读,不写那个字段即可(在此次实训中深有体会)。

关于SQL语句,(下面代码只是片段,有删减,slt*只是为了减少代码篇幅,不建议在开发中使用)


[v]vplpy
<spstyl="ft-sz:8px;"&t;publLst<Dvd&t;quryDvdByN(Strd){&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;d="'"+d+"'";&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;Strsql="slt*frDvdhrd="+d;&bsp;
&bsp;&bsp;&bsp;Lst<Dvd&t;lst=ull;&bsp;
&bsp;&bsp;&bsp;try{&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;lst=prQury(sql,ull,Dvdlss);&bsp;
&bsp;&bsp;&bsp;}th(Expt){&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;prtStTr();&bsp;
&bsp;&bsp;&bsp;}&bsp;
&bsp;&bsp;&bsp;rturlst;&bsp;
}</sp&t;&bsp;
不难发现,我为d两端加上了‘单引号,不加是会报异常的,这个细节其实我早已发现。
这次实训中发现有好多同学问我问题时都是在这吃了亏,说明好多同学还不知道,这里特别提一下。

[v]vplpy
<spstyl="ft-sz:8px;"&t;publbldlDv(tdd){&bsp;
&bsp;&bsp;&bsp;Strsql="dltfrDvdhrdd="+dd;&bsp;
&bsp;&bsp;&bsp;rturprUpdt(sql,ull);&bsp;
}</sp&t;&bsp;
此处为t类型,故不用加,当然dubl也不需要。
再看代码
[v]vplpy
<spstyl="ft-sz:8px;"&t;publLst<Dvd&t;quryDvdByN(Strd){&bsp;
&bsp;&bsp;&bsp;Strsql="slt*frDvdhrd=?";&bsp;
&bsp;
&bsp;&bsp;&bsp;Lst<&t;plst=ArryLst<&t;();&bsp;
&bsp;&bsp;&bsp;plstdd(d);&bsp;
&bsp;
&bsp;&bsp;&bsp;Lst<Dvd&t;lst=ull;&bsp;
&bsp;&bsp;&bsp;try{&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;lst=prQury(sql,plst,Dvdlss);&bsp;
&bsp;&bsp;&bsp;}th(Expt){&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;prtStTr();&bsp;
&bsp;&bsp;&bsp;}&bsp;
&bsp;&bsp;&bsp;rturlst;&bsp;
}</sp&t;&bsp;
这段程序和第一段几乎一样,不同的是,用?占位符代替参数,再传入填补占位符的plst,也不用加'单引号,而且此方法能有效防止sql注入攻击(我也是百度“如何防止sql注入”时才知道的),经过我的验证,确实不错。
故推荐使用此方法构造sql语句。


2答辩时发现好多人说自己的程序实现了模糊查询(即简单的在要查询的字符串前面、后面各加一个%),

可是我觉得他们的模糊查询都还差一步,比如:查“从你的全世界路过”,

上述模糊查询输入“从全世界路过”,就会出现查不到的情况,

可是有时候人们就记得“从全世界路过”,所以我认为他们都没有实现真正的模糊查询。

其实只需再加一步即可,如下:


[v]vplpy
<spstyl="ft-sz:8px;"&t;publLst<Dvd&t;quryDvdByN(Strd){//按片名模糊查询&bsp;
&bsp;&bsp;&bsp;Str="'%";&bsp;
&bsp;&bsp;&bsp;fr(t=0;<dlth();++){&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;+=dhrAt()+"%";&bsp;
&bsp;&bsp;&bsp;}&bsp;
&bsp;&bsp;&bsp;+="'";&bsp;
&bsp;&bsp;&bsp;Strsql="slt*frDvdhrdl"+;&bsp;
&bsp;&bsp;&bsp;Lst<Dvd&t;lst=ull;&bsp;
&bsp;&bsp;&bsp;try{&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;lst=prQury(sql,ull,Dvdlss);&bsp;
&bsp;&bsp;&bsp;}th(Expt){&bsp;
&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;prtStTr();&bsp;
&bsp;&bsp;&bsp;}&bsp;
&bsp;&bsp;&bsp;rturlst;&bsp;
}</sp&t;&bsp;

3C/S架构中,使用rt()及rd()传输网络信息时,需传输的类必须实现
Srlzbl接口,比如publlssDvdpltsSrlzbl{}
补上序列号prvtsttfllsrlVrsUID=726093289969833L;
序列号应该是随机的一个码(这个我也不是很清楚,个人觉得是随机生成的)
值得注意的是:服务器端的实体类名,包名,序列号都必须与客户端的保持一致,
不然网络传对象时,无法将对象还原成预期所需要的对象(会报找不到XXX类的错)。


4st连接,分为长连接与短连接(各有优缺点,由于我也是自己百度看的,想了解的可以百度),
在此次项目中用的是长连接。长连接时每次客户端请求、或者接收服务器端的数据后,

显然不能关闭st(即不能stls();),要注意的是连由st得到的输出输入流均不能关闭,

例如IputStrs=IputStr(sttIputStr());

不能sls();
否则报stslsd错误。


5关于分包结构,如下图

&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;

这是服务器端&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;&bsp;客户端

值得注意的是,D虽然叫D但并不是一个接口,而是一个类,所以放在DIpl里面,

答辩时发现有不少组由于这个问题被扣分。


6关于界面U
界面是程序与用户交互的实现,在做到尽量美观之时,更重要的是防止应用户的错误输
入而导致程序崩溃,这样才是一个好的界面。
)就比如应该要输入整数的地方,用户不小心输入了一个字符串、中文、小数,如果
没有捕获异常,程序是会飘红的。
2)做空值判断,在u往bz层传数据时,若用户输入信息有空值,就不应当继续往bz传
数据,而应当提示用户输入有误。
3)数值范围判断,上面做了非法字符判断,及空值判断,还是不够的。比如输入一个
同学的成绩(00分制),那么用户不小心输入-55,在)处不会报错,2)处也符合,
若没有加数据范围判断就糟糕了。

当然要防止这些情况,在数据进入数据库之前防止均可,为什么我要在u防止呢,
当然是为了减轻服务器的负担,否则就无法体现C/S架构的优势所在了,那还不如用B/S架构呢!
而且在U处防止响应也更快,若在服务器端防止,数据还要传到服务器,

服务器检测数据发现有错又传回错误息又麻烦又费时。

我个人觉得若是多人合作写大项目的话两边都判断一下是最好的(这个没有试过,没有经验,不知道是否正确)

文章
来源莲山课件
5YJOM公文
浏览次数:  更新时间:2016-12-21 22:04:50
上一篇:大学生知识产权法诊所实习报告:心细躬行芳自来
下一篇:网店卖家实习报告
网友评论《2016大二第一学期实习体会》
评论功能已关闭
相关公文