package that.servlet;
import that.dao.UserDao;
import that.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("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置编码
request.setCharacterEncoding("utf-8");
//2.获取请求参数
String username =request.getParameter("username");
String password = request.getParameter("password");
//封装user对象
User loginUser = new User();
loginUser.setUsername(username);
loginUser.setPassword(password);
//调用login方法
UserDao dao = new UserDao();
User user = dao.login(loginUser);
//5.判断user
if(user == null){
//登录失败
request.getRequestDispatcher("/failServlet").forward(request,response);
}else{
//登录成功
//存储数据
request.setAttribute("user",user);
//转发
request.getRequestDispatcher("/successServlet").forward(request,response);
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
package that.dao;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import that.domain.User;
import that.util.JDBCUtils;
/*
操作数据库中的User表的类
*/
public class UserDao {
//声明JdbcTemplate对象共用
private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDatasouce());
/**
* 登录方法
* @param loginUser 只有用户名和密码
* @return user包含用户的全部数据
*/
public User login(User loginUser){
//编写sql
try {
//1.编写sql
String sql = "select * from user where username = ? and password = ?";
//2.调用query方法
User user = template.queryForObject(sql,
new BeanPropertyRowMapper<User>(User.class),
loginUser.getUsername(), loginUser.getPassword());
return user;
} catch (DataAccessException e) {
e.printStackTrace();//记录日志
return null;
}
}
}
就是在new UserDao对象的时候报的错,后来我创建了一个测试类来用UserDao创建对象发现可以用,就是不能再dopost方法里创建这个类的对象,真的不知道为什么
报错图
提示DataAccessException没有找到,可能是对应的jar包没有在classpath下找到,如是maven管理包可以在pom文件中加下如下依赖或者下载spring-tx-5.2.4.RELEASE.jar,下载地址:https://repo1.maven.org/maven2/org/springframework/spring-tx/5.2.4.RELEASE/spring-tx-5.2.4.RELEASE.jar
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.2.4.RELEASE</version>
</dependency>
这个是 web 应用工程,那么 spring 框架的 jar 包你有没有放到 WEB-INF 下的 lib 目录中呢?
或者说是通过别的方式添加的依赖呢?
有一种可能就是,lib 目录下没有这个 jar 包,导致 Tomcat 启动该应用时无法正确启动。
我也出现了同样的问题,已经解决了。可以试试用maven clean一下