ITPub博客

首页 > IT基础架构 > 网络安全 > fjkrws系统错误分析及log功能追加报告

fjkrws系统错误分析及log功能追加报告

原创 网络安全 作者:polalisi 时间:2007-08-31 17:25:36 0 删除 编辑

社内homepage测试中,发现系统不太稳定,具体表现为

有些数据显示插入成功,但是数据库中并无此数据。

有些数据插入成功后,返回list页面时,却不显示此数据信息,但是在数据库中有此数据。

分析原因:

1)在scheduleEdit.jsp页面的javascript函数function insert(user11Code) 中,下列代码存在问题:

document.updateForm.submit();

alert(" 登録しました。");

document.updateForm.action = "<%=path%>/views/schedule/scheduleList.jsp?lg=1&loginCode="+userCode;

document.updateForm.submit();

这段代码在执行时,并不是先执行完①再执行②。而是先执行①,不管①是否执行完毕,就执行②,在②的弹出窗口中单击确定后,在向下执行。这样②的信息只是说明①执行了,但具体执行得怎么样就不清楚了。即使②中有错误,也显示不出错误信息。而数据库插入操作就是在①所执行的页面中运行。

这样造成的结果是:

数据库操作是否成功,我们无法知道。

上述代码有可能存在不确定因素。

在更新和删除功能中也应该存在这样的问题。

2)解决办法:

scheduleEdit.jsp页面中,将上面代码修改为

document.updateForm.action = "<%=path%>/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包放入项目的libWEB-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.jspcommonnosession.jspcommonstatistical_schedule.jspcommonstatistical.jsp文件中增加

<%@ page import="org.apache.log4j.Logger"%>

<%! Logger logger = Logger.getLogger(this.getClass());%>

4) 具体的代码写成

logger.debug("######");

logger.info("#######");

logger.error("######");

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10455649/viewspace-967259/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    59
  • 访问量
    56091