创建实体类
实体类的类名与数据库的表名相同,实体类的变量名与数据库的列名相同,即每个属性对应表中的一个列,然后创建getset方法和全参无参的构造方法
创建DAO层
首先创建要实现的方法的接口,例如:
public interface BaseAdminDao {
//根据用户名更新用户的的登陆时间和ip
void updateLoginTime(String username, Date date,String ip);
//根据用户名和密码登录
boolean login(String username,String password);
}
然后再imp中创建对应的类实现这些接口,这些类直接与数据库进行增删改查,首先建立与数据库的连接:
//1. 获取连接
Connection conn = DruidUtil.getConnection();
PreparedStatement state = null;
然后预编译SQL语句:
//2. 预编译SQL语句
try {
state = conn.prepareStatement(SQL_UPDATE_LOGIN_TIME);
SQL语句如下:
``private static final String SQL_UPDATE_LOGIN_TIME = "UPDATE eadmin SET LOGINTIME=?,LOGINIP=? WHERE USERNAME=?";
接下来填充参数:
//3. 填充参数
state.setDate(1,new java.sql.Date(date.getTime()));
state.setString(2,ip);
state.setString(3,username);
执行SQl语句:
//4. 执行
state.executeUpdate();
最后需要释放资源:
DruidUtil.close(conn,state,null);
这里使用的是DruidUtil的工具来连接数据库
创建Service层
service层是我们直接调用的层,创建dao层的对象,然后使用imp中的方法
//创建对象
private static BaseAdminDao dao=new AdminDaoMysql();
//更新登陆时间和ip
public static void updateLoginTimeAndIp(String username, Date date,String ip){
dao.updateLoginTime(username,date,ip);
}
//登录
public static boolean login(String username,String password){
return dao.login(username,password);
}
我们再controller层中直接调用的就是service层中的方法,service层在处理简单问题时只需要调用imp中的方法,遇到复杂的问题需要进行一定的判断
创建Controller层
Controller层负责接受前端发送的数据和向前端发送数据
首先设置路径,接受该路径传过来的数据
@ResponseBody("/admin/login.do")
这个注解写在方法上方,方法需要HttpServletRequest和HttpServletResponse这两个参数,用于接受数据和重定向
首先接收数据:
String username =request.getParameter("username");
String password =request.getParameter("password");
括号中的是前端发送的数据:
//ajax与服务器交互
$.post("login.do",{username:username,password:password},function (data){
//关闭load窗口
layer.close(windowsId);
//将服务器返回的结果进行展示
layer.msg(data.result);
if (data.status==0){
//登录成功,跳转到主页
location.assign("index.html")
}
},"JSON");
Message类用于规范数据:
public class Message {
//传递信息的规范
//格式:{status:0,result:"",data:{}}
private int status;//状态码 0表时成功,-1表示失败
private String result;//内容消息
private Object data;//消息所携带的数据
调用Service的方法
result= AdminService.login(username,password);
根据结果返回不同的结果给Ajax:
if (result){
message=new Message(0,"登陆成功");
//登录时间和IP更新
Date date=new Date();//创建当前时间
String ip=request.getRemoteUser();//获得对方的IP
AdminService.updateLoginTimeAndIp(username,date,ip);
request.getSession().setAttribute("adminUserName","username");
request.getSession().setAttribute("adminUserPhone","");
}else {
message=new Message(-1,"登陆失败");
}
将数据转换成JSON,并返回给前端
String json= JSONUtil.toJSON(message);
return json;
至此第一个项目的大概流程结束