第一天总结之后端登录功能的实现

2年前未命名294
第一天总结之后端登录功能的实现 追忆 往昔 于2023-01-13 23:00:18发布 489 收藏 分类专栏: 第一个项目之基于Mvc框架的锋迷网系统 文章标签: java mvc tomcat 第一个项目之基于Mvc框架的锋迷网系统 专栏收录该内容 6 篇文章 0 订阅 订阅专栏 第一天总结之后端登录功能的实现 一、 前端页面

从图片 很明显知道 两个intput输入框 一个输入username 一个输入password

从前端的页面代码 可以找到form表单 根据form表单的action属性了解到 点击登录跳转到 controller 层的 LoginServlet 二、controller 层 创建一个 LoginServlet 用于接收页面的请求 获取前端页面 input输入框的 username 和 password 通过request.getParameter()方法获取 然后 将获取的 username和password 传到 service 层 用来进行业务判段 new 对象 调方法 获取返回值 true或false 判断 如果账号密码正确: 获取session 对象: 通过request.getSession() 获取session对象 然后将username 存放到 session域中 目的是为了 在主页面的 右上角显示 用户名 重定向到主页面的 servlet UserFuzzyServlet 如果账号密码错误: 重定向到登录页面 重新登录

LoginServlet 代码如下:

package com.qfedu.controller; import com.qfedu.service.AdminService; import com.qfedu.service.impl.AdminServiceImpl; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.io.IOException; @WebServlet(name = "LoginServlet", value = "/LoginServlet") public class LoginServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //设置请求字符集 防止post请求 中文乱码 request.setCharacterEncoding("utf-8"); //获取前端input输入框的username和password String username = request.getParameter("username"); String password = request.getParameter("password"); //获取service 对象 调用service方法 AdminService adminService =new AdminServiceImpl(); boolean login = adminService.login(username, password); if(login){ //登录成功 //设置session HttpSession session = request.getSession(); //设置session的时间 session.setMaxInactiveInterval(60*60); session.setAttribute("username",username); //设置默认属性 session.setAttribute("userDelete",true); session.setAttribute("userResetPassword",true); session.setAttribute("userUpdate",true); //跳转到主页面 //注意!! 如果直接重定向到页面 会将页面原本的数据覆盖 所以只能通过 重定向到指定servlet 然后由该servlet获取数据 带着指定数据 转发到页面 response.sendRedirect("UserFuzzyServlet"); }else{ //登录失败 回到登录界面 // request.getRequestDispatcher("/after/login.jsp").forward(request,response); response.sendRedirect(request.getContextPath()+"/after/login.jsp"); } } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } } 三、service层 在service文件夹下创建一个 接口类 AdminService 对应登录的 业务逻辑 判断账号密码是否正确 书写抽象方法 boolean login(String username,String password); 参数为controller 层 的 servlet传过来的 username和password 返回值为boolean类型

AdminService代码如下:

package com.qfedu.dao; import com.qfedu.entity.Admin; import java.util.List; public interface AdminDao { List<Admin> loginDao(String username); } 在service文件夹下的impl文件夹下创建 AdminServiceImpl 类 作为接口类的实现类 在其中实现 接口的方法 因为管理员只有一条数据 所以只需要通过 username 查询 将username 传递到dao层 进行数据库的操作 因为目的是 通过username查询数据 所以数据库的返回值为 存放对象的List集合 获取dao层数据库的操作返回的 存放对象的List集合 判断集合是否为空 如果不为空 然后集合中对象的password是否等于传入的password 正确返回true 否则返回false

AdminServiceImpl代码如下:

package com.qfedu.dao.impl; import com.qfedu.dao.AdminDao; import com.qfedu.entity.Admin; import com.qfedu.utils.BaseDaoUtil; import java.util.List; public class AdminDaoImpl extends BaseDaoUtil implements AdminDao { @Override public List<Admin> loginDao(String username) { String sql="select * from admin where username=? "; Object[] objs={username}; return super.query(sql,objs,Admin.class); } } 四、dao层 在dao文件夹下创建一个 接口类 AdminDao 对应登录的 数据库操作 通过封装的 sql语句和 username 查询数据 书写抽象方法 List<Admin> loginDao(String username); 参数为dao 层 的 service传过来的 返回值为boolean类型

AdminService代码如下:

package com.qfedu.dao; import com.qfedu.entity.Admin; import java.util.List; public interface AdminDao { List<Admin> loginDao(String username); } 在dao文件夹下的impl文件夹下创建 AdminDaoImpl 类 作为接口类的实现类 并继承BaseDao类 从而直接使用其方法 在其中实现 接口的方法 因为utils工具包中 的 工具类 BaseDaoUtil 中 查询数据的方法的参数为 sql语句 Object[] 数组 和 实体类的class文件 所以需要将username 存放到 Object【】 数组中 书写sql语句 select * from admin where username=? 通过username查询出对应的数据 然后调用封装好的BaseDaoUtil进行查询操作

AdminDaoImpl代码如下:

package com.qfedu.dao.impl; import com.qfedu.dao.AdminDao; import com.qfedu.entity.Admin; import com.qfedu.utils.BaseDaoUtil; import java.util.List; public class AdminDaoImpl extends BaseDaoUtil implements AdminDao { @Override public List<Admin> loginDao(String username) { String sql="select * from admin where username=? "; Object[] objs={username}; return super.query(sql,objs,Admin.class); } } 五、entity 实体类 在entity下创建Admin 实体类 属性要与表的数据字段一一对应 私有化属性 并添加get set方法 package com.qfedu.entity; public class Admin { private Integer id; private String username; private String password; public Admin() { } 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 "Admin{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
标签: [db:标签TAG]

相关文章

深度学习做不了什么事

深度学习做不了什么事...

Linux文件系统及磁盘命名

Linux文件系统及磁盘命名...

高可用的并发解决方案nginx+keepalived

高可用的并发解决方案nginx+keepalived...

一口吃不成ChatGPT,复旦版MOSS服务器被挤崩后续

一口吃不成ChatGPT,复旦版MOSS服务器被挤崩后续...

Vue3现状—必然趋势?

Vue3现状—必然趋势?...

FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码

FPGA图像处理HLS实现三种图像缩放算法,线性插值、双线性插值、双三次插值,提供HLS工程和vivado工程源码...