idea中的文件最好别随意移动
到别的文件夹中,最好是复制
到文件夹中,否则会有别的目录中的文件引用这个文件的东西的话,会全部改掉相关东西,导致崩盘!!!
Thymeleaf模板中,html如何获取session中的值
后台控制器中代码:
1 | request.getSession().setAttribute("uname", "lijing"); |
前端页面中代码:
1 |
|
Springboot2.3中文乱码解决
Springboot1.x解决http请求中文乱码的方法网上很常见,一搜一大堆,大概就是以下三步骤:
1 | UTF-8 = |
奈何,我使用的开发的Springboot版本为2.X,这类注解已经被标注过期了。那怎么解决呢?
翻看springboot的官方文档,毕竟相信权威嘛。
访问地址:Springboot官方文档
打开首页,通过encoding关键字全文搜索,可知springboot使用了新的配置方式:
1 | UTF-8 = |
SpringBoot项目实现热部署的配置方法
什么是SpringBoot热部署?
SpringBoot热部署就是在项目正在运行的时候修改代码, 却不需要重新启动项目。
有了SpringBoot热部署后大大提高了开发效率,因为频繁的重启项目,势必会浪费很多时间, 有了热部署后,妈妈再也不用担心我修改代码重启项目了。
SpringBoot热部署的流程
pom文件中导入 spring-boot-devtools
依赖:
(或者创建springboot工程时,勾选devtools选项,会自动在pom中加入依赖)
1 | <!--SpringBoot热部署配置 --> |
继续在pom.xml中添加插件:
1 | <build> |
设置application.properties
1 | #配置项目热部署 |
在idea中设置自动编译
1.打开Settings,设置当前项目自动编译,搜索Compiler,勾选Build project automatically
2.打开Other Settings ,设置新建的项目都自动编译,搜索Compliler,勾选Build project automatically
3.按住ctrl + shift + alt + /,出现如下图所示界面,点击Registry…
4.点击进入后,勾选compiler.automake.allow.when.app.running后关闭即可
通过以上步骤,就完成了SpringBoot项目的热部署功能!!!
springboot项目中无法直接访问templates下的html文件的解决方法
解决方案是在appliation.properties下添加
1 | #表明静态资源的位置,默认值是classpath:/static/ |
表明静态资源的位置,即可直接访问。
因为默认情况下,浏览器可以通过url访问springboot的静态资源(static中的文件),访问不到templates中的html。
如果将静态资源目录指定为templates,就可以访问了。
也可以将templates
中的html文件移到static
目录下,这样就可以直接访问html文件了。
不建议这样做,不应该让浏览器直接访问到html文件。
而是通过控制器跳转访问。
thymeleaf疑问
今天在学习thymeleaf的时候,对resources文件夹下的几个子文件夹产生了一些疑问(static、templates),最后通过验证,发现在外部浏览器中只能访问到static文件夹下的资源(static意味静态的),而templates模板文件夹下的文件不可直接被访问,如html等。
templates文件夹下的文件(不,应该是除static以外的文件夹下的文件)都是通过视图解析器访问的,springboot默认static文件夹之外的页面需要通过controller访问(好像是websecurity权限控制)
总结:springboot项目,static文件夹下的静态资源可以直接通过url访问
,而templates文件夹下的文件只能通过视图解析器访问
,除非手动指定静态资源的位置。
Vue引入jquery和bootstrap
安装bootstarp之前,要先安装jquery:
1 | npm install jquery --save |
安装Bootstrap:
1 | npm install bootstrap --save #(一定要查看bootstrap的版本,到bootstrap官网去查看对应版本用法) |
在main.js中加入:
1 | /*引入jquery以及bootstrap*/ |
编写bootstrap相关代码,看是否成功!
(我这里配置的是vue-cli4.x + bootstrap4.x)
Spring Boot项目中配置favicon&配置favicon无效解决
关闭favicon
在application.properties中设置关闭favicon
1 | #默认为true,高版本此配置已经过期 |
设置自定义favicon
只需要将自己的favicon.ico放在(即项目默认就有的resourses目录)类路径META-INF/resources/下,或类路径resources/下、或类路径static/下,或类路径public/下。
可以在这个网站进行自行制作:favicon制作
添加无效解决
如果添加无效,在浏览器中不显示,就在需要在页面中head标签添加以下代码
我这里是使用了Thymeleaf模板的html:
1 | <head> |
其他页面模板可以使用:
1 | <head> |
我就是这么设置,好像一个页面设置就行了,我访问项目其他页面也有,浏览器貌似有缓存的样子。
Mysql创建create_time跟update_time字段,使其自动存值
创建语句如下:
ALTER TABLE table_name
ADD COLUMN create_time
timestamp NULL DEFAULT CURRENT_TIMESTAMP,
ADD COLUMN update_time
timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER create_time
;
MySQL按日期分组统计(按天统计,按月统计)
以下为您演示MySQL常用的日期分组统计方法:
按月统计(一)
1 | select date_format(create_time, '%Y-%m') mont, count(*) coun |
按天统计(二)
1 | select date_format(create_time, '%Y-%m-%d') dat, count(*) coun |
其他用法
create_time时间戳格式
1 | SELECT FROM_UNIXTIME(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks SELECT FROM_UNIXTIME(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days SELECT FROM_UNIXTIME(create_time,'%Y%m') months,COUNT(id) COUNT FROM role GROUP BY months |
create_time时间格式
1 | SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks SELECT DATE_FORMAT(create_time,'%Y%m%d') days,COUNT(id) COUNT FROM role GROUP BY days SELECT DATE_FORMAT(create_time,'%Y%m') months,COUNT(id) COUNT FROM role GROUP BY months |
mysql数据库操作时报模式(sql_mode)错误解决方法
1 | Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by |
原因:这是数据库的sql_mode设置的有问题。Mysql可以支持不同的SQL模式,不同的SQL模式会有不同的语法,执行不同的数据校验简查。
首先,可以先查看一下数据库现在的sql_mode的值,sql语句为:
1 | select version(), @@sql_mode; |
然后可以使用如下语句,去设置自己需要的sql_mode:
1 | SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY','')); |
jQuery表格排序插件
引用文件
–js:
1 | <script src="js/jquery-1.11.1.min.js"></script> |
–css
1 | <link rel="stylesheet" href="css/jquery.dataTables.css" /> |
代码:
1 | <html> |
如果某一列不需要排序,在标签上加上class=“nosort”
。
thymeleaf格式化日期格式
1 | <td th:text="${#dates.format(fund.netWorthDate,'yyyy-MM-dd')}"></td> |
云服务器dubbo报错解决方法
在做项目时,突然报了:
Caused by: com.alibaba.dubbo.remoting.RemotingException: message can not send, because channel is closed
这样的异常,经过查资料,大概知道了是由于IP引发的,解决方法是重启云服务器。
java中thymeleaf获取项目根路径
1 | <a th:href="${#httpServletRequest.getContextPath()}"></a> |
Thymeleaf 内置对象 之 获取web应用根路径
今天使用Thymeleaf模板引擎想要获取WEB应用根目录,那么thymeleaf中是不是和JSP中一样有request内置对象呢,没错,果然就有,废话不多说,上代码:
1 | <!--getScheme()获取协议,getServerName()获取服务器名,getServerPort()服务器端口,getContextPath() APP根路径--> |
例如写个注册功能:
1 | <script type="text/javascript" th:inline="javascript"> |
按钮点击事件跳转根路径下任意路径:
1 | <script type="text/javascript" th:inline="javascript"> |
表单验证
1 | function testPhone() { |
在表单上加onsubmit时间句柄,实现在表单提交前验证,返回false则不提交。
语法:return 函数名()
1 | <form action="/test/login" method="post" onsubmit="return Login()"> </form> |
springboot 整合shiro无法访问静态资源的问题
最近在学springboot 整合shiro后发现无法访问静态资源
springboot默认把所有的静态资源都映射到static目录了
在使用shiro功能时候,发现静态资源全部被拦截了,所以要配置信息对静态资源进行放行。
在ShiroConfig中添加:
1 | filterChainMap.put("/images/**", "anon");//静态images资源放行 |
这样就可以访问了。
springboot+thymeleaf实现自定义错误页面
在templates目录下新建error目录,在error目录下添加错误页面即可。
报错:ids for this class must be manually assigned before calling save(),解决方法
在实体类的id上加上主键生成策略:
1 | /*主键生成策略*/ (strategy = GenerationType.IDENTITY) |
layui弹窗倒计时
1 | //layer.msg弹窗倒计时 |
PageHelper分页的相关方法
1 | public void test(){ |
thymeleaf添加点击事件
1 | <a id="update" href="" th:onclick="findById([[${fund.id}]])">修改</a> |
springboot集成swagger2
加入依赖:
1 | <!--Swigger2配置--> |
编写swagger2配置文件:
1 | package com.easyfund.springboot.config; |
在sprinboot主配置文件中开启swagger2配置:
1 | #swagger2配置 |
shiro放行swagger2访问页面:
1 | /*swagger2免拦截*/ |
layui表格日期格式化
1 | {field: 'netWorthDate', title: '净值日期', align: 'center', width: 150, sort: true,templet: "<div>{{layui.util.toDateString(d.netWorthDate, 'yyyy-MM-dd HH:mm:ss')}}</div>"} |
layui表格分页显示
https://www.jianshu.com/p/a42820440cfb
1 | 之前在练习layui的时候,遇到表格数据需要分页显示的,总是天真的以为要从数据库中取出全部数据,再在页面进行分页操作,其实应该将分页的代码操作在后台进行实现(其实之前都是在后台操作,只不过刚刚接触layui,天真以为它什么都帮我干了 哈哈)。 |
页面的表格区域:
1 | <table class="layui-hide" id="demo" lay-filter="test"></table> |
layui的表格实例:(主要看limit和page这两个参数的写法)
1 | //执行一个 table 实例 |
后台:controller
1 | //可以把一个集合转为json返回给前端 |
Spring data JPA 控制台打印sql
1 | #控制台打印sql配置 |
layui日期时间选择器
1 | <div class="layui-inline"> |
springboot配置mybatis打印sql语句
1 | #mybatis打印sql语句 |
springboot写入数据库汉字变问号???
用spring boot做的项目,后台向数据库中写入汉字,变成了问号,但是后台确实是向数据库中传递的汉字,数据库也是使用的utf8编码,怎么回事?
检查一下spring boot和数据库中的连接问题:
在application.properties里面的数据库连接中加入:
1 | true&characterEncoding=UTF-8 = |
比方说我的数据库连接加入上面这一行之后变成:
1 | jdbc:mysql://47.94.217.177:3306/easyFund?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8 = |
layui表格添加数据自动刷新
1 | table.reload('LAY-fund-manage'); //数据刷新,LAY-fund-manage为表格的id |
layui批量获取数据表格中的数据并传到后台进行解析
pom文件加依赖:
1 | <!--通过Json类把json数组解析成集合对象--> |
前端ajax请求(array是一个数组对象):
1 | $.ajax({ |
后台代码(举例):
1 | /*批量删除基金信息*/ |
thymeleaf模板引擎templates目录中的html文件引入static目录中的静态样式
1 | <!--第一种方式,使用thymeleaf标签--> |
阿里云实现实名认证
pom文件导入依赖:
1 | <!--通过Json类把json数组解析成集合对象--> |
具体实现类:
1 | package com.easyfund.springboot.util; |
工具类HttpUtils:
1 | package com.easyfund.springboot.util; |
返回数据格式:
1 | { |
使用LayUI进行文件上传(带预览功能)
参考文章:使用LayUI进行文件上传(带预览功能)
1、添加LayUI上传组件需要的js文件
1 | jquery.min.js、layui.all.js、layer.js |
2、导入上传组件jar包
1 | commons-fileupload、commons-io |
3、在spring配置文件中限制上传文件的大小,否则会报错
1 | <!-- 设置上传文件最大值 1M=1*1024*1024(B)=1048576 bytes --> |
4、前端页面代码
1 | <div class="layui-upload"> |
5、js代码
1 | <script type="text/javascript"> |
6、后台java代码
1 | /** |
7、工具类
WebUpload.java类:
1 | import org.springframework.web.multipart.MultipartFile; |
WebUploadResult.java类:
1 | /** |
WebUploadError.java类:
1 | /** |
注意:
在普通文件上传中,我们都是用:
1 | <input type="file" name="file"> |
这样来控制上传的。
在LayUI上传组件中,实际上也是用这种方式来实现的:
1 | <input class="layui-upload-file" type="file" name="file"> |
ajax取消异步请求
1 | $.ajax({ |