From 577701a313e21448467558b0a507bb7196415674 Mon Sep 17 00:00:00 2001 From: 13693261870 <252740454@qq.com> Date: 星期二, 16 七月 2024 14:14:33 +0800 Subject: [PATCH] 添加参数验证 --- src/main/java/com/se/simu/helper/WebHelper.java | 13 ++++ src/main/java/com/se/simu/controller/WaterController.java | 97 ++++++++++++++++++++++++++++--- src/main/java/com/se/simu/service/WaterService.java | 11 +++ src/main/resources/application-dev.yml | 32 ++-------- 4 files changed, 115 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/se/simu/controller/WaterController.java b/src/main/java/com/se/simu/controller/WaterController.java index 50b6b1f..cd9e4bc 100644 --- a/src/main/java/com/se/simu/controller/WaterController.java +++ b/src/main/java/com/se/simu/controller/WaterController.java @@ -1,15 +1,19 @@ package com.se.simu.controller; +import com.se.simu.helper.StringHelper; +import com.se.simu.helper.WebHelper; import com.se.simu.service.WaterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; /** * 鍐呮稘鎺у埗鍣� @@ -25,6 +29,12 @@ @Resource WaterService waterService; + private final static int MIN_SIZE = 10; + + private final static int MAX_SIZE = 10000000; + + private final static long Y2000 = 949334400000L; + @ApiOperation(value = "鑾峰彇褰撳墠鏃堕棿") @GetMapping("/getTime") public Object getTime() { @@ -33,25 +43,90 @@ @ApiOperation(value = "鑾峰彇鍏冩暟鎹俊鎭�") @GetMapping("/{serviceName}/layer.json") - public Object getLayer(@PathVariable String serviceName) { - return serviceName; + public void getLayer(@PathVariable String serviceName, HttpServletResponse res) { + try { + if (!validate(serviceName, res)) { + return; + } + + // + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeStr2Page(res, HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage()); + } } @ApiOperation(value = "鑾峰彇鍦板舰楂樺害鍥�") - @GetMapping("/{serviceName}/terrain?width={width}&height={height}") - public Object getTerraMap(@PathVariable String serviceName, @PathVariable Integer width, @PathVariable Integer height) { - return serviceName + "," + width + "," + height; + @GetMapping("/{serviceName}/terrain") + public void getTerraMap(@PathVariable String serviceName, Integer width, Integer height, HttpServletResponse res) { + try { + if (!validate(serviceName, width, height, res)) { + return; + } + + // + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeStr2Page(res, HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage()); + } } @ApiOperation(value = "鑾峰彇姘撮潰楂樺害鍥�") - @GetMapping("/{serviceName}/waterMap?width={width}&height={height}&time={timestamp}") - public Object getWaterMap(@PathVariable String serviceName, @PathVariable Integer width, @PathVariable Integer height, @PathVariable Long timestamp) { - return serviceName + "," + width + "," + height + "," + timestamp; + @GetMapping("/{serviceName}/waterMap") + public void getWaterMap(@PathVariable String serviceName, Integer width, Integer height, Long timestamp, HttpServletResponse res) { + try { + if (!validate(serviceName, width, height, timestamp, res)) { + return; + } + + // + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeStr2Page(res, HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage()); + } } @ApiOperation(value = "鑾峰彇姘存祦鍚戞祦閫熷浘") - @GetMapping("/{serviceName}/flowMap?width={width}&height={height}&time={timestamp}") - public Object getFlowMap(@PathVariable String serviceName, @PathVariable Integer width, @PathVariable Integer height, @PathVariable Long timestamp) { - return serviceName + "," + width + "," + height + "," + timestamp; + @GetMapping("/{serviceName}/flowMap") + public void getFlowMap(@PathVariable String serviceName, Integer width, Integer height, Long timestamp, HttpServletResponse res) { + try { + if (!validate(serviceName, width, height, timestamp, res)) { + return; + } + + // + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + WebHelper.writeStr2Page(res, HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage()); + } + } + + private boolean validate(String serviceName, HttpServletResponse res) { + if (StringHelper.isEmpty(serviceName)) { + return WebHelper.writeStr2Page(res, HttpStatus.BAD_REQUEST, "鏈嶅姟鍚嶄笉鑳戒负绌�"); + } + + return true; + } + + private boolean validate(String serviceName, Integer width, Integer height, HttpServletResponse res) { + return validate(serviceName, width, height, Y2000, res); + } + + private boolean validate(String serviceName, Integer width, Integer height, Long timestamp, HttpServletResponse res) { + if (StringHelper.isEmpty(serviceName)) { + return WebHelper.writeStr2Page(res, HttpStatus.BAD_REQUEST, "鏈嶅姟鍚嶄笉鑳戒负绌�"); + } + if (null == width || width < MIN_SIZE || width > MAX_SIZE) { + return WebHelper.writeStr2Page(res, HttpStatus.BAD_REQUEST, "鍥惧儚瀹藉害涓嶈兘涓虹┖涓斿彇鍊艰寖鍥翠负" + MIN_SIZE + "~" + MAX_SIZE + "涔嬮棿"); + } + if (null == height || height < MIN_SIZE || height > MAX_SIZE) { + return WebHelper.writeStr2Page(res, HttpStatus.BAD_REQUEST, "鍥惧儚楂樺害涓嶈兘涓虹┖涓斿彇鍊艰寖鍥翠负" + MIN_SIZE + "~" + MAX_SIZE + "涔嬮棿"); + } + if (null == timestamp || timestamp < Y2000) { + return WebHelper.writeStr2Page(res, HttpStatus.BAD_REQUEST, "鏃堕棿涓嶈兘涓虹┖涓斿ぇ浜�2000骞�"); + } + + return true; } } diff --git a/src/main/java/com/se/simu/helper/WebHelper.java b/src/main/java/com/se/simu/helper/WebHelper.java index 074817e..650b5eb 100644 --- a/src/main/java/com/se/simu/helper/WebHelper.java +++ b/src/main/java/com/se/simu/helper/WebHelper.java @@ -1,6 +1,7 @@ package com.se.simu.helper; import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; @@ -47,6 +48,7 @@ /** * 鑾峰彇涓绘満IP + * * @return */ public static String getHostIp() { @@ -271,7 +273,16 @@ } /** - * 杈撳嚭str鑷冲墠绔� + * 杈撳嚭str鑷抽〉闈� + */ + public static boolean writeStr2Page(HttpServletResponse res, HttpStatus status, String str) { + res.setStatus(status.value()); + + return writeStr2Page(res, str); + } + + /** + * 杈撳嚭str鑷抽〉闈� */ public static boolean writeStr2Page(HttpServletResponse res, String str) { try { diff --git a/src/main/java/com/se/simu/service/WaterService.java b/src/main/java/com/se/simu/service/WaterService.java index 0011b20..44f1e1a 100644 --- a/src/main/java/com/se/simu/service/WaterService.java +++ b/src/main/java/com/se/simu/service/WaterService.java @@ -1,6 +1,7 @@ package com.se.simu.service; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** @@ -12,4 +13,14 @@ @Slf4j @Service public class WaterService { + @Value("${sys.path.gdal}") + String gdalPath; + + @Value("${sys.path.data}") + String dataPath; + + public Object getLayer(String serviceName) { + + return null; + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 1a85cef..3088199 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -1,26 +1,6 @@ -server: - tomcat: - uri-encoding: UTF-8 - max-connections: 5000 - max-http-form-post-size: 50MB - threads: - max: 2000 - port: 8079 - servlet: - context-path: /simuserver - -spring: - mvc: - pathmatch: - # 瑙e喅Knife4j杩愯鎶ラ敊 - matching-strategy: ant_path_matcher - application: - name: simuserver - -knife4j: - # 鏄惁寮�鍚� - enabled: true - # 璇锋眰鍓嶇紑 - pathMapping: - # 鏄惁寮�鍚寮烘ā寮� - enable: true +sys: + path: + # Gdal椹卞姩鐩綍 + gdal: E:/terrait/TianJin/Zip/release-1928-x64-dev/release-1928-x64/bin + # 鍒嗘瀽鏁版嵁鏁版嵁 + data: D:/simu/ -- Gitblit v1.9.3