今天主要是使用springboot实现了网站的登陆注销以及信息的分页显示。
项目包结构如下
用户登录
controller层中,UserController实现以下几个方法
@GetMapping
public String toLogin() {
return "admin/login";
}
@PostMapping("login")
public String login(String username, String password, HttpSession session, RedirectAttributes redirectAttributes) {
User user = userService.checkUser(username, password);
if(user != null){
session.setAttribute("user", user);
return "admin/index";
}else{
redirectAttributes.addFlashAttribute("message","用户名和密码错误哦");
return "redirect:/admin";
}
}
@GetMapping("logout")
public String logout(HttpSession session){
session.removeAttribute("user");
return "admin/login";
}
此次持久化使用的是Hibernate(开放源代码的对象关系映射框架),它是基于JPA的框架,JPA由一系列的接口和抽象类构成,是一个标准,而Hibernate就是献县这一些列接口的框架。Hibernate可以自动生成SQL语句,完成持久化相关任务,使开发变得更加方便快捷。比如今天的项目中,使用Hibernate,首先在配置文件application.yml中配置
jpa:
hibernate:
ddl-auto: update
show-sql: true
之后在dao层,只需要继承JpaRepository,再将方法名写出来即可,但是要注意方法名要和参数对应起来哦。
public interface IUserDao extends JpaRepository<User,Long> {
User findByUsernameAndPassword(String username, String password);
}
这样就可以根据能否查出User对象来判断用户能否登陆成功了。
信息分页
之前在ssm项目的时候,信息分页需要自己写一个PageInfo类,才能实现分页功能,现在不用了,可以使用内置的Pageable来实现
@RequestMapping
public String list(@PageableDefault(size = 5, sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable, Model model){
Page<Type> page = typeService.listType(pageable);
model.addAttribute("page",page);
return "admin/types";
}
在html文件中,对page对象遍历即可显示信息
<tr th:each="type,iterStat:${page.content}">
<td th:text="${iterStat.count}">1</td>
<td th:text="${type.name}">刻意练习清单</td>
<td>
<a href="#" class="ui mini teal basic button">编辑</a>
<a href="#" class="ui mini red basic button">删除</a>
</td>
</tr>
</tbody>
要实现上下翻页,只需要在HTML中执行如下操作即可
<div class="ui mini pagination menu" th:if="${page.totalPages}>1">
<a class=" item" th:href="@{/admin/types(page=${page.number}-1)}" th:unless="${page.first}">上一页</a>
<a class=" item" th:href="@{/admin/types(page=${page.number}+1)}" th:unless="${page.last}" >下一页</a>
</div>
同时,这段代码也实现了,在第一页不显示上一页,在最后一页不显示下一页,只有一页时,上一页下一页均不显示。
效果图
登录界面
用户名或者密码错误时
分页