在处理完基本的部署后,SpringBoot已经可以实现将数据库数据回传到前端以JSON形式展示,但是SpringBoot要进行前端页面的跳转呢,在非前后端分离的项目中,页面跳转是交给后端来发布命令的,因此,我们一般是通过Thymeleaf框架与frameWorker框架两个执行使用,无论是springmvc或者SpringBoot都是样的处理方式!
1-----SpringBoot热部署:
SpingBoot不仅是对SpringMvc进行高度封装,其本身也对Tomcat进行了封装,实现了一键启动和关闭的作用,但是对于开发中我们的频繁修改代码,每次都要进行重启,这明显是很不友好的 ,因此SpringBoot的热部署插件出现了!
1.添加依赖
分别添加依赖和插件
POM文件依赖包:
org.springframework.boot
spring-boot-devtools
true
Plugin插件包:
org.springframework.boot
spring-boot-maven-plugin
true
true
2.进行IDEA的设置
当部署完成后,需要启动IDEA的权限,使得它允许被程序调用.
---------File-Settings-Compiler-Build Project automatically或者直接搜索compiler
-------注册按钮的启动:
对于2017.2.15版本或已经被中文版本化的IDEA版本,可能会出现命令1失效,如果失效请使用第二条命令:
命令1:请看第二条
命令2:ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running
3.实现效果:
效果1:修改类或者配置文件,应用会进行重启
效果2:修改静态页面,在thymeleaf已经被配置为cache缓存为false的情况下,应用会被重载(不是重启)
2--------配置Thyemleaf页面跳转
1 .添加依赖
SpringBoot支持想前端传递json数据,但是对于页面跳转则需要另外的设置以保证其能加载和识别HTML,追加依赖如下:
POM文件中依赖如下:
org.springframework.boot
spring-boot-starter-thymeleaf
2 .页面使用
步骤1:在resources文件夹里面设置templates模块,设置如下:
步骤2:进行application.yml文件的节点配置-->设置通用的必须参数
步骤3:关闭服务器的缓存:
步骤4:代码如何写
在后端通常采用如下:
前端一般这么用:
此处的js和bootstarp和validator都是在后端的resources配置好的,其语法网络上已经上五花八门的介绍,这里便不再多说,可自行搜索thymeleaf页面语法!
登录
3------Redis的部署
1.追加依赖
新增Redis的依赖,用于与SpringBoot整合
org.springframework.boot
spring-boot-starter-redis
1.4.5.RELEASE
redis.clients
jedis
2.9.0
格式化存储:
com.alibaba
fastjson
1.2.38
2.配置
需要增加配置类与依赖类将数据从,application.yml中读取出来
步骤1:application.yml文件的配置
步骤2:添加依赖类并通过注解将数据给动态加载
步骤3:配置注册Redis的JedisPoolConfig工厂类,本贴图为最基本配置
步骤4:基本参数设置,调用工厂类并设置通过方法
注意:该类就是获取jedis的连接并利用对该连接进行封装,然后通过注解@Service被加载到容器中,在其他类中以注解形式被调用
封装的方法被使用:
4-----JSR303验证框架
JSR303框架提供的是一套通过注解代理高高频校验参数的合法性的框架,可以在一定程度上简化代码并减少业务入侵!并简化开发,此外JSR303还提供一套自定义的校验注解方法,用户可以根据自己的需要在自定义适合自己的注解!在开发中。在开发中为了防止过多的注解,导致代码可读性太差,我们一般使用选择将代码封装在一个工具类!
1.追加依赖:
POM文件依赖:
org.springframework.boot
spring-boot-starter-validation
2.注解的想使用
类使用方法1:对于参数的校验,主要是来自于前端回传回来的参数与后端回传出去,接口传递出去的数据,因此我们可以在vo类中进行设置!
类使用方法2:当框架自身提供的注解不满足我们的需求或者不满足我们的逻辑,这个时候可以选择自定义注解,如下:
步骤1:创建 @Interface接口类 。寻找框架提供注解并获取其注解接口类的统一标记语言,维护到自己的@Interface接口上
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
@Constraint(validatedBy = {IsMobileValidator.class })//表示调用的自定义校验器
public @interface IsMobile {
boolean required() default true;//必备的字段信息,表示必传,当前默认为空
String message() default "手机号码格式错误";//表示错误时候的信息
Class>[] groups() default { };
Class extends Payload>[] payload() default { };
}
步骤2:创建注解实现类
//自定义的数值校验器
public class IsMobileValidator implements ConstraintValidator {
//实现Constrain参数
private boolean required = false;//是否必填
//获取刚刚定义器里面的required是否允许为空,注解
public void initialize(IsMobile constraintAnnotation) {
required = constraintAnnotation.required();
}
public boolean isValid(String value, ConstraintValidatorContext context) {
if(required) {
return ValidatorUtil.isMobile(value);
}else {//非必填,判断为空则true
if(StringUtils.isEmpty(value)) {
return true;
}else {//有数据则判断规则
return ValidatorUtil.isMobile(value);
}
}
}
}
当字段回传归来,则可以在vo类里面使用该注解进行注解
步骤3:ValidUtils的内容如下:
public class ValidatorUtil {
private static final Pattern mobile_pattern = Pattern.compile("1\\d{10}");//正则表达式
//手机校验
public static boolean isMobile(String src) {
if(StringUtils.isEmpty(src)) {
return false;
}
Matcher m = mobile_pattern.matcher(src);
return m.matches();
}
// public static void main(String[] args) {
// System.out.println(isMobile("18912341234"));
// System.out.println(isMobile("1891234123"));
// }
}
该工具类可以用于后期,各类参数校验与封装,适用于将对参数的各类校验给统一放置起来,在不同场景下使用~~~~~~~~~