今天接到一个任务,原因是一个不知道的jsp页面,在点击关闭一个div面板时发生错误:

Microsoft JScript 运行时错误: 缺少对象,原因分析

      然后百度了一番,  是某处的JavaScript代码有问题,检查<head></head>中的script代码语法,一定是这里出了问题,是某个对象没有在这段代码中定义导致。

      将信将疑,仔细搜寻一番,最后果然发现了问题。是因为关闭div的方法没有添加进去。修改完毕,终于正确了。

    

      大概理了下思路,先定位错误的页面,然后定位错误发生的地方,看是什么操作引发的错误,然后一步步分析最终问题的所在。

 

 

=========================================== 

另外有一个疑惑,就是jsp中全局变量的声明问题。

使用jsp页面中<%! %>全局变量声明遇到的问题 

一般喜欢把页面里多处要用到的变量设置成全局变量,如: 

当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑: 

if(request.getParameter("operation")!=null) 
   ID = request.getParameter("operation").trim(); 


当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。 

原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一 
次。 

解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。 

自己添加的内容为: 

<%! 
//设置全局变量 
int i=0; 
%> 
<% 
response.setHeader("refresh","1"); 
%> 
<h1><%=++i%></h1> 

该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户的请求所共享,即客户端每进行一次请求,变量i就会加1。 

当修改了*.jsp文件后,再次在客户端进行访问,这时全局变量i就又从0开始变化了。 

全局变量和 page,request,session.application中的application变量类似。