#### 踩过的坑:
Ctrl + alt + L:列编辑(不好使(不要放手Ctrl+alt))::::alt+加拉取(在源码模式下)
typora的偏好设置里面竟然有恢复之前未保存的文件,太强了,粉了!!!
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-tomcatartifactId>
<scope>providedscope>
dependency>
如果将SpringBoot工程打成war包,放到外部Tomcat中去运行需要做如下配置:
<ol>
<li>将pom打包格式改成warli>
<li>将spring-boot-starter-tomcat依赖配置成providedli>
<li>启动类做如下修改li>
ol>
在SpringBoot中,默认配置的/**映射到/static。
静态资源映射还有一个配置选项,为了简单这里用.properties方式书写:spring.mvc.static-path-pattern=/** # Path pattern used for static
resources.这个配置会影响默认的/**,例如修改为/static/**后,只能映射如/static/js/sample.js这样的请求(修改前是/js/sample.js)。这个配置只能写一个值,不像大多数可以配置多个用逗号隔开的。
在application.yml文件中严格按照层级结构(按照idea的提示)来书写也不会出错!
模板引擎(springBoot中用来取参)
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-thymeleafartifactId>
dependency>
。。。
打包部署:
jar包
SpringBoot官方建议通过SpringBoot提供的打包插件将项目打包成一个可执行的jar包(在这个jar包里面已经内置了Tomcat,可以直接当一个web跑),方便部署和管理。
添加编译插件(通过start.spring.io创建的工程默认就有)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<packaging>jarpackaging>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<configuration>
<fork>truefork>
configuration>
plugin>
plugins>
build>
project>
然后直接通过
$ mvn clean package
$ java -jar target/mymodule-0.0.1-SNAPSHOT.jar
注意, 如果你使用了src/main/webapp目录,打成jar包会忽略掉该目录下的所有文件,这种情况下只能选择打war包的方式
war包
主要分为两步
示例配置:
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<packaging>warpackaging>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-tomcatartifactId>
<scope>providedscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>jstlartifactId>
dependency>
<dependency>
<groupId>org.apache.tomcat.embedgroupId>
<artifactId>tomcat-embed-jasperartifactId>
<scope>providedscope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-surefire-pluginartifactId>
<configuration>
<useSystemClassLoader>falseuseSystemClassLoader>
configuration>
plugin>
plugins>
build>
project>
创建 ServletInitializer.java,继承 SpringBootServletInitializer ,覆盖 configure(),把启动类 Application 注册进去。外部 Web 应用服务器构建 Web Application Context 的时候,会把启动类添加进去。
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
}
Mybatis逆向工程插件模板
generatorConfig.xml的配置文件之前已有上传。。
//他需要有个编译时的mysql——springboot内部的是scope是runtime
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>8.0.18version>
dependency>
<plugin>
<groupId>org.mybatis.generatorgroupId>
<artifactId>mybatis-generator-maven-pluginartifactId>
<version>1.3.7version>
<executions>
<execution>
<id>Generate MyBatis Artifactsid>
<goals>
<goal>generategoal>
goals>
execution>
executions>
<configuration>
<configurationFile>${basedir}/src/main/resources/mybatis/generatorConfig.xmlconfigurationFile>
<includeCompileDependencies>trueincludeCompileDependencies>
<overwrite>trueoverwrite>
configuration>
plugin>
配置pom.xml以及生成Mybatis逆向工程
标识启动类
application.yml配置填写
开始需求书写(层级就可以开始了)
SpringBoot官方建议我们使用Thymeleaf模板引擎取代JSP视图,如果我们就想使用JSP怎么办呢?可以,做好下面几步配置就可以了
...
war
...
org.apache.tomcat.embed
tomcat-embed-jasper
spring:
mvc:
view:
prefix: /WEB-INF/ #配置JSP文件前缀
suffix: .jsp #配置JSP页面后缀
注:
1、jsp页面必须放到webapp目录或webapp/WEB-INF/下
2、如果使用了jsp作为视图,则工程只能打成war包部署(因为jar包不会将webapp目录下的东西打进去)
mybatis: mapper-locations: classpath:/mybatis/mappers/*.xml
config-location:
在application.properties配置文件增加以下配置:
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
spring.jackson.time-zone=GMT+8
#之前的做法是在bean类的date属性上添加注解@JSONFormat("yyyy-MM-dd HH:mm:ss")
#dates.format()
用来格式化日期时间
${#dates.format(date, 'dd/MMM/yyyy HH:mm')}
${#dates.arrayFormat(datesArray, 'dd/MMM/yyyy HH:mm')}
${#dates.listFormat(datesList, 'dd/MMM/yyyy HH:mm')}
${#dates.setFormat(datesSet, 'dd/MMM/yyyy HH:mm')}
<!--强势——>
<td th:text="${#dates.format(book.publish, 'yyyy-MM-dd HH:mm')}">td>
@InitBinder
用于在@Controller
中标注于方法,表示为当前控制器注册一个属性编辑器或者其他,只对当前的Controller有效。而@Controller必须显式的存在Date类@InitBinderpublic void initBinder(ServletRequestDataBinder binder) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); binder.registerCustomEditor(Date.class, new CustomDateEditor(sdf, true));
}
/**
* 全局handler前日期统一处理
* @author zhanghang
* @date 2018/1/11
*/
@Component
public class DateConverterConfig implements Converter<String, Date> {
private static final List<String> formarts = new ArrayList<>(4);
static{
formarts.add("yyyy-MM");
formarts.add("yyyy-MM-dd");
formarts.add("yyyy-MM-dd hh:mm");
formarts.add("yyyy-MM-dd hh:mm:ss");
}
@Override
public Date convert(String source) {
String value = source.trim();
if ("".equals(value)) {
return null;
}
if(source.matches("^\\d{4}-\\d{1,2}$")){
return parseDate(source, formarts.get(0));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
return parseDate(source, formarts.get(1));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(2));
}else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
return parseDate(source, formarts.get(3));
}else {
throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
}
}
/**
* 格式化日期
* @param dateStr String 字符型日期
* @param format String 格式
* @return Date 日期
*/
public Date parseDate(String dateStr, String format) {
Date date=null;
try {
DateFormat dateFormat = new SimpleDateFormat(format);
date = dateFormat.parse(dateStr);
} catch (Exception e) {
}
return date;
}
}
//还没有验证对错、、、、、、、
layUI中的表格cols[[
{}
]]和thymeleaf中的内联表达式冲突需要这样书写,简单改变下冲突cols[
[{
}]
]
banner文件
/*SpringApplication.run(SpringbootSsmApplication.class, args);*/
//对比
//关闭banner
SpringApplicationBuilder sub
= new SpringApplicationBuilder(SpringbootSsmApplication.class);
sub.bannerMode(Banner.Mode.OFF).run(args);
table, tr, td, th {
/*用来决定表格的边框是分开的还是合并的:collapse、separate*/
border-collapse: separate;
}
/*在HTML中,标签没有结束标签。rel属性用于定义当前文档与被链接文档之间的关系。*/
"stylesheet" href="/static/css/table_y.css">
注释:外部文件不能包含