工厂类值找不到,请问是什么原因

我在写用户登录注册时报了500错误,并说找不到工厂值

package com.work.util;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;

//调用SqlSessionFactory工厂方法

public class SqlSessionFactoryUtils {

private  static  SqlSessionFactory sqlSessionFactory;
    static {

        //静态代码块会随着类的加载而自动执行,且只执行一次

        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }



    public  static SqlSessionFactory getSqlSessionFactory(){

        return sqlSessionFactory;
    }
}

package com.work.web;

import com.work.mapper.UserMapper;
import com.work.prjo.User;
import com.work.servlet.userServlet;

import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;



import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/loginServlet")
public class loginServlet extends HttpServlet {
    private userServlet servlet=new userServlet();
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.接收

        String username = request.getParameter("username");

        String password = request.getParameter("password");
   //调用sevlet查询
        User user=servlet.login(username,password);

    //获取字符输出流
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer=response.getWriter();
        //3.判断user是否为null
        if(user != null){
            //登录成功
            writer.write("登陆成功");
            HttpSession session = request.getSession();
            session.setAttribute("username",username);
            session.setAttribute("password",password);
        }else {
            //登录失败


            request.setAttribute("long_msg","用户名或密码错误");
            request.getRequestDispatcher("/login.jsp").forward(request,response);
        }    //2.1获取sqlsessionFactory


           //跳转
   //     request.getRequestDispatcher("/index.html").forward(request,response);
//        response.sendRedirect("/index.html");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
     this.doGet(request,response);
    }
}



常报告

消息 Cannot invoke "org.apache.ibatis.session.SqlSessionFactory.openSession()" because "this.factory" is null

描述 服务器遇到一个意外的情况,阻止它完成请求。

例外情况

java.lang.NullPointerException: Cannot invoke "org.apache.ibatis.session.SqlSessionFactory.openSession()" because "this.factory" is null
com.work.servlet.userServlet.login(userServlet.java:22)
com.work.web.loginServlet.doGet(loginServlet.java:30)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:668)
jakarta.servlet.http.HttpServlet.service(HttpServlet.java:777)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)


//Servlet
package com.work.servlet;

import com.work.mapper.UserMapper;
import com.work.prjo.User;
import com.work.util.SqlSessionFactoryUtils;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

public class userServlet{
    //SqlSessionFactory factory= SqlSessionFactoryUtils.getSqlSessionFactory();

    
    /**
     * 登录方法

     * @return
     */

    public User login(String username,String password){
        //获取sqlsession
        SqlSession sqlSession=factory.openSession();
       //获取usermapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //调用方法
        User user = mapper.select(username, password);
        //释放资源

        sqlSession.close();
        return  user;


    }
}

img

img

参考下这个 http://t.csdn.cn/pALxL

我也遇到这个问题了,插个眼