现在通常人们讨论和实现Java WEB应用时,往往过度关注框架和平台,对常见实现的各种模式未有深入的考虑。自从在IBM DevelopWork上见到一个名词"错误模式",就一直仔细研究和收集各种错误模式,现在就针对各WEB应用中最常见的增删改查,谈一下常碰到的错误模式。
增加、编辑时常见错误
1、没有进行,界面上的效验问题
有人认为,这个不算错误,呵呵,那我也不说什么了。很多情况下,初学的人会完全忽略这一块,刚开始我就是的,还感觉这个就像程序把门的第一关口啊,最好能提前预防。
一般情况下,都是用javascript直接实现的,也有基于框架的后台验证,如DotNet和WebWork的验证器等。通用的方法,是充分发挥正则验证的潜力来解决好这一块。
2、后台效验问题 JS+RPC OR Server
前台的效验完毕后,往往还需要进行后台的逻辑效验,如检查是否重名等。一般是通过一组查询来实现的。因为只是只读的查询,个人认为,怎么实现都没关系。通常是在后台,提交数据库前验证。其实业可以通过ajax技术,在前台验证,随着技术的发展,我想还是通过AJAX统一到前台实现比较一致。
3、更新失败返回问题
更新失败的因素是多方面的,如数据连接断开等。往往,很多人都没有进行相关的保护,没有相应的提示,或者提示返回后,客户的输入就丢失了。这些都是应该仔细考虑并解决的问题,很可惜,再大量学习各类框架和平台后,相信很多人都没有仔细的在这一块加上那怕一点点保护。
4、编辑载入失败返回问题
这个是个比较初级的问题,不过确实出现过,还是写写,看看自己忘了不.....
5、编辑载入,值还原问题,如回车丢失,空格丢失等
有时候,Html标签写的不好的时候,可能会丢值,如 回车,空格 ,<等符号
6、更新时,多步操作的事务保护机制不健全
这一点,本不该写在此处,不过,我一直觉得这是个很重要的问题,所以还是加上。也许有人会说,我用Hibernate,这个问题就不存在了.....还是要重视啊,我见过有初学者,没有很好的利用Hibernate的声明事务标签,或者根本不声明...... 而且多步操作不写在一个方法里面,也不用手工的事务控制...寒,其实有些项目我自己都没做到,因为各方面的原因@%^@#^@#^@^,悲哀ing.....
删除常见错误
1、找不到记录时错误
这个是个比较初级的问题,不过确实出现过,还是写写,看看自己忘了不.....
2、关联数据不能自动检查并返回信息
对于一些有关联的数据,应该通过检查机制保护破坏性的删除操作。
3、自动删除关联数据
这个对于一些POJO设计得非常好的系统,完全不用考虑的,呵呵不过,大家还是要很清晰的了解这种删除的必要性,感觉初学者都忽略这些问题。
4、删除时没有清晰提示
通过JS保护只有一行代码,就可以给客户一个避免错误操作的机会,何乐而不为呢,用框架的同仁们,你们这么做了吗?实际的系统,用户不会忘了提这一点的。
查看时错误
1、找不到数据时错误
这个是个比较初级的问题,不过确实出现过,还是写写,看看自己忘了不.....
2、一些值得显示问题 如 回车、空格
加几行转码的函数就可以避免,很多人忽略了,寒,如回车转为<BR>,空格转为
3、下拉表单数据的回显问题 值-名对,显示值,而不显示名
下拉表单输入时,大家都有解决方案了,回显,就是一个查询,请加上吧,不要让自己眼睛不舒服。
分页浏览时错误
1、找不到数据时的正确返回
这个是个比较初级的问题,不过确实出现过,还是写写,看看自己忘了不.....
2、翻页后 条件保持问题(特别时有特殊字符时,如回车,"\"","\'"等)
要把条件传递到下一个页面阿....
3、翻页的效率问题
很多人没仔细考虑,比如我自己,刚用Hibernate时,直接用一个完全查询的HQL,取List.Count解决取总记录的方法,结果,发现,这个查询被执行了!!!现在改成一个专门取总行数的Count查询...当然用专门对数据库优化过的SQL和存储过程,永远是效率最高的方法
查询时错误
1、查询条件初始化问题
查询条件如日期等,为什么不给客户一个最常用的时间段呢,可以避免用户的操作
其实还有很多需要注意的细节容易出问题。如格式验证...只读字段的控制.等等
一个完整的增删改查应该有几个部分的代码
1.添加载入
控制添加数据的默认初始化值
在Struct或者WebWork中,就是一个Action +一个视图
2.添加提交
将用户提交的新增数据,加入数据库
在Struct或者WebWork中,就是一个Action
3.编辑载入
从库中载入已有的某条数据方便编辑
在Struct或者WebWork中,就是一个Action +一个视图
4.编辑提交
将用户提交的修改数据,更新到库中
在Struct或者WebWork中,就是一个Action
5.查看记录
从库中载入已有的某条数据查看
在Struct或者WebWork中,就是一个Action +一个视图
6.删除提交
将用户指定的记录删除
在Struct或者WebWork中,就是一个Action
7.载入查询
初始化查询界面
在Struct或者WebWork中,就是一个Action+一个View
8.查询提交
接受查询界面的提交,并组合为查询结果发送给一个View
在Struct或者WebWork中,就是一个Action+一个View
也可以将请求转交给分页浏览页面
9.分页浏览
根据查询条件和页号,显示特定数据页的数据
在Struct或者WebWork中,就是一个Action+一个View
这里,我没有专门写出formBean,个人认为FormBean只是一个工具
当然根据情况各种Action 和View可以进行各种整合,不过个人觉得,不管如何组合,这几个环节都是很必要的,必须思路非常清晰才好。
附上我以前总结的一些常见的错误检查表,给同事看的...
******************************************************************************************************
JAVA WEB应用常见的错误
在本系统中一些常见Bug和对策
1.Null指针错误
A.引用的Bean未在 Hibernate配置文件,Spring配置文件中正确的配置
B.调用的Session及Request 未能正确的取到
C.对象未初始化,或者在传递中失去了,往往使webWork托管的对象出现这种问题
D.未正确的写上Getter,Setter方法
2.无任何提示的错误...
A.一般情况是HibernatePO执行的时候发生的错误,未将错误正确的抛出..
B.转入Error页面采用Redirect模式,错误信息不能显示
其他
A.WebWork Action中未找到对应的映射
B.在弹出窗口中,Session丢失
C.Tomcat,MYSQL乱码问题
在WebWork值得注意的是URL传递的参数,需要手工用toCN转码
Form传递的不需要
D.WebWork标签的引用问题,Map request并不是和request映射的那个对象
有一个同名对象,但是类型是httpRequest的Request才是..
E.Hibernate查询书写出错
F.Delete方法使用出错
G.验证器使用出错
H.类型格式定义不正确..如日期时间型显示为日期型
I.在WebWork的JavaScript中,好像不好直接使用'和"符号,也许要HtmlEncode后,才能用??,还是要UrlEncode?
J.全角作主键时,传递异常...
K.JS 调试的时候,层次关系中,<!--注释-->也是一个子对象..
L.验证实现不精确..
M.再次注意,空值的包装问题,再webWork中自动处理了,用其他框架时,要充分考虑
N.JDO对象需要及时更新,并且要及时调整相关的Bean
O.缺少JDO请及时加上
1.纯JSP编写时发生的错误
一般是没有正确编译,将编译中的Java文件放到IDE中编译一下,就可以看到提示.
******************************************************************************************************
1、对Null字符进行String处理出错
产生原因:数据库中数据为空值,却用字符处理函数进行处理了
后果:崩溃性错误
预防方法:
A.给数据库中可能出现空值的字段,加上默认值
B.提交时,用JS脚本进行验证
C.在处理可能是空值的字符时,用CheckNullStr(vValue) 对数值进行保护处理
D.对处理过程加上错误陷阱,防止出现崩溃性错误
2、传递参数时," ' 等字符造成问题
产生原因:处理" '等字符时,和Html中使用 " ' 等冲突,造成数据传送失败
后果:崩溃性错误
预防方法:
A.统一" '等符号的使用模式和策略
如 JS中,字符串用""包起来 ' 需要用 \'代替
如传递查询参数时,其中可能有 ' 和 % 需要特别的处理,所以用""包字符串
B.在不丢失数据的情况下,根据情况使用
Server.HtmlEncode(vValue)
Server.UrlEncode(vValue)
C.对处理过程加上错误陷阱,防止出现崩溃性错误
3、数据库里面未设置主健
产生原因:构建数据库时,未设置主健,
后果:造成查询时,RecordCount显示不正常,更新时得不到主健值,造成崩溃性错误
预防方法:
A.建表时仔细检查主健是否建立,如没有一定要建立
B.对处理过程加上错误陷阱,防止出现崩溃性错误
4、数据库里面字段范围设置太小
产生原因:字段设置太小
后果:如发生越界情况,就造成崩溃性错误
预防方法:
A.仔细考虑字段大小设置,如不是很密集的应用,可考虑尽量设置大一些
B.对处理过程加上错误陷阱,防止出现崩溃性错误
5、处理各个模块,因为Copy 代码,所以显示的某些提示不准确
如工作邮件,提示为工作任务等
产生原因:硬编码,Copy代码,粗心大意
后果:用户感觉极差
预防方法:
A.仔细检查,利用全文查找,Windows的功能就可以,还可以用FrontPage
B.尽量使用一些比较模糊的提示语,可以具有通用性
C.将某些特定的提示进行常量定义,统一替换
6、单位名称等不匹配
产生原因:硬编码,Copy代码,粗心大意
后果:用户感觉极差
预防方法:
A.仔细检查,利用全文查找,Windows的功能就可以,还可以用FrontPage
B.对使用的特定图片检查
C.将特定图片和文字进行登记
C.将某些特定的名称进行常量定义,统一替换,尽量利用Customer等通用常量,避免硬编码
分享到:
相关推荐
在Java Web开发过程中,我们经常会遇到一些看似诡异但实际上有其内在原因的问题。这些问题可能是由于对技术理解不深入、代码编写不当或配置错误所导致的。本文将探讨几个常见的Java Web开发中的难题,并尝试提供解决...
在本Java Web开发实践教程源码的第10章中,我们将深入探讨Web应用程序的构建、部署和测试过程。这是一份丰富的学习资源,适用于初学者和有一定经验的开发者,旨在通过实例代码来深化理解Java Web开发的核心概念和...
在Java Web应用的开发过程中,软件架构通常采用分层思想,旨在降低模块间的耦合度,并增强模块的内聚性。这种设计思想虽然在一定程度上简化了系统的结构,但也使得软件的开发过程变得更为复杂,易于产生错误和异常,...
在 Java Web 开发中,开发者经常会遇到一些棘手的问题,影响项目的进度和质量。在这篇文章中,我们将列举一些常见的问题,并对其进行解释和解决。 1. java.lang.IllegalArgumentException: node to traverse cannot...
5. **MVC(Model-View-Controller)模式**:在Java Web开发中,MVC是一种常见的设计模式,用于组织应用程序结构。通过源代码,读者可以学习如何使用Servlet作为Controller,JSP作为View,以及如何构建独立的Model...
Java Web开发是软件开发领域中的一个重要分支,它涵盖了使用Java语言进行Web应用程序的构建和部署。这份"JAVA WEB开发实战经典培训【课堂笔记】"是由MLDN李兴华提供的专业培训资料,主要以PDF格式记录了整个课程的...
Web 开发基础常见错误汇总,这个标题明确地表明了文档的主题,即 Web 开发中常见的错误总结。这个标题让读者快速了解文档的内容和目的。 描述分析 本文档是作者精心整理出自己在学习过程中遇到过的常见错误,基本...
了解并熟练处理这些常见错误是Java Web开发的基础,这将帮助开发者更快地定位和解决问题,提高开发效率。通过设置好开发环境,编写规范的代码,并掌握良好的异常处理策略,可以避免许多不必要的困扰。在实际开发中,...
在Java Web开发领域,实践是掌握技术的关键。"Java Web开发实践教程源码ch06"提供了一套详细的课程源码,旨在帮助学习者深入理解并应用相关技术。本章节可能涵盖第六章的内容,通常在一本教程中,第六章会涉及更高级...
《30天学通Java Web项目案例开发(中)源码》是一份旨在帮助初学者在30天内掌握Java Web开发技术的实践教程。这个压缩包包含了项目的中期部分源代码,由于文件大小限制,完整的项目案例被分段上传。通过深入学习这份...
8. **自由标记库(FreeMarker或JSP)**:Struts2支持FreeMarker和JSP作为视图技术,FreeMarker是一种模板语言,可以更清晰地分离视图和逻辑,而JSP则更常见于传统的Java Web开发。 9. **插件体系**:Struts2拥有...
典型实例往往涉及到用户登录验证、数据存取、会话跟踪等Web开发中的常见问题处理。通过实例分析,学习者可以掌握如何设计数据库交互、实现Web层的业务逻辑以及前端页面的动态内容展示。 综合练习是为了检验学习成果...
在Java Web开发中,创建一个登录功能是学习过程中的常见任务。这个"java web开发的登陆小例子"可能包含了一个简单的用户登录系统的基本组件,旨在帮助初学者理解Web应用程序的交互流程。以下是一些关键知识点: 1. ...
Java Web开发过程中,开发者经常会遇到一系列的技术挑战,这些问题不仅影响应用程序的正常运行,还可能导致系统性能下降、安全性受损,甚至整个项目的进度受阻。以下是对这些常见问题的详细解析及应对策略。 1. **...
MVC(Model-View-Controller)模式是常见的Java Web开发模式,它将业务逻辑、数据和用户界面分离,提高代码的可维护性和可测试性。Spring框架是实现MVC模式的首选,它的依赖注入(DI)和面向切面编程(AOP)极大地...
7. **框架应用**:可能涉及Spring MVC或Struts2等主流Java Web开发框架,它们简化了开发过程并提供了良好的可扩展性。 8. **Ajax**:异步JavaScript和XML技术,实现页面的部分更新,提升用户体验。 9. **RESTful ...
通过提供的实例源代码,开发者可以学习到如何在实际项目中整合这些技术,从数据库设计、后端逻辑实现到前端界面展示,从而提升自己的Java Web开发能力。在研究源代码时,注意理解每个类和方法的作用,以及它们之间的...
在这个总结中,作者胡志广分享了他在Java Web开发过程中遇到的一些问题及其解决方案,主要包括以下几个方面: 1. **Linux SSH 连接问题**: - 当尝试通过SSH连接到另一台Linux机器时,如果出现需要输入密码的情况...
2. **Servlet与JSP**:作为Java Web开发的核心,Servlet和JSP是开发者必须掌握的技术。书中的这部分内容会详细讲解Servlet生命周期、请求处理、响应构建以及JSP语法和EL表达式等关键概念。 3. **Tomcat配置**:...
总之,“Tomcat与Java Web开发技术详解”这个压缩包提供了全面的学习资料,旨在帮助开发者深入理解Tomcat与Java Web的关系,熟练掌握相关开发技能,并能有效地解决开发过程中遇到的问题。无论是自学还是作为教学资料...