帮忙看一下错误500
来源:6-3 Xml配置下实现Mapper接口
qq_慕九州3257409
2021-04-02 18:00:31

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>慕课网办公OA系统</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/resources/layui/css/layui.css">
</head>
<body class="layui-layout-body">
<!-- Layui后台布局CSS -->
<div class="layui-layout layui-layout-admin">
<!--头部导航栏-->
<div class="layui-header">
<!--系统标题-->
<div class="layui-logo" style="font-size:18px">慕课网办公OA系统</div>
<!--右侧当前用户信息-->
<ul class="layui-nav layui-layout-right">
<li class="layui-nav-item">
<a href="javascript:void(0)">
<!--图标-->
<span class="layui-icon layui-icon-user" style="font-size: 20px">
</span>
<!--用户信息-->
${current_employee.name}[部门-${current_employee.title}]
</a>
</li>
<!--注销按钮-->
<li class="layui-nav-item"><a href="#">注销</a></li>
</ul>
</div>
<!--左侧菜单栏-->
<div class="layui-side layui-bg-black">
<!--可滚动菜单-->
<div class="layui-side-scroll">
<!--可折叠导航栏-->
<ul class="layui-nav layui-nav-tree">
<!--父节点-->
<#list node_list as node>
<#if node.nodeType==1>
<li class="layui-nav-item layui-nav-itemed">
<a href="javascript:void(0)">${node.nodeName}</a>
<dl class="layui-nav-child module" data-node-id="${node.nodeId}"></dl>
</li>
</#if>
<!--子节点-->
<#if node.nodeType==2>
<dd class="function" data-parent-id="${node.parentId}">
<a href="javascript:void(0)" target="ifmMain">${node.nodeName}</a>
</dd>
</#if>
</#list>
</ul>
</div>
</div>
<!--主体部分采用iframe嵌入其他页面-->
<div class="layui-body" style="overflow-y: hidden">
<iframe name="ifmMain" style="border: 0px;width: 100%;height: 100%"></iframe>
</div>
<!--版权信息-->
<div class="layui-footer">
Copyright © imooc. All Rights Reserved.
</div>
</div>
<!--LayUI JS文件-->
<script src="/resources/layui/layui.all.js"></script>
<script>
//将所有功能根据parent_id移动到指定模块下
layui.$(".function").each(function () {
var func = layui.$(this);
var parentId = func.data("parent-id");
layui.$("dl[data-node-id=" + parentId + "]").append(func);
})
//刷新折叠菜单
layui.element.render('nav');
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>办公OA系统</title>
<link rel="stylesheet" href="/resources/layui/css/layui.css">
<style>
body{
background-color: #F2F2F2;
}
.oa-container{
background-color: white;
position: absolute;
width: 400px;
height: 350px;
top: 50%;
left: 50%;
padding: 20px;
margin-left: -200px;
margin-top: -175px;
}
#password,#username{
text-align: center;
font-size: 24px;
}
</style>
</head>
<body>
<div class="oa-container">
<h1 style="text-align: center;margin-bottom: 20px">办公OA系统</h1>
<form class="layui-form">
<div class="layui-form-item">
<input type="text" id="username" name="username" placeholder="请输入用户名" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-item">
<input type="password" id="password" name="password" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-item">
<button class="layui-btn layui-btn-fluid" lay-submit lay-filter="login">登录</button>
</div>
</form>
</div>
<script src="resources/layui/layui.all.js"></script>
<script>
layui.form.on("submit(login)",function (formdata){
console.log(formdata);
layui.$.ajax({
url:"/check_Login",
data: formdata.field,
type: "post",
dataType: "json",
success : function (json){
console.log(json);
if(json.code=="0"){
window.location.href=json.redirect_url;
}else {
layui.layer.msg(json.message);
}
}
})
return false;
})
</script>
</body>
</html>
package com.imooc.oa.controller;
import com.alibaba.fastjson.JSON;
import com.imooc.oa.entity.User;
import com.imooc.oa.service.UserService;
import com.imooc.oa.service.exception.BussinessException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@WebServlet(name = "LoginServlet", value = "/check_Login")
public class LoginServlet extends HttpServlet {
private UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
@Override
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 httpSession=request.getSession();
httpSession.setAttribute("login_user",user);
result.put("code","0");
result.put("message","success");
result.put("redirect_url","/index");
}catch (BussinessException e){
logger.error(e.getMessage(),e);
result.put("code",e.getCode());
result.put("message",e.getMessage());
}catch (Exception e){
logger.error(e.getMessage(),e);
result.put("code",e.getClass().getSimpleName());
result.put("message",e.getMessage());
}
String json=JSON.toJSONString(result);
response.getWriter().println(json);
}
}
package com.imooc.oa.controller;
import com.imooc.oa.entity.Employee;
import com.imooc.oa.entity.Node;
import com.imooc.oa.entity.User;
import com.imooc.oa.service.EmployeeService;
import com.imooc.oa.service.UserService;
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.List;
@WebServlet(name = "IndexServlet", value = "/index")
public class IndexServlet extends HttpServlet {
private UserService userService=new UserService();
private EmployeeService employeeService=new EmployeeService();
protected void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse){
}
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse){
HttpSession session=httpServletRequest.getSession();
User user=(User)session.getAttribute("login_user");
Employee employee=employeeService.selectById(user.getEmployeeId());
List<Node> nodeList = userService.selectNodeByUserId(user.getUserId());
httpServletRequest.setAttribute("node_list",nodeList);
httpServletRequest.setAttribute("current_employee",employee);
try {
httpServletRequest.getRequestDispatcher("/index.ftl").forward(httpServletRequest,httpServletResponse);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.imooc.oa.dao;
import com.imooc.oa.entity.Employee;
public interface EmployeeDao {
public Employee selectById(Long employee);
}
package com.imooc.oa.dao;
import com.imooc.oa.entity.Node;
import com.imooc.oa.utils.MybatisUtils;
import java.util.List;
public class RbacDao {
public List<Node> selectByUserId(Long userId){
return (List) MybatisUtils.executeQuery(sqlSession -> sqlSession.selectList("rbacmapper.selectNodeByUserId",userId));
}
}
package com.imooc.oa.dao;
import com.imooc.oa.entity.User;
import com.imooc.oa.utils.MybatisUtils;
public class UserDao {
public User selectByUsername (String username){
User user = (User)MybatisUtils.executeQuery(sqlSession ->
sqlSession.selectOne("usermapper.selectByUsername",username)
);
return user;
}
}
package com.imooc.oa.datasource;
import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.datasource.unpooled.UnpooledDataSourceFactory;
import javax.sql.DataSource;
import java.sql.SQLException;
public class DruidDatasourceFactory extends UnpooledDataSourceFactory {
public DruidDatasourceFactory(){
this.dataSource=new DruidDataSource();
}
@Override
public DataSource getDataSource() {
try {
((DruidDataSource)this.dataSource).init();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return this.dataSource;
}
}
package com.imooc.oa.entity;
public class Employee {
private Long employeeId;
private String name;
private Long departmentId;
private String title;
private Integer level;
public Long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getDepartmentId() {
return departmentId;
}
public void setDepartmentId(Long departmentId) {
this.departmentId = departmentId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
}
package com.imooc.oa.entity;
public class Node {
private Long nodeId;
private Integer nodeType;
private String nodeName;
private String url;
private Integer nodeCode;
private Long parentId;
public Long getNodeId() {
return nodeId;
}
public void setNodeId(Long nodeId) {
this.nodeId = nodeId;
}
public Integer getNodeType() {
return nodeType;
}
public void setNodeType(Integer nodeType) {
this.nodeType = nodeType;
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getNodeCode() {
return nodeCode;
}
public void setNodeCode(Integer nodeCode) {
this.nodeCode = nodeCode;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
}
package com.imooc.oa.entity;
public class User {
private Long employeeId;
private String username;
private String password;
private Long userId;
public Long getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Long employeeId) {
this.employeeId = employeeId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
}
package com.imooc.oa.service.exception;
public class BussinessException extends RuntimeException{
private String code;
private String message;
public BussinessException(String code,String message){
super(code+":"+message);
this.code=code;
this.message=message;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.imooc.oa.service;
import com.imooc.oa.dao.EmployeeDao;
import com.imooc.oa.entity.Employee;
import com.imooc.oa.utils.MybatisUtils;
public class EmployeeService {
public Employee selectById(Long employeeId){
return (Employee) MybatisUtils.executeQuery(sqlSession -> {
EmployeeDao employeeDao=sqlSession.getMapper(EmployeeDao.class);
return employeeDao.selectById(employeeId);
});
}
}
package com.imooc.oa.service;
import com.imooc.oa.dao.RbacDao;
import com.imooc.oa.dao.UserDao;
import com.imooc.oa.entity.Node;
import com.imooc.oa.entity.User;
import com.imooc.oa.service.exception.BussinessException;
import java.util.List;
public class UserService {
private UserDao userDao=new UserDao();
private RbacDao rbacDao=new RbacDao();
public User checkLogin(String username, String password){
User user= userDao.selectByUsername(username);
if(user==null){
throw new BussinessException("L0001","用户名不存在");
}
if(!password.equals(user.getPassword())){
throw new BussinessException("L002","密码错误");
}
return user;
}
public List<Node> selectNodeByUserId(Long userId){
List<Node> list=rbacDao.selectByUserId(userId);
return list;
}
}
package com.imooc.oa.utils;
import javafx.beans.binding.ObjectExpression;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;
import java.util.function.Function;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory = null;
static {
Reader reader = null;
try {
reader = Resources.getResourceAsReader("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}
public static Object executeQuery(Function<SqlSession, Object> func) {
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
Object obj = func.apply(sqlSession);
return obj;
} finally {
sqlSession.close();
}
}
public static Object executeUpdate(Function<SqlSession, Object> func) {
SqlSession sqlSession = sqlSessionFactory.openSession(false);
try {
Object obj = func.apply(sqlSession);
sqlSession.commit();
return obj;
} finally {
sqlSession.close();
}
}
}
2回答
好帮手慕阿莹
2021-04-02
同学你好,

这个报错的意思是提示,MybatisUtils初始化错误
一般这个错误是xml中的配置有问题,请同学检查一下xml中的代码是否有错误的地方。
可以采用排除法,可以先尝试注释掉mappers文件夹目录下的xml中的与数据库中进行交互的代码先注释掉,看看是否还报这个错误,
如果是还报,请同学检查 一下mybatis-config.xml 是否有错误的地方
如果注释掉mappers文件夹中与数据库交互的相关的代码后,不再报这个错误
说明错误在这个mappers文件夹下的xml中,可以采用注释掉一部分的方法,来逐步排查一下。
祝学习愉快。
qq_慕九州3257409
提问者
2021-04-02
少贴了一张
相似问题