求助大神,servlet无法创建dao对象的实例

servlet无法创建dao对象的实例


dao对象代码:

package com.company.dao;

import com.company.domain.User;
import com.company.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;



public class UserDao {
    private JdbcTemplate jdbcTemplate = new JdbcTemplate(JDBCUtils.getDataSource());

    public  User login(User loginUser) {
        System.out.println("UserDao");
        try {
            String sql = "select * from user where username = ? and password = ?";
            User user = jdbcTemplate.queryForObject(sql,
                    new BeanPropertyRowMapper<>(User.class),
                    loginUser.getUsername(),
                    loginUser.getPassword());
            System.out.println("UserDao"+user);

            return user;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("error");
            return null;
        }
    }
}

login登录逻辑代码:


package com.company.web.servlet;


import com.company.dao.UserDao;
import com.company.domain.User;


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;

@WebServlet({"/Register/loginRegister", "/loginRegister"})
public class LoginServlet extends HttpServlet {


    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");


        User user = new User();
        user.setPassword(password);
        user.setUsername(username);
        System.out.println(user); //这一步可以打印user对象


            UserDao userDao = new UserDao();  //调试时不能得到 userDao对象
        User loginUser = userDao.login(user); //无法调用login方法
        System.out.println(loginUser);


        req.setAttribute("username", username);

        if (loginUser == null) {
            req.getRequestDispatcher("/failedServlet").forward(req, resp);
        } else {
            req.getRequestDispatcher("/successServlet").forward(req, resp);
        }
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doGet(req, resp);
    }
}
用jnit测试dao对象可以创建,login方法调用正常

@Test
    public void testDao(){
        UserDao userDao = new UserDao();
        User user = new User(null, "admin", "admin");
        User xxx = userDao.login(user);
        System.out.println(xxx);
    }

网页上异常信息:


Exception:

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause:

java.lang.NoClassDefFoundError: org/springframework/jdbc/core/RowMapper
    com.company.web.servlet.LoginServlet.doGet(LoginServlet.java:50)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

Root Cause:

java.lang.ClassNotFoundException: org.springframework.jdbc.core.RowMapper
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1308)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1136)
    com.company.web.servlet.LoginServlet.doGet(LoginServlet.java:50)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

我把JDBC的jar包加入到 WED_INF 文件夹下的lib目录,应该加入到 WED-INF 目录下,注意: 是 中间短横线 不是 下横线 [大哭]

你参照下这个文章试试
https://blog.csdn.net/qq_28301007/article/details/52653074

应该用spring处理这些dao ,service的创建。
至于为什么不能创建在下愚钝看不出来。

从代码来看,直接 new 一个 DAO 对象是可以的。异常信息是什么?直接去百度一下异常信息看看。

new BeanPropertyRowMapper<>(User.class),
试试改为

new BeanPropertyRowMapper<User>(User.class),

楼主解决了吗 这个问题

没有更新部署,无法识别org/springframework/jdbc/core/RowMapper?应该是这个问题