SpringBoot:web项目的细节

目录

DAO层模拟数据库

设置拦截器

前端代码的抽取复用

thymeleaf的实际应用

if三元关系表达式的使用

#dates的使用

th:href 带有参数的形式

springboot 404页面的设置

用户注销

表单:日期数据上传


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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值