Java
Bruce_Json
这个作者很懒,什么都没留下…
展开
-
security中登录信息在session中的操作
一、共享用户权限信息首先每个请求过来都就会去判断是否需要做session共享信息如果需要session共享用户信息,如果需要就用Attribute做共享key为SPRING_SECURITY_CONTEXT二、获取用户权限信息每个请求都会先去走loadContext来获取权限如果系统做了session持久化,那么当系统重启后,用户请求过来会自动去session中获取用户权限具体实现就是从之前共享到session中的信息获取三、退出登录使session失效...原创 2021-09-10 14:01:00 · 1410 阅读 · 0 评论 -
tomcat中session流程分析
入口在request中的doGetSession每个请求都会由findSession根据sessionId获取session ,没有session就创建session,有就调用 isValid 验证session是否过期首次进入会调用createSession方法创建一个sessoin存储到session容器中session容器就是个map,session创建完成后添加到容器中创建session方法,控制session超时时间变量即maxInactiveIn...原创 2021-09-02 14:32:54 · 437 阅读 · 0 评论 -
前后端AES加解密
后端加解密工具类import org.apache.commons.codec.binary.Base64;import org.apache.commons.codec.binary.Hex;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.spec.SecretKeySpec;import java.nio.chars原创 2021-07-02 14:12:58 · 726 阅读 · 0 评论 -
aop结合redis执行lua脚本来控制接口限流
依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <dependency> <groupId>org.springframework.boot&原创 2021-06-29 17:51:37 · 279 阅读 · 1 评论 -
替换jar文件中的class
首先查看要替换文件的路径,用 * 代替 .class 可查看是否包含内部类jar -tvf xx.jar | grep xx*一、无内部类无内部类可以指定替换某个class1、解压指定文件,路径为上一步得到的路径jar -xvf xx.jar xx/xx.class2、在解压的文件夹中手动替换xx.class文件3、将替换后的class文件,压缩进jar包...原创 2020-12-29 11:19:51 · 1207 阅读 · 0 评论 -
自定义 @CurrentUser 获取当前登录用户
1、使用到的两个枚举ElementType枚举:TYPE //接口、类、枚举.FIELD//字段、枚举的常量METHOD//方法PARAMETER//方法参数CONSTRUCTOR //构造函数LOCAL_VARIABLE//局部变量ANNOTATION_TYPE//注解PACKAGE///包 RetentionPolicy枚举SOURCE //注解在源码是有效,将被编译器丢弃CLASS //注解在编译时有效,但在运行时没有保留。这也...原创 2020-12-28 10:51:26 · 968 阅读 · 0 评论 -
SpringData使用Specification构造复杂查询和多表关联查询,物理分页和逻辑分页
1、关联查询edifice与edificeAdmin 是一对多的关系public class Edifice{ @Id @GeneratedValue private Long id; private String name;}public class EdificeAdmin{ @ManyToOne @JoinColumn(name = "edificeId",insertable=false, updatable=false) .原创 2020-09-07 12:19:06 · 1284 阅读 · 0 评论 -
Caught exception while allowing TestExecutionListener [org.xx.ServletTestExecutionListener@xx]
springboot测试类启动报错2020-08-26 11:38:15.974 [main] ERROR org.springframework.test.context.TestContextManager : Caught exception while allowing TestExecutionListener [org.springframework.test.context.web.ServletTestExecutionListener@2f112965] to pr原创 2020-08-26 11:48:51 · 5922 阅读 · 0 评论 -
发送html模板短信
首先需要注册一个sendcloud账号,免费账号每天可以免费发10封邮件,发邮件需要API_USER,API_KEY,发信域名html模板<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"> <head> <title>邮箱验证</title> <meta http-equiv="Content-Type" content="text/html; chars.原创 2020-08-21 17:55:42 · 823 阅读 · 0 评论 -
http请求封装工具类
import org.apache.*;public class HttpClientHelper { private static final String APPLICATION_X_WWW_FORM_URLENCODED = ContentType.APPLICATION_FORM_URLENCODED.getMimeType(); private static final String APPLICATION_JSON = ContentType.APPLICATION_JS.原创 2020-08-21 17:35:06 · 276 阅读 · 0 评论 -
java打包图片为zip下载
<form method="post" enctype="application/x-www-form-urlencoded" th:action="@{/download}"> <input name="zipName" th:value="${area.name+'二维码'}" /> <th:block th:each="item,stat:${locations}"> <input type="hidden" name="names" th:val.原创 2020-07-23 10:42:17 · 458 阅读 · 0 评论 -
图片验证码获取和验证
工具类@Componentpublic class CaptchaGenerator { // 默认图片宽度 private final int defaultWidth = 90; // 默认图片高度 private final int defaultHeight = 30; // 默认验证码长度 private final int defaultCodeCount = 4; // 默认字体高度 private final .原创 2020-07-20 11:26:09 · 1623 阅读 · 0 评论 -
spring boot整合ehcache
依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId></dependency><dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache<原创 2020-07-15 09:53:29 · 232 阅读 · 0 评论 -
BeanUtils.copyProperties源码解析
private static void copyProperties(Object source, Object target, Class<?> editable, String... ignoreProperties) throws BeansException { Assert.notNull(source, "Source must not be null"); Assert.notNull(target, "Target must not be null"); .原创 2020-07-06 13:36:41 · 438 阅读 · 0 评论 -
表情过滤工具
public class EmojiHelper { /** * 检测是否有emoji字符 * * @param source * @return */ public static boolean containsEmoji(String source) { if (StringUtils.isBlank(source)) { return false; } int .原创 2020-07-02 10:14:12 · 233 阅读 · 0 评论 -
linux环境使用脚本发布springboot应用
一、发布springboot项目步骤:1、进入项目目录,拉取最新代码2、使用mvn打包项目,将打包好的jar复制到运行目录3、进入运行目录,先关闭之前运行的项目,启动项目和追加日志二、脚本实现ver版本号,srcRoot项目目录,components项目名,url运行目录,serviceports端口号if[ -z $string]表示如果string 为空的判断java -Dfile.encoding=UTF-8 -Xms512m -Xmx512m -jar 设置编码和...原创 2020-06-16 21:07:24 · 260 阅读 · 0 评论 -
对省市字段做排列输出到excel文件
ExcelExportHelper工具类博主前面文章里有 public void creteExcel(){ List<ProvinceCity> provinceCities = provinceCityMapper.getAll(); StringBuilder builder = new StringBuilder(); List<String> provinces = provinceCities.stream().原创 2020-06-12 17:19:10 · 235 阅读 · 0 评论 -
反射动态根据字段类型转换并赋值
public static void main(String[] args) throws Exception { String s = "0"; Ref ref = new Ref(); Field[] fields = ref.getClass().getDeclaredFields(); for (Field field : fields) { int modifiers = field.getModi...原创 2020-06-09 21:36:13 · 2933 阅读 · 2 评论 -
excel工具类实现excel表格数据上传读取实现
<div> <form class="hidden" id="downloadTmpExcel" method="post" th:action="@{'/misc/exports/logistics-excel'}"> <input type="hidden" name="exportTitle" value="ID |英文姓名或拼音 |编号" /> <input type="hidden" name="fileName" value="导...原创 2020-06-04 17:33:00 · 397 阅读 · 0 评论 -
json工具类
<groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.7.0</version> </depe...原创 2020-04-09 09:50:16 · 294 阅读 · 0 评论 -
Scheduled定时任务
1、设置定时任务@Configuration //1.主要用于标记配置类,兼备Component的效果。@EnableScheduling // 2.开启定时任务public class SaticScheduleTask { //3.添加定时任务 @Scheduled(cron = "0/5 * * * * ?") //或直接指定时间间隔,例如:...原创 2020-02-11 09:36:09 · 316 阅读 · 0 评论 -
list对数字,字母,中文的排序
使用Collections.sort()方法对于英文字母排序,是先比较首字母,首字母相同比较后面字母。使用Collections.sort()方法对于中文字符进行排序,并不是按照中文拼音的顺序,原因是Collator类执行的是区分语言环境的String比较。可调用Collator的静态方法getInstance()来获取所需语言环境的Collator对象List<Integer&g...原创 2020-01-10 13:06:07 · 3106 阅读 · 0 评论 -
截取两字符间字符串
截取[]间字符: // 匹配规则 String reg = "(?<=\\[).*?(?=\\])"; Pattern pattern = Pattern.compile(reg); for (String s : split) { Matcher matcher = pattern.matche...原创 2019-12-25 15:09:03 · 530 阅读 · 0 评论 -
freemarker生成pdf工具类
依赖: <dependency> <groupId>org.xhtmlrenderer</groupId> <artifactId>flying-saucer-pdf</artifactId> <version>9.1.18</version> </dependency>...原创 2019-12-03 15:32:13 · 342 阅读 · 0 评论 -
word转pdf实现,POIXMLDocumentPart.getPackageRelationship()Lorg...问题,以及NotOfficeXmlFileException...问题
依赖:poi版本太高会报错 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10.1</v...原创 2019-12-01 22:03:28 · 12077 阅读 · 7 评论 -
list.stream().map().collect()
List<Area> areaList = cityIds.stream().map(areaService::getAreaByAreaId).collect(Collectors.toList());将cityIds传入map中循环调接口方法取值,遍历集合原创 2019-05-31 19:54:28 · 5459 阅读 · 0 评论 -
Spring Boot使用asypt加密
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.16</version> </depend...原创 2019-03-21 23:26:19 · 662 阅读 · 0 评论 -
JAVA——笔记
1、.contains()判断是否存在包含关系,返回true 和false,包含的话就返回true,不包含的话就返回false2、获取当前系统时间 Date date = new Date();3、日期格式化类:SimpleDateFormatformat:把日期转换转指定格式的字符串 SimpleDateFormat dateFormat ...原创 2019-01-10 15:13:10 · 127 阅读 · 0 评论 -
java学习笔记——1、修饰符和变量类型
访问修饰符默认的,也称为default,在同一包内可见,不使用任何修饰符。 私有的,以private修饰符指定,在同一类内可见。 共有的,以public修饰符指定,对所有类可见。 受保护的,以protected修饰符指定,对同一包内的类和所有子类可见。非访问修饰符final修饰符当修饰方法时,被final修饰的方法称为最终方法,不能重写 当修饰类时,被final修饰的类是最终...原创 2018-10-29 22:53:49 · 244 阅读 · 0 评论 -
使用JDK动态代理实现拦截器
实现拦截器我们需要三个步骤:编写接口——实现接口——JDK动态代理中添加拦截器编写接口package com.intercept;import java.lang.reflect.Method;public interface Interceptor { /** * 真实对象前调用 * @param proxy 代理对象 * @param target 真实对象...原创 2018-09-05 00:07:32 · 524 阅读 · 0 评论 -
实现JDK动态代理和CGLIB动态代理
JDK动态代理jdk动态代理需要借助接口才能产生代理对象步骤:实现接口——代理对象和真实对象建立代理关系——实现代理对象的代理逻辑方法建立代理关系:主要通过bind方法完成Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);实现代...原创 2018-09-05 00:00:09 · 176 阅读 · 0 评论 -
反射构建对象
在java中,反射是通过包java.lang.reflect.*来实现的无参反射对象主要代码,这里是给类加载器注册一个类ReflectServiceImpl的全限定名,然后通过newInstance方法初始化一个类对象object = (ReflectServiceImpl) Class.forName("com.impl.ReflectServiceImpl").newInstance...原创 2018-09-04 19:59:56 · 266 阅读 · 0 评论 -
Java获取系统时间的四种方法和date与string转换
1、通过Date类来获取当前时间 Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println(df.format(day)); 2、通过System类中的currentTimeMillis方法来获取当前时间S...转载 2018-08-14 23:27:04 · 556 阅读 · 0 评论