userList在index里面无法被识别,并且userList里面没有数据?

userList在index里面无法被识别,并且userList里面没有数据?

核对了一下发现代码应该没有错误,请老师帮忙看一下userList为啥不能识别和输出?

index.jsp

<%--
  Created by IntelliJ IDEA.
  User: 46215
  Date: 2019/8/9
  Time: 18:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
    <title>慕课网用户管理中心</title>
    <link rel="stylesheet" href="lib/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    <script src="lib/2.2.4/jquery-1.12.4.min.js"></script>
    <script src="lib/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
    <div class="row">
        <div class="page-header">
            <h1>慕课网后台管理系统<small>用户数据管理中心</small></h1>
        </div>
    </div>
    <div class="row">
        <div class="jumbotron">
            <h1>MyBatis基础入门课程!</h1>
            <p>通过一个项目来完成基础部分的学习</p>
            <p><a class="btn btn-primary brn-lg" href="#" role="button">查看更多,请上慕课网</a></p>
        </div>
    </div>
    <div class="row">
        <table class="table table-hover table-striped">
            <tr>
                <th>用户编号</th>
                <th>登录账号</th>
                <th>用户昵称</th>
                <th>邮箱</th>
                <th>联系方式</th>
                <th>账号创建时间</th>
                <th>用户状态</th>
                <th>操作</th>
            </tr>
            <c:forEach var="user" items="${usersList}">
                <tr>
                    <td>${user.id}</td>
                    <td>${user.username}</td>
                    <td>${user.nickname}</td>
                    <td>${user.email}</td>
                    <td>${user.phone}</td>
                    <td>${user.createTime}</td>
                    <c:if test="${user.userStates==0}">
                        <td>正常</td>
                    </c:if>
                    <c:if test="${user.userStates==1}">
                        <td>锁定</td>
                    </c:if>
                    <c:if test="${user.userStates==2}">
                        <td>删除</td>
                    </c:if>
                    <td>
                        <a href="${pageContext.request.contextPath}/detail?id=${user.id}">查看</a>
                        <a href="">修改</a>
                        <a href="">删除</a>
                    </td>
                </tr>
            </c:forEach>
        </table>
    </div>
</div>
</body>
</html>
</html>

UsersFindServlet

package com.damu.servlet;

import com.damu.dao.UsersDAO;
import com.damu.entity.Users;

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 java.io.IOException;
import java.util.List;

/**
 * 为了方便前台调用UsersDAO得到的数据
 */
@WebServlet("/index")
public class UsersFindServlet extends HttpServlet {
    private UsersDAO usersDAO=new UsersDAO();

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //将findAll()查询到的数据存入List
        List<Users> list=usersDAO.findAll();
        System.out.println(list);
        //将list存入request
        req.setAttribute("usersList",list);
        //然后请求转发到页面进行数据的演示
        req.getRequestDispatcher("index.jsp").forward(req, resp);

    }
}

UsersDAO

package com.damu.dao;

import com.damu.entity.Users;
import com.damu.utils.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

/**
 * 查询数据
 */
public class UsersDAO {

    private SqlSession sqlSession;
    private List<Users> list;
    private Users user;

    private SqlSession getSession(){
        sqlSession= SqlSessionFactoryUtils.getSqlSessionFactory().openSession();
        return sqlSession;
    }
    //查询全部用户
    public List<Users> findAll(){
        try {
            list=getSession().selectList("findAll");
//            for(int i=0;i<list.size();i++){
//                System.out.println(i);
//            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            sqlSession.close();
        }
        return list;
    }
    //查询当用户根据编号查询
    public Users findById(Integer id){
        try {
            user=getSession().selectOne("findById",id);

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            sqlSession.close();
        }
        return user;
    }

}

SqlSessionFactoryUtils

package com.damu.utils;
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.InputStream;

/**
 *  初始化,获取和关闭SqlSessionFactory
 */
public class SqlSessionFactoryUtils {
    //路径
    private static  String RESOURCE="mybatis-config.xml";
    //SqlSessionFactory对象
    private static SqlSessionFactory sqlSessionFactory;
    //因创建的是web项目,所以存放在ThreadLocal里
    private static  ThreadLocal<SqlSession> threadLocal=new ThreadLocal<SqlSession>();

    //创建一个初始化SqlSessionFactory的方法
    public static void initSqlSessionFactory(){
        try {
            InputStream is = Resources.getResourceAsStream(RESOURCE);
            sqlSessionFactory =new SqlSessionFactoryBuilder().build(is);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //获取SqlSessionFactory即工厂对象的方法
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
    //关闭SqlSession的方法,关闭时先从threadLocal里面获取
    public static void close(){
        SqlSession session=threadLocal.get();
        if(session!=null){
            session.close();
            threadLocal.set(null);
        }
    }


}

usersMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
mapper 用于定义一个映射配置文件的根节点
namespace属性是用来配置命名空间,主要进行session级别的缓存管理
命名空间默认情况下,使用我们当前操作的实体类的全路径
-->
<mapper namespace="com.damu.entity.Users">
    <select id="findAll" resultType="com.damu.entity.Users">
        select *from users
    </select>
    <select id="findById" resultType="com.damu.entity.Users">
        select *from  users where id=#{id}
    </select>

</mapper>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--
    properties配置,用于加载外部的properties配置文件
    -->
    <properties resource="db.properties"></properties>
    <!--
    environments 主要用于进行数据源的配置
    可以配置多个数据源
    -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="product">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mapper/usersMapper.xml"/>
    </mappers>
</configuration>

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb
username=root
password=1234




正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学idea的控制台是否有报错呢?


  • bbb绑绑绑 提问者 #1
    控制台是指?,大概没有报错,我贴几张图出来看看。弹出的找不到应用程序的框好像没有啥影响,关掉了也能运行,就是不晓得怎么去掉它每次都弹出来。
    2019-08-12 15:28:12
提问者 bbb绑绑绑 2019-08-12 15:28:52
  • 同学这里直接访问了页面,并没有访问后台的servlet哦,同学应该直接访问后台的servlet,查询到数据返回页面。建议同学直接访问地址:http://localhost:8080/index 测试一下。祝学习愉快~
    2019-08-12 15:39:41
  • 提问者 bbb绑绑绑 回复 好帮手慕柯南 #2
    不。。不愧是柯南!么么哒
    2019-08-12 16:04:24
提问者 bbb绑绑绑 2019-08-12 10:04:24

已确认数据库里有数据,userList在index页面得到这样的警告:Cannot resolve variable...

http://img1.sycdn.imooc.com//climg/5d50c8b100018cf004250161.jpg

http://img1.sycdn.imooc.com//climg/5d50c8b1000187c510400477.jpg

http://img1.sycdn.imooc.com//climg/5d50c8b10001967106510443.jpg


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师