org.apache.catalina.core.StandardWrapperValve invoke的解决办法

故障码:

Servlet.service() for servlet servletAction threw exception
java.lang.NullPointerException
	at com.dbdao.mysql.mySqlConnection.getClose(mySqlConnection.java:173)
	at com.service.stuInfoService.delete(stuInfoService.java:109)
	at com.action.servletAction.delete(servletAction.java:374)
	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的方法。

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

错误源代码:

public void getClose() {
        // TODO Auto-generated method stub  

        //关闭结果集
        try {  

            //结果集关闭方法
            rs.close();  

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{  

            //关闭声明的sql语句
            try {  

                //关闭声明的sql语句方法
                pstmt.close();  

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{  

                //卸载驱动
                try {  

                    //驱动卸载方法
                    con.close();  

                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }  

            }
        }  

    }  

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

下面是改正后的代码:

 /*
     * 关闭方法
     * */
    public void getClose() {
        // TODO Auto-generated method stub  

        //关闭结果集
        try {  

            //结果集关闭方法
            if(rs!=null){  

                rs.close();  

            }  

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{  

            //关闭声明的sql语句
            try {  

                //关闭声明的sql语句方法
                if(pstmt!=null){  

                    pstmt.close();  

                }  

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{  

                //卸载驱动
                try {  

                    //驱动卸载方法
                    if(con!=null){  

                        con.close();  

                    }  

                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }  

            }
        }  

    }  

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

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

时间: 2024-07-30 06:52:14

org.apache.catalina.core.StandardWrapperValve invoke的解决办法的相关文章

tomcat(11)org.apache.catalina.core.StandardWrapper源码剖析

[0]README 0.0)本文部分文字描述转自 "how tomcat works",旨在学习 "tomcat(11)StandardWrapper源码剖析" 的基础知识: 0.1)StandardWrapper 是 Catalina中对Wrapper接口的标准实现:要知道,tomcat 中有4种类型的容器:Engine,Host,Context 和 Wrapper:(干货--review  tomcat 中有4种类型的容器:Engine,Host,Context

idea启动tomcat服务失败 SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:

我的工程是从eclipse生成的,个人习惯用idea开发.重复了一遍以往正常的不能再正常了的导入配置,结果遇到了如下问题: SEVERE [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start comp

tomcat(12)org.apache.catalina.core.StandardContext源码剖析

[0]README 0)本文部分文字描述转自 "how tomcat works",旨在学习 "tomcat(12)StandardContext源码剖析" 的基础知识: 1)Context实例表示一个具体的web 应用程序,其中包含一个或多个Wrapper实例,每个Wrapper 表示一个具体的servlet定义: 2)Context容器还需要其他组件的支持,如载入器和Session 管理器.本章要intro 的 StandardContext是 catalina

struts2 启动tomcat时报错:org.apache.catalina.core.StandardContext filterStart

用struts2+jsp做个网站,到了网站制作后期时,启动tomcat竟然无法启动,挂了.之前一直有用可是今天添加了一些东西就挂了,删除之后还是无法启动tomcat服务器. 下面是报错的代码: <span style="color:#ff0000;"> org.apache.catalina.core.StandardContext filterStart SEVERE: Exception starting filter struts</span> <s

org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart

今天将项目部署到Centos 6.3 x64上面的tomcat 7.0.54,访问链接出现了404错误.后来查看了/usr/local/apache-tomcat-7.0.54/logs/catalina.out 文件,出现了Error listenerStart . org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart 2014-06-13 14:30:20 [localhost-s

【SpringMVC】Marking servlet dispatcherServlet as unavailable org.apache.catalina.core.StandardContext.loadOnStartup Servlet [springDispatcherServlet] in web application [] threw load() exception

Marking servlet dispatcherServlet as unavailable org.apache.catalina.core.StandardContext.loadOnStartup Servlet [springDispatcherServlet] in web application [] threw load() exception Java.lang.ClassNotFoundException: org.springframework.web.servlet.D

Linux下启动tomcat报错RROR org.apache.catalina.core.StandardContext- Error starting static Resources java.lang.IllegalArgumentException: Document base /home/duiba/apache-tomcat/webapps/../webapps/manager do

部署项目的时候,重启tomcat,死活起不来,很郁闷,网上巴拉了半天,结合自己的情况,找到了原因: 错误日志信息: 2018-12-13 13:52:26,992 [main] INFO org.apache.catalina.core.AprLifecycleListener- The APR based Apache Tomcat Native library which allows optimal performance in production environments was no

Tomcat启动出现:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvc]]解决办法

1 严重: ContainerBase.addChild: start: 2 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/SpringMvc]] 3 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.ja

macOS Catalina 已损坏无法打开解决办法

App 在macOS Catalina下提示已损坏无法打开解决办法: 打开终端: 输入以下命令,回车:sudo xattr -d com.apple.quarantine /Applications/xxxx.app注意:/Applications/xxxx.app 换成你的App路径(推荐直接将.app文件拖入终端中自动生成路径,以防空格等转义字符手动复制或输入出现错误) 重启App即可. 原文地址:https://www.cnblogs.com/xuange306/p/12530815.ht