3_32江_0531—实现连接数据库的简易登录
1、准备工作
使用MySQL数据库新建user表,包含三个属性id、username、password,给定一条数据设置账号密码admin,123。
2、实现实体类
新建实体类以及实现功能接口和重写方法
2.1 user类
public class User {
private Integer id;
private String username;
private String password;
public User() {
}
public User(Integer id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
2.2 IUserDao功能接口
用于演示,只用一个方法进行实现。
public interface IUserDao {
public User loginfind(User user);
}
2.3 UserDao方法重写
接下来进行方法的实现,其功能为查找对应数据库表中的记录,找到就把它封装一个user对象进行返回,因此判断语句显然是user的值是否为null。
public class UserDao implements IUserDao {
@Override
public User loginfind(User user) {
User loginuser = null;
List<Object> params = new ArrayList<>();
try {
Connection conn = MySqlDbUtil.getConnection();
String sql = "SELECT * FROM user WHERE 1=1";
if(user !=null){
if(user.getUsername() != null && !"".equals(user.getUsername())){
sql = sql + " AND username = ? ";
params.add(user.getUsername());
}
if(user.getPassword() != null && !"".equals(user.getPassword())){
sql = sql + " AND password = ? ";
params.add(user.getPassword());
}
}
PreparedStatement stmt = conn.prepareStatement(sql);
for(int i = 0 ;i<params.size();i++){
stmt.setObject(i+1,params.get(i));
}
ResultSet rs = stmt.executeQuery();
if(rs.next()){
loginuser = new User();
loginuser.setId(rs.getInt("id"));
loginuser.setUsername(rs.getString("username"));
loginuser.setPassword(rs.getString("password"));
}
rs.close();
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
return loginuser;
}
}
3 LoginController实现操作
@WebServlet("/Login")
public class LoginController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("./WEB-INF/view/login.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取请求参数
String LoginName = req.getParameter("LoginName");
String LoginPwd = req.getParameter("LoginPwd");
String validCode = req.getParameter("validCode");
String code = (String) req.getSession().getAttribute("code");
String msg;
//封装user对象
User loginuser = new User();
loginuser.setUsername(LoginName);
loginuser.setPassword(LoginPwd);
UserDao dao = new UserDao();
User user = dao.loginfind(loginuser);
if(!StrUtil.isBLank(validCode)){
if(validCode.equals(code)){
if (user != null) {
System.out.println("000");
req.getSession().setAttribute("user",LoginName);
resp.sendRedirect("./main");
} else {
System.out.println("111");
resp.sendRedirect("./login");
msg="账号或密码错误";
}
}else{
System.out.println("222");
msg="验证码错误";
resp.sendRedirect("./login");
}
}else {
System.out.println("333");
msg="请输入验证码!";
resp.sendRedirect("./login");
}
}
}