Microsoft JScript 运行时错误: 缺少对象,原因分析
2010-11-17 01:13
281 查看
今天接到一个任务,原因是一个不知道的jsp页面,在点击关闭一个div面板时发生错误:
将信将疑,仔细搜寻一番,最后果然发现了问题。是因为关闭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变量类似。
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变量类似。
相关文章推荐
- 运行mvn命令出现java/lang/NoClassDefFoundError: java/lang/Object错误解决方案及原因分析
- Microsoft JScript 运行时错误: 缺少对象
- Microsoft VBScript 运行时错误 错误 '800a01a8' 缺少对象: ''
- C访问hadoop程序终端显示运行正确,因为连接参数错误,使得通过网页查看就是没有成功原因分析和解决方案
- ASP运行出错:缺少对象: 'xmlDoc.documentElement'错误解决方法
- Android studio 运行错误:Minimum supported Gradle version is 2.14.1. Current version is 2.10.原因分析和解决。
- 关于JS中 缺少对象错误分析
- 在命令行下编译通过,运行时提示错误:找不到或无法加载主类的原因分析与解决方式
- BBSMicrosoft VBScript 运行时错误 错误 '800a01a8' 缺少对象:这是什么错误
- easyui 弹出框调用外部js函数 提示“Microsoft JScript 运行时错误: 缺少对象”
- STL对象出现运行时错误Core的几个可能原因
- 运行脚本浏览器报“缺少对象”的错误
- Struts常见错误及原因分析
- EnableEventValidation错误原因分析以及解决办法
- Strus常见错误及原因分析
- mysql 常见错误:Can't create table... errno150原因分析
- 无法分析从服务器收到的消息。之所以出现此错误,常见的原因是: 在通过调用 Response.Write() 修改响应时,将启用响应筛选器、HttpModule 或服务器跟踪。
- 基于Hive的hadoop日志的分析及错误排解(eclipse上运行出现错误:Access denied for user ... (using password: YES))
- 关于pdfbox在android平台中运行出错的原因分析