我在谷歌上搜索了这个主题并看到了一些最佳实践。但我需要一些具体的建议。我正在开发一个 J2EE 应用程序,该应用程序具有从 JSP 到 DAO 的 servlets/Struts2/Call。所以这个应用程序是各种各样的混乱。大多数数据是通过存储过程获取的,由 iBatis ORM/Spring 调用。有时当 SP 端发生错误时,它会向用户显示一条丑陋的消息,如下所示:
javax.servlet.ServletException: org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:
--- The error occurred in debtowed.xml.
--- The error occurred while applying a parameter map.
--- Check the debtowed.getFormerTenantData.
--- Check the statement (update procedure failed).
--- Cause: java.sql.SQLException: ORA-06550: line 1, column 11:
PLS-00905: object package.GET_FORMER_ADDRESS is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Caused by: java.sql.SQLException: ORA-06550: line 1, column 11:
PLS-00905: object package.GET_FORMER_ADDRESS is invalid
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
此时上述信息显示在浏览器中并记录到 server.log 中。
但是,我想做以下事情:
- 向用户展示自定义错误页面
- 在 myapp.log 而不是 server.log 中记录错误(我们在使用 log4j 时在其他一些地方执行此操作)
请告诉我这样做的最佳方法是什么?我应该在 web.xml 中添加一些东西吗?像听众一样?这将是唯一的更改还是我必须更改现有代码?
该代码不进行任何错误检查。它只是像下面这样调用 SP
getSqlMapClientTemplate().queryForList("sp.getfmrAddy", paramMap);