简介:这篇文章会详细介绍基于Java-Web编程实现一个登录功能,即接收前端发来的用户名和密码,在服务器端进行验证。若验证通过则登陆成功,否则返回账号或密码错误,登录失败。
package com.itheima.tliaswebmanagement.controller; import com.itheima.tliaswebmanagement.pojo.Emp; import com.itheima.tliaswebmanagement.pojo.Result; import com.itheima.tliaswebmanagement.service.EmpService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; @Slf4j // 输出日志注解 @RestController //接受请求,作出响应 public class LoginController { @Autowired private EmpService empService; @PostMapping("/login") public Result login(@RequestBody Emp emp){ Emp e = empService.login(emp); return e != null ? Result.success():Result.error("用户名或密码错误"); } }
在上面的代码中,LoginController类接收来自前端传递的登录信息,调用Service层的逻辑代码进行判定并且返回判定结果。
图 2.1 Service层接口
package com.itheima.tliaswebmanagement.service; import com.itheima.tliaswebmanagement.pojo.Emp; import com.itheima.tliaswebmanagement.pojo.PageBean; import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDate; import java.util.List; /** * 员工管理 */ public interface EmpService { /** * 分页查询 * @param page * @param pageSize * @return */ PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end); /** * 根据id删除用户 */ void deleteById(List<Integer> ids); /** * 员工管理-新增员工信息 * @param emp */ void save(Emp emp); /** * 员工管理-查询员工信息 * @param id */ Emp getById(Integer id); /** * 员工管理-修改员工信息 * @param emp * @return */ void updateById(Emp emp); /** * 员工管理-员工登录 * @param emp * @return emp */ Emp login(Emp emp); }
在图?2.1 Service层接口中,配置了 login(Emp emp)接口,这个接口就是进行逻辑判断的部分。
图 2.2?Service 层接口实现类
package com.itheima.tliaswebmanagement.service.impl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.itheima.tliaswebmanagement.mapper.EmpMapper; import com.itheima.tliaswebmanagement.pojo.Emp; import com.itheima.tliaswebmanagement.pojo.PageBean; import com.itheima.tliaswebmanagement.service.EmpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.stereotype.Service; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Service public class EmpServiceImpl implements EmpService { @Autowired private EmpMapper empMapper; // 方法二: 采用PageHelper插件进行分页 @Override public PageBean page(Integer page, Integer pageSize, String name, Short gender, LocalDate begin, LocalDate end) { // 1.为分页插件设置参数 PageHelper.startPage(page, pageSize); // 2.执行查询语句 List<Emp> empList = empMapper.list(name, gender, begin, end); // 3.强转为Page类型 Page<Emp> empPage = (Page<Emp>)empList; return new PageBean(empPage.getTotal(), empPage.getResult()); } @Override public void deleteById(List<Integer> ids) { empMapper.deleteById(ids); } @Override public void save(Emp emp) { emp.setCreateTime(LocalDateTime.now()); emp.setUpdateTime(LocalDateTime.now()); empMapper.insert(emp); } @Override public Emp getById(Integer id) { Emp emp = empMapper.getById(id); return emp; } @Override public void updateById(Emp emp) { emp.setUpdateTime(LocalDateTime.now()); empMapper.updateById(emp); } @Override public Emp login(Emp emp) { Emp e = empMapper.getByUsernameAndPassword(emp); return e; } /* @Override public PageBean page(Integer page, Integer pageSize) { // 1.获取总记录数 Long count = empMapper.count(); // 2.获取分页查询结果数据 List<Emp> empList = empMapper.page((page - 1) * pageSize, pageSize); // 3.将查询的结果封装到PageBean中 return new PageBean(count, empList); }*/ }
在图 2.2?Service 层接口实现类中,实现了Emp login(Emp emp)这个方法。
图 3.1?Dao?层
package com.itheima.tliaswebmanagement.mapper; import com.itheima.tliaswebmanagement.pojo.Emp; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.time.LocalDate; import java.util.List; /** * 员工管理 */ @Mapper public interface EmpMapper { /** * 员工管理-员工登录 * @param emp * @return emp */ @Select("select * from emp where username = #{username} and password = #{password}") Emp getByUsernameAndPassword(Emp emp); }
Dao层,访问数据库获取与前端输入信息相对应的用户信息。