如何连接数据库并且完成登录页面
1,准备工作
数据库内有user数据,Java后台有user对象,装好tomcat等
2,流程
1)创建LoginServlet类,完成六大步骤(乱码处理,获取前端数据,将数据封装到对象,将对象传到逻辑处理层处理,得到逻辑处理的返回值,将最终结果返回给前端),在Servlet中可以完成前三步。
2)创建UserService类,封装到对象后的逻辑需要创建一个UserService类将从前端得到的用户名跟密码进行处理,例如加密处理,验证码生成与验证,处理后将数据发送给dao层。
3)创建userDao类,连接数据库并且遍历选中的表,与处理后的数据进行比较,将比较的结果返回给UserService层。
4)UserService层得到结果并根据结果将对应值传递给前端。
3,实现代码
LoginServlet类
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1 乱码处理
req.setCharacterEncoding(StandardCharsets.UTF_8.toString());
resp.setCharacterEncoding(StandardCharsets.UTF_8.toString());
//2 得到前端数据
String name = req.getParameter("name");
String password = req.getParameter("password");
String code = req.getParameter("code");
String sessionCode = String.valueOf(req.getSession().getAttribute("vCode"));
//3 封装到model
UserVO userVO = UserVO.builder()
.name(name)
.password(password)
.code(code)
.sessionCode(sessionCode)
.build();
//4 将对象传递到服务逻辑层
UserService userService = new UserServiceImpl();
//5 得到服务逻辑层的返回值
ResultDTO obj = userService.login(userVO);
//6 将结果返回给web前端
resp.getWriter().println(JSONObject.toJSONString(obj));
}
}
UserService类
public class UserServiceImpl implements UserService {
@Override
public ResultDTO login(UserVO userVO) {
ResultDTO resultDTO = new ResultDTO();
if (userVO.getCode().equals(userVO.getSessionCode())) {
UserModel userModel = new UserModel();
userModel = ObjCopy.copy(userVO, UserModel.class);
String up = userModel.getPassword();
String down = Md5.encoderByMd5(up);
userModel.setPassword(down);
UserDao userDao = new UserDaoImpl();
UserModel model = userDao.findByUsernameAndPassword(userModel);
if (model != null) {
resultDTO.setCode(1);
resultDTO.setMsg("success");
} else {
resultDTO.setCode(0);
resultDTO.setMsg("error");
}
} else {
resultDTO.setCode(-1);
resultDTO.setMsg("error-code");
}
return resultDTO;
}
}
UserDao类
@Override
public UserModel findByUsernameAndPassword(UserModel userModel) {
String sql = "select * from user where name='" + userModel.getName()+ "' and password='" + userModel.getPassword() + "'";
ResultSet query = JDBC.query(sql);
UserModel model = null;
try {
while (query.next()) {
model = new UserModel();
}
} catch (SQLException e) {
e.printStackTrace();
}
return model;
}
}
其中采用了接口的形式实现Dao与Service的代码,使得代码看起来不那么臃肿