JavaWeb中Mybatis相关代码与表现层Servlet代码对接的异常解决

本文讲述了作者在JavaWeb项目中使用Mybatis时遇到的NoClassDefFoundError异常,通过分析发现问题是由于Mybatisjar包在Servlet容器Tomcat中未找到。解决方法是在Tomcat的lib目录下添加Mybatis和相关数据库驱动jar包,确保正确版本的jar文件存在。
摘要由CSDN通过智能技术生成

JavaWeb中Mybatis相关代码与表现层Servlet代码对接的异常解决

前言

在Servlet实例中编写数据库与业务逻辑层代码对接时,我们都是使用Mybatis框架来简化数据库连接。 一如既往的操作流程是:
1.在项目中导入Mybatis依赖;
2.配置好Mybatis核心配置文件(数据库用户相关的信息);
3.获取SqlSessionFactory对象—>从 SqlSessionFactory 中获取 SqlSession—>获取映射语句的对应接口
4.SQL映射文件、相关接口的编辑
5.然后就可以在java代码中进行sql语句的相关操作了。

(至少对于我一个新手来说大致是上述流程)

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        String username = req.getParameter("userName");
        String passWord = req.getParameter("passWord");
        System.out.println(username + passWord);
        System.out.println("Web页面与ServletLogin连接成功!");//成功!


        //mybatis操作:
        //1.获取SqlSessionFactory对象
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.从 SqlSessionFactory 中获取 SqlSession
        SqlSession session = sqlSessionFactory.openSession();

        //3.SqlSession对象获取映射语句的对应接口
        UserMapper mapper = session.getMapper(UserMapper.class);

        //4.执行sql语句
        User user = mapper.selectUser(username, passWord);

        //5.释放资源
        session.close();//为什么只需要释放这一个资源? 其他资源会自己回收吗?


        //Servlet对象的业务操作:
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        if (user == null)
        {
            writer.write("登录失败...");
        } else
        {
            writer.write("登陆成功!");

        }
    }

但是

今天在编写javaWeb工程的时候,上述步骤就出现了问题

一、问题分析在这里插入图片描述

1-1 java.lang.NoClassDefFoundError: org/apache/ibatis/io/Resources 这段话的关键其实是ibatis,一看就跟mybatis长得很像,并且报异常的行位置Mybatis jar包连接Mybatis mybatis-config.xml那块,所以肯定是mybatis相关出问题了!

在这里插入图片描述

1-2 所以我就想—>mybatis是与java代码连接的问题?还是mybatis与Web之间存在的问题

1-3 我通过在main方法中测试了一下mybatis连接的相关代码,结果运行没问题,数据库连接没问题,那就解决了1-2的问题—>是mybatis与Web之间存在的问题。

1-4 后面经过查资料,有点解决的想法—>mybatis相关代码是在Servlet实例中编写运行的,而Servlet实例的容器是Tomcat!所以就有可能(我也不是很确定)是javaWeb项目里的mybatis jar包Servlet实例用不到,而Tomcat中没有mybatis jar包。

1-5 哦哦,兴奋时刻~

二、解决方法

apache-tomcat-9.0.87\lib目录下下载mybatis.jar包和mysql-connector-java-8.0.24.jar包 就解决了!

还有就是在lib目录下放的是纯jar包,后缀名是jar,不然还是会报错的。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值