ページ プロトタイプ
1. ログイン ページの表示: プロジェクト パス (\resources\backend\page\login\login) .html)
# 従業員はログイン ボタンをクリックしてバックエンド管理プラットフォームにログインします。ログインが正しい場合を除き、ログインは許可されません。
#ログイン処理ロジックpackage com.itheima.reggie.common; import lombok.Data; import java.util.HashMap; import java.util.Map; /** * 返回通用类 * @author jekong * @date 2022/4/22 */ @Data public class R<T> { /** 编码:1成功,0和其它数字为失败*/ private Integer code; /** 信息返回*/ private String msg; /** 信息返回数据*/ private T data; /** 动态数据*/ private Map map = new HashMap(); public static <T> R<T> success(T object) { R<T> r = new R<T>(); r.data = object; r.code = 1; return r; } public static <T> R<T> error(String msg) { R r = new R(); r.msg = msg; r.code = 0; return r; } public R<T> add(String key, Object value) { this.map.put(key, value); return this; } }
Value | |
/employee/login | |
{ | "ユーザー名": "admin", "パスワード": "123456" } |
{ | "コード": 0, "msg": "ログイン成功", "data": null, "map": {} } |
Employee.java (従業員オブジェクト) の作成
package com.itheima.reggie.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; import java.io.Serializable; import java.time.LocalDateTime; /** * 员工实体类 * @author jektong * @date 2022/4/21 */ @Data public class Employee implements Serializable { /** 序列号*/ private static final long serialVersionUID = 1L; /**唯一主键*/ private Long id; /**用户名*/ private String username; /**姓名*/ private String name; /**密码*/ private String password; /**电话*/ private String phone; /**性别*/ private String sex; /**身份证号码*/ private String idNumber; /**状态*/ private Integer status; /**创建时间*/ private LocalDateTime createTime; /**更新时间*/ private LocalDateTime updateTime; /**添加用户时使用*/ @TableField(fill = FieldFill.INSERT) private Long createUser; /**更新用户时使用*/ @TableField(fill = FieldFill.INSERT_UPDATE) private Long updateUser; }
マッパー データベース インタラクション レイヤー
package com.itheima.reggie.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.itheima.reggie.entity.Employee; import org.apache.ibatis.annotations.Mapper; /** * EmployeeMapper * @author jektong * @date 2022/4/21 */ @Mapper public interface EmployeeMapper extends BaseMapper<Employee> { }
サービスビジネス層インターフェース
package com.itheima.reggie.service; import com.baomidou.mybatisplus.extension.service.IService; import com.itheima.reggie.entity.Employee; import org.springframework.stereotype.Service; /** * @author jektong * @date 2022/4/21 */ public interface EmployeeService extends IService<Employee> { }
ビジネス層実装クラス
package com.itheima.reggie.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.itheima.reggie.entity.Employee; import com.itheima.reggie.mapper.EmployeeMapper; import com.itheima.reggie.service.EmployeeService; import org.springframework.stereotype.Service; /** * @author jektong * @date 2022/4/21 */ @Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService { }
コントローラ制御層
package com.itheima.reggie.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.itheima.reggie.common.CommonsConst; import com.itheima.reggie.common.R; import com.itheima.reggie.entity.Employee; import com.itheima.reggie.service.EmployeeService; import lombok.extern.slf4j.Slf4j; import org.springframework.util.DigestUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; /** * 员工控制类 * * @author tongbing * @date 2022/4/21 */ @Slf4j @RestController @RequestMapping("/employee") public class EmployeeController { @Resource private EmployeeService employeeService = null; /** * 登录请求处理 * TODO 后续改进将业务处理的代码放入业务层,这里只做数据请求与返回 * @param request * @param employee * @return */ @PostMapping("/login") public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) { // 将页面提交的密码进行MD5加密 String password = employee.getPassword(); password = DigestUtils.md5DigestAsHex(password.getBytes()); // 根据用户名查数据库 LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<Employee>(); queryWrapper.eq(Employee::getUsername, employee.getUsername()); Employee emp = employeeService.getOne(queryWrapper); // 查不到返回登录失败结果 if(emp == null){ return R.error(CommonsConst.LOGIN_FAIL); } // 比对密码 if(!emp.getPassword().equals(password)){ return R.error(CommonsConst.LOGIN_FAIL); } // 查看员工状态 if(emp.getStatus() == CommonsConst.EMPLOYEE_STATUS_NO){ return R.error(CommonsConst.LOGIN_ACCOUNT_STOP); } // 登录成功将员工的ID放入session中 request.getSession().setAttribute("employeeId",emp.getId()); return R.success(emp); } }
5. 機能テスト
#データが正しく返されるかどうか
付録
package com.itheima.reggie.common; /** * 常量定义 * @author jektong * @date 2022/4/23 */ public class CommonsConst { // 登录失败 public static final String LOGIN_FAIL = "登录失败"; // 账号禁用 public static final String LOGIN_ACCOUNT_STOP = "账号禁止使用"; // 员工账号禁用状态 0:禁用 public static final Integer EMPLOYEE_STATUS_NO = 0; // 员工账号正常状态 1:正常使用 public static final Integer EMPLOYEE_STATUS_YES = 1; }
以上がJavaバックエンドログイン機能の実装方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。