目录
DAO层模拟数据库
使用map集合存储即可,增删改查均是对map的操作
@Repository
public class departemtDao {
private static Map<Integer, department>map=null;
static {
map=new HashMap<Integer, department>();
map.put(1,new department(1,"教育部"));
map.put(2,new department(2,"学生部"));
map.put(3,new department(3,"后勤部"));
}
//通过id查询
public department getById(Integer id){
department department = map.get(id);
return department;
}
//查询所有
public Collection<department> findAll(){
Collection<department> values = map.values();
return values;
}
}
设置拦截器
当不登陆时,不允许访问其它页面
自定义拦截器
public class LoginHandlerInterceptor implements HandlerInterceptor {
// 重写方法,根据条件判断是否放行
// 判断条件 session中loginUser属性是否为空
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Object loginUser = request.getSession().getAttribute("loginUser");
if(loginUser==null){
request.setAttribute("msg","请先进行登录");
request.getRequestDispatcher("/index.html").forward(request,response);
return false;
}else {
return true;
}
}
}
在mvcConfig中配置拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginHandlerInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/index.html","/","login.html","/css/**","/js/**","/img/**","/fonts/**","style.css","favicon.ico","/login");
}
- 拦截的路径是/**
- 释放的路径是 静态资源、登录页面、以及涉及到的url
前端代码的抽取复用
将共同的代码抽取到一个html中,文件是commons/common.html
注意
- 不需要使用head、body标签
- 使用的属性是th:fragment
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<div class="left-sidebar-pro" th:fragment="nav_1">
<nav id="sidebar" class="">
<div class="sidebar-header">
<a href="index.html"><img class="main-logo" src="img/logo/logo.png" alt="" /></a>
<strong><a href="index.html"><img src="img/logo/logosn.png" alt="" /></a></strong>
</div>
<div class="left-custom-menu-adp-wrap comment-scrollbar">
<nav class="sidebar-nav left-sidebar-menu-pro">
<ul class="metismenu" id="menu1">
<li>
<a title="Landing Page" href="/user_list.html" aria-expanded="false"><span class="educate-icon educate-professor icon-wrap" ></span> <span class="mini-click-non">员工管理</span></a>
</li>
<li>
<a title="Landing Page" href="all-students.html" aria-expanded="false"><span class="educate-icon educate-student icon-wrap" ></span> <span class="mini-click-non">用户管理</span></a>
</li>
<li>
<a title="Landing Page" href="/loginout" aria-expanded="false"><span class="educate-icon educate-professor icon-wrap" ></span> <span class="mini-click-non">注销</span></a>
</li>
</ul>
</nav>
</div>
</nav>
</div>
</html>
复用代码
使用的属性是th:replace 语法是~{ }
<div th:replace="~{commons/common::nav_1}"></div>
thymeleaf的实际应用
if三元关系表达式的使用
根据数据判断性别,进行相应的回显
<td th:text="${li.getSex()==0?'女':'男'}" />
#dates的使用
为日期类规定格式进行回显
<td th:text="${#dates.format(li.getBirth(),'yyyy-MM-dd')}" width="230px"/>
th:href 带有参数的形式
转发的同时,还要把id传过去
<a th:href="@{/update.html(id=${li.getId()})}" class="btn btn-sm btn-primary">编辑</a>
访问的路径是:http://localhost:8080/update.html?id=1001
springboot 404页面的设置
- 在templates文件夹下创建error文件
- 在该文件夹内添加404.html
完成这两步就可以,springboot就会自动配置了
运行效果图
用户注销
原理:清空session
@GetMapping("/loginout")
public String logout(HttpSession session){
session.invalidate();
return "redirect:/index.html";
}
表单:日期数据上传
使用html原生方式
<input type="date" name="birth"/>
提交表单后,后台获取数据,需要使用注解进行日期格式的转换
@Data @AllArgsConstructor @NoArgsConstructor
public class staff {
private Integer id;
private String name;
private String email;
private Integer sex;
private department department;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birth;
}