diff --git a/src/main/java/com/bwie/Filter/TokenFilter.java b/src/main/java/com/bwie/Filter/TokenFilter.java index f717e7f..b8bb12a 100644 --- a/src/main/java/com/bwie/Filter/TokenFilter.java +++ b/src/main/java/com/bwie/Filter/TokenFilter.java @@ -69,14 +69,14 @@ public class TokenFilter implements Filter { Filter.super.destroy(); } - //相应方法封装 - private void resp(ServletResponse servletResponse,String msg) throws IOException { + private void resp(ServletResponse servletResponse, String msg) throws IOException { HttpServletResponse response=(HttpServletResponse) servletResponse; ServletOutputStream outputStream = response.getOutputStream(); response.setStatus(401); response.setContentType("application/json"); outputStream.write(msg.getBytes(StandardCharsets.UTF_8)); } + } diff --git a/src/main/java/com/bwie/aop/RepeatSubmit.java b/src/main/java/com/bwie/aop/RepeatSubmit.java index e431e4b..854d077 100644 --- a/src/main/java/com/bwie/aop/RepeatSubmit.java +++ b/src/main/java/com/bwie/aop/RepeatSubmit.java @@ -1,12 +1,23 @@ package com.bwie.aop; +import com.bwie.utils.HttpServletRequestReader; import lombok.extern.log4j.Log4j2; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import javax.servlet.ServletOutputStream; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.HashSet; +import java.util.Set; + @Log4j2 @Aspect @Component @@ -17,13 +28,53 @@ public class RepeatSubmit { @Pointcut("@annotation(com.bwie.aop.RepeatEnum)") private void pointcut(){} + @Autowired + private HttpServletRequest request; + + private final Set set=new HashSet<>(); + + private static final String apiTemplate="%s:%s:%s"; + + @Autowired + private HttpServletResponse response; + + @Before("pointcut()") - public void bef(){ + public void bef() { log.info("切面 -前"); + String token = request.getHeader("token"); + String body = HttpServletRequestReader.ReadAsChars(request); + String format = String.format(apiTemplate, token, request.getRequestURI(), body); + threadLocal.set(format); + log.info("提交唯一标识:{}", format); + //用户+请求+内容 + if (set.contains(format)) { + resp(response,"重复提交"); + } + set.add(format); } + + @After("pointcut()") public void aft(){ log.info("切面 -后"); + set.remove(threadLocal.get()); + threadLocal.remove(); + } + + + //相应方法封装 + private void resp(ServletResponse servletResponse, String msg){ + try { + HttpServletResponse response=(HttpServletResponse) servletResponse; + ServletOutputStream outputStream = response.getOutputStream(); + response.setStatus(401); + response.setContentType("application/json"); + outputStream.write(msg.getBytes(StandardCharsets.UTF_8)); + } catch (IOException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/com/bwie/controller/TestController.java b/src/main/java/com/bwie/controller/TestController.java index ffd4b16..affcfb3 100644 --- a/src/main/java/com/bwie/controller/TestController.java +++ b/src/main/java/com/bwie/controller/TestController.java @@ -14,31 +14,21 @@ import java.util.Set; @RequestMapping("/test") public class TestController { - @Autowired - private HttpServletRequest request; - private final Set set=new HashSet<>(); - - private static final String apiTemplate="%s:%s:%s"; @RepeatEnum @PostMapping - public String post(@RequestHeader("token") String token, @RequestBody String str){ - String format = String.format(apiTemplate, token, request.getRequestURI(), str); - log.info("提交唯一标识:{}",format); - //用户+请求+内容 - try { - if (set.contains(format)){ - return "重复提交"; - } - set.add(format); + public String post( @RequestBody String str){ + log.info("接收到请求:{}",str); - Thread.sleep(5000); - return "请求成功"; - } catch (InterruptedException e) { - throw new RuntimeException(e); - }finally { - set.remove(format); - } + try { + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return "请求成功"; + + + } } diff --git a/target/classes/com/bwie/Filter/TokenFilter.class b/target/classes/com/bwie/Filter/TokenFilter.class index 6ada7f6..2dbc219 100644 Binary files a/target/classes/com/bwie/Filter/TokenFilter.class and b/target/classes/com/bwie/Filter/TokenFilter.class differ diff --git a/target/classes/com/bwie/aop/RepeatSubmit.class b/target/classes/com/bwie/aop/RepeatSubmit.class index e07d78c..a363b2a 100644 Binary files a/target/classes/com/bwie/aop/RepeatSubmit.class and b/target/classes/com/bwie/aop/RepeatSubmit.class differ diff --git a/target/classes/com/bwie/controller/TestController.class b/target/classes/com/bwie/controller/TestController.class index 118fb78..9c3e486 100644 Binary files a/target/classes/com/bwie/controller/TestController.class and b/target/classes/com/bwie/controller/TestController.class differ diff --git a/target/demo11-1.0-SNAPSHOT.jar b/target/demo11-1.0-SNAPSHOT.jar deleted file mode 100644 index 4057997..0000000 Binary files a/target/demo11-1.0-SNAPSHOT.jar and /dev/null differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index 650ce86..1f71fa9 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,3 +1,3 @@ artifactId=demo11 groupId=com.bwie -version=1.0-SNAPSHOT +version=3.6.0 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst index e0f8dfe..5067f90 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -1,11 +1,15 @@ -com\bwie\aop\RepeatSubmit.class -com\bwie\config\WebMvcConfig.class +com\bwie\Filter\XssFilter.class com\bwie\controller\LoginController.class com\bwie\domian\UserInfo.class com\bwie\Filter\TokenFilter.class com\bwie\controller\TestController.class -com\bwie\domian\req\LoginReq.class +com\bwie\config\XssHttpServletRequestWrapper.class com\bwie\aop\RepeatEnum.class -com\bwie\domian\UserInfo$UserInfoBuilder.class com\bwie\config\LoginUserMap.class +com\bwie\utils\HttpServletRequestReader.class com\bwie\App.class +com\bwie\aop\RepeatSubmit.class +com\bwie\config\WebMvcConfig.class +com\bwie\config\XssHttpServletRequestWrapper$1.class +com\bwie\domian\req\LoginReq.class +com\bwie\domian\UserInfo$UserInfoBuilder.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst index 0333393..b2d13e4 100644 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -1,10 +1,13 @@ D:\Project\demo11\src\main\java\com\bwie\config\LoginUserMap.java -D:\Project\demo11\src\main\java\com\bwie\domian\req\LoginReq.java -D:\Project\demo11\src\main\java\com\bwie\config\WebMvcConfig.java D:\Project\demo11\src\main\java\com\bwie\Filter\TokenFilter.java D:\Project\demo11\src\main\java\com\bwie\aop\RepeatSubmit.java -D:\Project\demo11\src\main\java\com\bwie\aop\RepeatEnum.java +D:\Project\demo11\src\main\java\com\bwie\config\XssHttpServletRequestWrapper.java D:\Project\demo11\src\main\java\com\bwie\domian\UserInfo.java +D:\Project\demo11\src\main\java\com\bwie\App.java +D:\Project\demo11\src\main\java\com\bwie\domian\req\LoginReq.java +D:\Project\demo11\src\main\java\com\bwie\config\WebMvcConfig.java +D:\Project\demo11\src\main\java\com\bwie\aop\RepeatEnum.java +D:\Project\demo11\src\main\java\com\bwie\Filter\XssFilter.java D:\Project\demo11\src\main\java\com\bwie\controller\LoginController.java D:\Project\demo11\src\main\java\com\bwie\controller\TestController.java -D:\Project\demo11\src\main\java\com\bwie\App.java +D:\Project\demo11\src\main\java\com\bwie\utils\HttpServletRequestReader.java