zoukankan      html  css  js  c++  java
  • org.apache.catalina.core.StandardWrapperValve invoke的解决办法

    故障码:

    1. Servlet.service() for servlet servletAction threw exception
    2. java.lang.NullPointerException
    3. at com.dbdao.mysql.mySqlConnection.getClose(mySqlConnection.java:173)
    4. at com.service.stuInfoService.delete(stuInfoService.java:109)
    5. at com.action.servletAction.delete(servletAction.java:374)
    6. at com.action.servletAction.doPost(servletAction.java:79)

    网上查找的解决办法:


    1.servlet或jsp中,重复调用response的 getOutputStream(),response.getWriter()方法。


    2.form表单里没有 method="post" action=""参数。


    3.看JDBC操纵数据库的代码,仔细看,例如调用的对象的属性为null。


    Connection conn=null; 之后之就调用了conn的方法。


            以上三点我发现写的太笼统,容易让人摸不着头脑,不过经过查找,我终于发现自己代码的错误的地方了,原来是关闭数据库的连接没经过判断,直接就关闭了,这是我的故障源代码,现我将其贴出。


    错误源代码:

    1. public void getClose() {
    2. // TODO Auto-generated method stub
    3. //关闭结果集
    4. try {
    5. //结果集关闭方法
    6. rs.close();
    7. } catch (SQLException e) {
    8. // TODO Auto-generated catch block
    9. e.printStackTrace();
    10. }finally{
    11. //关闭声明的sql语句
    12. try {
    13. //关闭声明的sql语句方法
    14. pstmt.close();
    15. } catch (SQLException e) {
    16. // TODO Auto-generated catch block
    17. e.printStackTrace();
    18. }finally{
    19. //卸载驱动
    20. try {
    21. //驱动卸载方法
    22. con.close();
    23. } catch (SQLException e) {
    24. // TODO Auto-generated catch block
    25. e.printStackTrace();
    26. }
    27. }
    28. }
    29. }

            这知道,虽然在JavaWeb中报错很明显,直接以错误页面的形式满屏显示,但是在Java项目中则并不明显,比如说我一直用junit进行程序代码测试,由于我关注的焦点在控制台,控制台中的内容完全按照我写的代码在运行,而junit的报错却偏偏容易被忽略,因为自己的程序只写了一部分,不全很正常,而junit又恰恰只是测试了这不全代码的可运行的一部分,所以说这里的报错往往很难被注意到。


    下面是改正后的代码:

    1. /*
    2. * 关闭方法
    3. * */
    4. public void getClose() {
    5. // TODO Auto-generated method stub
    6. //关闭结果集
    7. try {
    8. //结果集关闭方法
    9. if(rs!=null){
    10. rs.close();
    11. }
    12. } catch (SQLException e) {
    13. // TODO Auto-generated catch block
    14. e.printStackTrace();
    15. }finally{
    16. //关闭声明的sql语句
    17. try {
    18. //关闭声明的sql语句方法
    19. if(pstmt!=null){
    20. pstmt.close();
    21. }
    22. } catch (SQLException e) {
    23. // TODO Auto-generated catch block
    24. e.printStackTrace();
    25. }finally{
    26. //卸载驱动
    27. try {
    28. //驱动卸载方法
    29. if(con!=null){
    30. con.close();
    31. }
    32. } catch (SQLException e) {
    33. // TODO Auto-generated catch block
    34. e.printStackTrace();
    35. }
    36. }
    37. }
    38. }

            还有比较容易错的地方是页面带参数进行跳转,由于跳转之后的页面本身也要执行一部分sql语句,比如说进行添加、修改、删除等操作后就自动跳转到新页面进行查询,整个过程是自动的,此时就有可能存在参数丢失的情况,所以说在这里也经常会出现该错误。


    总之,出现该错误的地方往往是连接的环节,在关闭连接之前一定要判断连接是否已关闭再执行关闭连接操作,在连接调用之前也要判断连接的东西是否存在。









  • 相关阅读:
    Oracle EBS AR 收款调整取值
    Oracle EBS GL 创建会计科目
    Oracle EBS 应收事务处理取值
    Oracle EBS 应收发票取值
    Oracle EBS AR 收款核销行关联到事务处理
    art-template渲染真实数据--后台接口(难度:3颗星)
    art-template渲染简单数据(难度:1颗星)
    art-template渲染数据示例(难度:2颗星)
    使用jQuery渲染一般数据
    如何使用git,github?
  • 原文地址:https://www.cnblogs.com/jpfss/p/9670183.html
Copyright © 2011-2022 走看看