点登陆后500错误
来源:6-3 Xml配置下实现Mapper接口
慕标7542066
2021-05-24 11:31:31
类型 异常报告
消息 Servlet执行抛出一个异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
javax.servlet.ServletException: Servlet执行抛出一个异常
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因。
java.lang.NoClassDefFoundError: Could not initialize class utils.MybatisUtils
dao.userdao.selectByUsername(userdao.java:8)
service.userservice.checklogin(userservice.java:14)
servlet.loginservlet.doPost(loginservlet.java:33)
javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看

相关代码:userdao
package dao;
import entity.User;
import utils.MybatisUtils;
public class userdao {
public User selectByUsername(String username) {
User user = (User) MybatisUtils.executeQuery(sqlSession -> sqlSession.selectOne("usermapper.selectByUsername",username));
return user;
}
}
相关代码:userservice
package service;
import dao.rbacdao;
import dao.userdao;
import entity.User;
import service.exception.bussinessException;
import java.util.List;
public class userservice {
private dao.userdao userdao=new userdao();
private dao.rbacdao nodedao = new rbacdao();
public User checklogin(String username, String password) {
User user = userdao.selectByUsername(username);
if (user == null) {
throw new bussinessException("L001","用户名不存在");
}
if (!user.getPassword().equals(password)) {
throw new bussinessException("L002", "密码错误");
}
return user;
}
public List selectNodeByUserId(long userId) {
List list = nodedao.selectnodebyuserid(userId);
return list;
}
}
相关代码:loginservlet
package servlet;
import com.alibaba.fastjson.JSON;
import entity.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import service.exception.bussinessException;
import service.userservice;
import utils.MybatisUtils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet(name = "LoginServlet" , urlPatterns = "/check_login")
public class loginservlet extends HttpServlet {
private service.userservice userservice=new userservice();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Logger logger= LoggerFactory.getLogger(loginservlet.class);
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
Map<String, Object> result = new HashMap<>();
try {
User user = userservice.checklogin(username, password);
HttpSession Session = request.getSession();
Session.setAttribute("login_user",user);
result.put("code", "0");
result.put("message","success");
result.put("redirect_url", "/index");
} catch (bussinessException ex) {
logger.error(ex.getMessage(),ex);
result.put("code",ex.getCode());
result.put("message", ex.getMessage());
} catch (Exception ex) {
logger.error(ex.getMessage(),ex);
result.put("code",ex.getClass().getSimpleName());
result.put("message", ex.getMessage());
}
String json=JSON.toJSONString(result);
response.getWriter().println(json);
}}
1回答
好帮手慕阿满
2021-05-24
同学你好,报错提示不能初始化MybatisUtils类,错误出现在userdao类的第8行,如:

这个错误可能是配置文件有问题,建议同学将配置文件usermapper.xml贴上来,方便我们具体查看。
另外还有一个建议,类命名规范问题。类名首字母应该大写,如果类名由多个单词组成,每个单词的首字母都要大写。
祝学习愉快~
相似问题