SpringBoot-4. thymeleaf+jpa实现增删改查与登录验证

实例主要运用thymeleaf与jpa,实现数据的增删改查的功能,并进一步添加了登录功能(实现拦截器与视图解析的基本配置)jpa为我们提供便捷数据库操作,简化开发难度,thymeleaf实现前端数据渲染。

资源地址:https://github.com/zyz-1998/project/tree/master/jpaThymeleafTest
个人博客:https://zyz-1998.github.io

一、实例简介

实体类(domain)定义实体,数据访问层(Dao)实现对数据库的操作,数据服务层(Service)定义各种服务接口,数据服务的实现(serviceImpl)定义数据服务层的具体实现,控制层(Controller)响应请求
配置信息类(configure)实现诸如拦截器、视图解析的配置。
目录结构
目录结构
部分效果
登录
列表


### 二. Thymeleaf

Thymeleaf是服务器端的一种Java模板引擎

优点:静态html嵌入标签属性,浏览器可以直接打开模板文件,便于前后端联调

2.1 导入thymeleaf依赖
<dependency>    pId>org.springframework.boot</groupId>    
	<artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
2.2 引入命名空间
 <html lang="en" xmlns:th="http://www.thymeleaf.org">
2.3 th属性
功能标签功能和jsp对比
1Fragment inclusionth:insert th:replaceinclude(片段包含)
2Fragment iterationth:eachc:forEach(遍历)
3Conditional evaluationth:if th:unless th:switch th:casec:if(条件判断)
4Local variable definitionth:object th:withc:set(声明变量)
5General attribute modificationth:attr th:attrprepend th:attrappend属性修改支持前面和后面追加内容
6Specific attribute modificationth:value th:href th:src …修改任意属性值
7Text (tag body modification)th:text th:utext修改标签体内容utext:不转义字符

大标题

8Fragment specificationth:fragment声明片段
9Fragment removalth:remove删除模板片段
2.4 标准表达式语法

${…}` 变量表达式,Variable Expressions

@{...} 链接表达式,Link URL Expressions

#{...} 消息表达式,Message Expressions

~{...} 代码块表达式,Fragment Expressions

*{...} 选择变量表达式,Selection Variable Expressions

三. jpa

Jpa (Java Persistence API) 是 Sun 官方提出的 Java 持久化规范。

Spring Boot Jpa 是 Spring 基于 ORM 框架、Jpa 规范的基础上封装的一套 Jpa 应用框架,可使开发者用极简的代码即可实现对数据的访问和操作。让我们解脱了 DAO 层的操作,基本上所有 CRUD 都可以依赖于它来实现

当我们需要定义自己的Repository的时候,我们可以继承JpaRepository,从而获得Spring为我们预先定义的多种基本数据操作方法。

pom.xml导入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>   
	<groupId>mysql</groupId>   
	<artifactId>mysql-connector-java</artifactId>   
	<scope>runtime</scope>
</dependency>

application.properties配置

#jdbc
spring.datasource.url=jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf-8&&serverTimezone=UTC&useSSL=true
spring.datasource.username=root
spring.datasource.password=zyz98
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#jpa
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show.sql=true
#禁用thymeleaf缓存
spring.thymeleaf.cache=false

四. 登录拦截器配置

定义LoginHandlerInterceptor类实现HandlerInterceptor接口方法,preHandle()请求处理前执行操作

public class LoginHandlerInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        Object user = request.getSession().getAttribute("loginUser");
        if(user!=null)
            return true;
        request.setAttribute("loginMsg","没权限请先登录");
        request.getRequestDispatcher("/login").forward(request,response);
        return false;
    }
}

在configure层MyConfigure类中添加登录拦截器

@Configuration
public class MyConfigure implements WebMvcConfigurer {
    @Override
    public void addViewControllers(ViewControllerRegistry registry){
        registry.addViewController("/").setViewName("/user/login");
        registry.addViewController("/login").setViewName("/user/login");
    }
    //添加拦截器
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/","/login","/userLogin");
    }
}

参考链接:

http://www.ityouknow.com/springboot/2017/09/23/spring-boot-jpa-thymeleaf-curd.html

https://www.cnblogs.com/songxingzhu/p/9597927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值