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)