在文章开始,我必须得郑重的说明一点:if绝对没有失效!

       很多同学在调试的时候发现if条件无论对错都会执行。对于这个现象,并没有什么问题。要了解这个现象得先从jsp输出为html网页说起。

        jsp是在服务器的servlet里运行,html,js在浏览器上执行。执行顺序是jsp->js。大家知道页面的加载顺序是由上至下执行的,js属于页面的一部分,所以他的加载顺序也是由在页面中的位置而定。jsp转换为页面的时候,它会一行行的输出,那么问题就出现了,他根本不会管if的条件对或者错,都会加载下一行的,知道执行完整个jsp,这样页面就加载好了。

       前面说到了加载,请大家同执行区别开来。加载时一个自发的行为,是jsp转为页面的一个自动化过程。而执行是我们在页面加载好之后进行了一系列操作,代码所做出的响应。

       所以对于那些执行不会出现的错误,在加载时并不代表不会出错。比如,空指针异常,在页面加载过程中可能还没对一个对象进行实例化,而是当我们执行后进行的实例化。等等,你认为莫名其妙的错误。如果你将页面加载的过程也看成是代码真实执行的过程(就是真是执行的过程),就不会感到意外了。

       说了这些相信你知道怎么解决相关的问题了。