帮忙看一下错误500

来源:6-3 Xml配置下实现Mapper接口

qq_慕九州3257409

2021-04-02 18:00:31

http://img.mukewang.com/climg/6066e9fa0950047000000000.jpg

<!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

同学你好,

http://img.mukewang.com/climg/6066ee080986aabc13570039.jpg

这个报错的意思是提示,MybatisUtils初始化错误

一般这个错误是xml中的配置有问题,请同学检查一下xml中的代码是否有错误的地方。

可以采用排除法,可以先尝试注释掉mappers文件夹目录下的xml中的与数据库中进行交互的代码先注释掉,看看是否还报这个错误,

如果是还报,请同学检查 一下mybatis-config.xml 是否有错误的地方

如果注释掉mappers文件夹中与数据库交互的相关的代码后,不再报这个错误

说明错误在这个mappers文件夹下的xml中,可以采用注释掉一部分的方法,来逐步排查一下。

祝学习愉快。

0

qq_慕九州3257409

提问者

2021-04-02

少贴了一张http://img.mukewang.com/climg/6066ecc9096edd8517550643.jpg

0

0 学习 · 16556 问题

查看课程