From e0af08ebddc35cca0ac2fe401ffa415a00b9eb72 Mon Sep 17 00:00:00 2001 From: kdjj2006 Date: Mon, 24 Oct 2022 18:00:30 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86badsmel?= =?UTF-8?q?l:=E5=8C=85=E6=8B=AC=E7=A9=BA=E6=8C=87=E9=92=88=E9=A3=8E?= =?UTF-8?q?=E9=99=A9=E4=BB=A5=E5=8F=8A=E5=A4=9A=E6=AC=A1=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=8F=98=E9=87=8F=E7=9A=84=E6=8F=90=E5=8F=96=20(#772)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 获取验证码逻辑,无需加锁,不涉及线程安全问题,提高效率 * 自定义生成策略时,Map容量设置不准确,会导致无必要的扩容 * 优化badsmell:包括空指针以及多次使用变量的提取 * 修改优化部分badsmeall --- .../service/impl/GeneratorServiceImpl.java | 7 +++--- .../system/service/impl/MenuServiceImpl.java | 24 +++++++++++-------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 43255dfa..0341b115 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -59,6 +59,7 @@ public class GeneratorServiceImpl implements GeneratorService { private final ColumnInfoRepository columnInfoRepository; + private final String CONFIG_MESSAGE = "请先配置生成器"; @Override public Object getTables() { // 使用预编译防止sql注入 @@ -169,7 +170,7 @@ public class GeneratorServiceImpl implements GeneratorService { @Override public void generator(GenConfig genConfig, List columns) { if (genConfig.getId() == null) { - throw new BadRequestException("请先配置生成器"); + throw new BadRequestException(CONFIG_MESSAGE); } try { GenUtil.generatorCode(columns, genConfig); @@ -182,7 +183,7 @@ public class GeneratorServiceImpl implements GeneratorService { @Override public ResponseEntity preview(GenConfig genConfig, List columns) { if (genConfig.getId() == null) { - throw new BadRequestException("请先配置生成器"); + throw new BadRequestException(CONFIG_MESSAGE); } List> genList = GenUtil.preview(columns, genConfig); return new ResponseEntity<>(genList, HttpStatus.OK); @@ -191,7 +192,7 @@ public class GeneratorServiceImpl implements GeneratorService { @Override public void download(GenConfig genConfig, List columns, HttpServletRequest request, HttpServletResponse response) { if (genConfig.getId() == null) { - throw new BadRequestException("请先配置生成器"); + throw new BadRequestException(CONFIG_MESSAGE); } try { File file = new File(GenUtil.download(columns, genConfig)); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index c1bc4d1f..ca8297e7 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -59,6 +59,12 @@ public class MenuServiceImpl implements MenuService { private final RoleService roleService; private final RedisUtils redisUtils; + private static final String HTTP_PRE = "http://"; + private static final String HTTPS_PRE = "https://"; + private static final String YES_STR = "是"; + private static final String NO_STR = "否"; + private static final String BAD_REQUEST = "外链必须以http://或者https://开头"; + @Override public List queryAll(MenuQueryCriteria criteria, Boolean isQuery) throws Exception { Sort sort = Sort.by(Sort.Direction.ASC, "menuSort"); @@ -114,13 +120,12 @@ public class MenuServiceImpl implements MenuService { throw new EntityExistException(Menu.class,"componentName",resources.getComponentName()); } } - if(resources.getPid().equals(0L)){ + if (Long.valueOf(0L).equals(resources.getPid())) { resources.setPid(null); } if(resources.getIFrame()){ - String http = "http://", https = "https://"; - if (!(resources.getPath().toLowerCase().startsWith(http)||resources.getPath().toLowerCase().startsWith(https))) { - throw new BadRequestException("外链必须以http://或者https://开头"); + if (!(resources.getPath().toLowerCase().startsWith(HTTP_PRE)||resources.getPath().toLowerCase().startsWith(HTTPS_PRE))) { + throw new BadRequestException(BAD_REQUEST); } } menuRepository.save(resources); @@ -140,9 +145,8 @@ public class MenuServiceImpl implements MenuService { ValidationUtil.isNull(menu.getId(),"Permission","id",resources.getId()); if(resources.getIFrame()){ - String http = "http://", https = "https://"; - if (!(resources.getPath().toLowerCase().startsWith(http)||resources.getPath().toLowerCase().startsWith(https))) { - throw new BadRequestException("外链必须以http://或者https://开头"); + if (!(resources.getPath().toLowerCase().startsWith(HTTP_PRE)||resources.getPath().toLowerCase().startsWith(HTTPS_PRE))) { + throw new BadRequestException(BAD_REQUEST); } } Menu menu1 = menuRepository.findByTitle(resources.getTitle()); @@ -322,9 +326,9 @@ public class MenuServiceImpl implements MenuService { map.put("菜单标题", menuDTO.getTitle()); map.put("菜单类型", menuDTO.getType() == null ? "目录" : menuDTO.getType() == 1 ? "菜单" : "按钮"); map.put("权限标识", menuDTO.getPermission()); - map.put("外链菜单", menuDTO.getIFrame() ? "是" : "否"); - map.put("菜单可见", menuDTO.getHidden() ? "否" : "是"); - map.put("是否缓存", menuDTO.getCache() ? "是" : "否"); + map.put("外链菜单", menuDTO.getIFrame() ? YES_STR : NO_STR); + map.put("菜单可见", menuDTO.getHidden() ? NO_STR : YES_STR); + map.put("是否缓存", menuDTO.getCache() ? YES_STR : NO_STR); map.put("创建日期", menuDTO.getCreateTime()); list.add(map); } From 7a7fb53ea71ab54aea7e7d4a0432832bd7cf54ab Mon Sep 17 00:00:00 2001 From: jiandan217 <1351066935@qq.com> Date: Mon, 24 Oct 2022 18:01:35 +0800 Subject: [PATCH 2/4] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=95=B0=E6=8D=AE=E9=AA=8C=E8=AF=81=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=20message=20(#771)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exception/handler/GlobalExceptionHandler.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 56d73f7d..23cbb383 100644 --- a/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -23,10 +23,11 @@ import me.zhengjie.utils.ThrowableUtil; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.validation.FieldError; +import org.springframework.validation.ObjectError; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; -import java.util.Objects; import static org.springframework.http.HttpStatus.*; /** @@ -95,11 +96,10 @@ public class GlobalExceptionHandler { public ResponseEntity handleMethodArgumentNotValidException(MethodArgumentNotValidException e){ // 打印堆栈信息 log.error(ThrowableUtil.getStackTrace(e)); - String[] str = Objects.requireNonNull(e.getBindingResult().getAllErrors().get(0).getCodes())[1].split("\\."); - String message = e.getBindingResult().getAllErrors().get(0).getDefaultMessage(); - String msg = "不能为空"; - if(msg.equals(message)){ - message = str[1] + ":" + message; + ObjectError objectError = e.getBindingResult().getAllErrors().get(0); + String message = objectError.getDefaultMessage(); + if (objectError instanceof FieldError) { + message = ((FieldError) objectError).getField() + ": " + message; } return buildResponseEntity(ApiError.error(message)); } From a330519f6af7d323c164150c75aa5060d5f216e7 Mon Sep 17 00:00:00 2001 From: bearBoy80 <61624754+bearBoy80@users.noreply.github.com> Date: Mon, 24 Oct 2022 18:03:17 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BC=98=E5=8C=96tomcat=E9=85=8D=E7=BD=AEr?= =?UTF-8?q?elaxedQueryChars=E6=96=B9=E5=BC=8F,=E9=87=87=E7=94=A8TomcatConn?= =?UTF-8?q?ectorCustomizer=E6=9D=A5=E5=AE=9E=E7=8E=B0=20(#764)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create RelaxedQueryCharsConnectorCustomizer * delete tomcat relaxedQueryChars code * 优化tomcat配置relaxedQueryChars方式 --- .../src/main/java/me/zhengjie/AppRun.java | 7 ------- .../config/RelaxedQueryCharsConnectorCustomizer | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 7 deletions(-) create mode 100644 eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer diff --git a/eladmin-system/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java index f16bf975..fa4d67ff 100644 --- a/eladmin-system/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -56,13 +56,6 @@ public class AppRun { return new SpringContextHolder(); } - @Bean - public ServletWebServerFactory webServerFactory() { - TomcatServletWebServerFactory fa = new TomcatServletWebServerFactory(); - fa.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}")); - return fa; - } - /** * 访问首页提示 * diff --git a/eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer b/eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer new file mode 100644 index 00000000..2ca2ad47 --- /dev/null +++ b/eladmin-system/src/main/java/me/zhengjie/config/RelaxedQueryCharsConnectorCustomizer @@ -0,0 +1,16 @@ +package me.zhengjie.config; + +import org.apache.catalina.connector.Connector; +import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; +import org.springframework.context.annotation.Configuration; + +/** + * @author bearBoy80 + */ +@Configuration(proxyBeanMethods = false) +public class RelaxedQueryCharsConnectorCustomizer implements TomcatConnectorCustomizer { + @Override + public void customize(Connector connector) { + connector.setProperty("relaxedQueryChars", "[]{}"); + } +} From f3cdf8ccfced849f902f58ac95c8b0bb48d68cb4 Mon Sep 17 00:00:00 2001 From: Zheng Jie <201507802@qq.com> Date: Mon, 24 Oct 2022 18:17:35 +0800 Subject: [PATCH 4/4] update org.apache.commons version --- pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pom.xml b/pom.xml index 7dc9a3c6..18068474 100644 --- a/pom.xml +++ b/pom.xml @@ -185,6 +185,12 @@ 1.6.2 + + org.apache.commons + commons-text + 1.10.0 + + nl.basjes.parse.useragent