社内homepage测试中,发现系统不太稳定,具体表现为
有些数据显示插入成功,但是数据库中并无此数据。
有些数据插入成功后,返回list页面时,却不显示此数据信息,但是在数据库中有此数据。
分析原因:
1)在scheduleEdit.jsp页面的javascript函数function insert(user11Code) 中,下列代码存在问题:
①document.updateForm.submit();
②alert(" 登録しました。");
③document.updateForm.action = "/views/schedule/scheduleList.jsp?lg=1&loginCode="+userCode;
④document.updateForm.submit();
这段代码在执行时,并不是先执行完①再执行②。而是先执行①,不管①是否执行完毕,就执行②,在②的弹出窗口中单击确定后,在向下执行。这样②的信息只是说明①执行了,但具体执行得怎么样就不清楚了。即使②中有错误,也显示不出错误信息。而数据库插入操作就是在①所执行的页面中运行。
这样造成的结果是:
数据库操作是否成功,我们无法知道。
上述代码有可能存在不确定因素。
在更新和删除功能中也应该存在这样的问题。
2)解决办法:
● scheduleEdit.jsp页面中,将上面代码修改为
①document.updateForm.action = "/views/schedule/scheduleUpdateLogic.jsp?lg=1&loginCode="+userCode;
②document.updateForm.submit();
其中红色部分根据实际情况再做修改。
● 增加一个scheduleUpdateLogic.jsp页面,将插入,更新,删除的逻辑放入这个页面,并将
int intResultBat = m_dbAccess_2.executeUpdate(sqlStr);
if(m_dbAccess_2!=null) m_dbAccess_2.close();
修改为
try{
int intResultBat = m_dbAccess_2.executeUpdate(sqlStr);
if (intResultBat >= 1) {
request.setAttribute("success","insert");
request.getRequestDispatcher("scheduleList.jsp").forward(request,response);
}
} catch (SQLException se) {
m_dbAccess_2.rollback();
request.setAttribute("error","データを更新するとき、異常がある. " +se.getMessage()); request.getRequestDispatcher("../common/exception.jsp").forward(request,response);
} finally {
if(m_dbAccess_2!=null)
m_dbAccess_2.close();
}
上面代码根据实际具体情况再做修改。
● 在scheduleList.jsp页面增加执行成功信息
<body background="path%>/images/background.jpg" link="#FF00FF" onLoad="init();" onResize="resize();">
<!-- add wangsh 20070724 begin -->
<!-- 登録成功のメッセージを表示する begin -->
String success = (String)request.getAttribute("success")==null?"": ((String)request.getAttribute("success")).trim();
if (success.equals("insert")||success.equals("update")) {
%>
<script language="JavaScript">
alert(" 登録しました。");
script>
}
%>
<!-- 登録成功のメッセージを表示する end -->
<!-- add wangsh 20070724 end -->
更新,删除按同样方法修改。
经过这样的修改,至少可以在出错时显示错误信息,指示错误发生的原因。
1、 因为没有log功能,所以出现错误无法查询,故增加log4j系统日志功能。
具体方法如下:
1) 将log4j.jar包放入项目的lib和WEB-INFlib目录中。
2) 在项目的src目录中增加log4j.properties属性文件,具体写法如下:
log4j.rootLogger=debug, stdout, fjkrws
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%t] %C{1}.%M(%L) | %m%n
log4j.appender.fjkrws=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fjkrws.Append=true
log4j.appender.fjkrws.file=c: empfjkrws.log
log4j.appender.fjkrws.DatePattern='_'yyyyMMddHH
log4j.appender.fjkrws.layout=org.apache.log4j.PatternLayout
log4j.appender.fjkrws.layout.ConversionPattern=%d %p [%t] %C{1}.%M(%L) | %m%n
3) 在common_schedule.jsp、commonnosession.jsp、commonstatistical_schedule.jsp、commonstatistical.jsp文件中增加
4) 具体的代码写成
logger.debug("######");
logger.info("#######");
logger.error("######");
[@more@]来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10455649/viewspace-967259/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10455649/viewspace-967259/