当前位置: 首页 > news >正文

烟台网站制作专业软文写作案例

烟台网站制作专业,软文写作案例,网站开发地图,委托完成网站建设合同模板防重复提交:自定义注解 拦截器(HandlerInterceptor) 一、思路: 1、首先自定义注解; 2、创建拦截器实现类(自定义类名称),拦截器(HandlerInterceptor); 3…

防重复提交:自定义注解 + 拦截器(HandlerInterceptor)

一、思路:

1、首先自定义注解;

2、创建拦截器实现类(自定义类名称),拦截器(HandlerInterceptor);

3、创建类:配置拦截器路径(拦截URL规则);

二、代码示例:

1、首先自定义注解;

import java.lang.annotation.*;/*** @ClassName Resubmit* @Descripition 自定义注解-防重复提交* @Author * @Date 2023/8/31 10:38*/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.METHOD})
public @interface Resubmit {/*** 默认过期时间* 单位:秒** @return*/int value() default 100;/*** 频繁请求提示语** @return*/String messge() default "请求过于频繁,请稍后再试!";}

2、创建拦截器实现类(自定义类名称),拦截器(HandlerInterceptor);

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;/*** @ClassName ResubmitInterceptorUtil* @Descripition 防重复提拦截器工具类* @Author * @Date 2023/8/31 10:52*/
@Slf4j
@Component
public class ResubmitInterceptorUtil implements HandlerInterceptor {// key: 固定前缀private static final String FIXED_SESSION = "repeatData";@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {try {if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;// 请求方法Method method = handlerMethod.getMethod();// 获取自定义注解-防重复注解(@Resubmit)Resubmit annotation = method.getAnnotation(Resubmit.class);// 判断方法是否添加自定义注解(@Resubmit)if (annotation != null) {//如果重复相同数据if (repeatDataValidator(request)) {// 自定义返回结果类Result result = new Result();result.setCode(500);result.setMessage(annotation.messge());// 设置字符集编码response.setCharacterEncoding("UTF-8");// response.getWriter().write(JSON.toJSONString("请勿频繁提交请求,稍后再试."));response.getWriter().write(JSON.toJSONString(result));return false;} else {return true;}}return true;} else {return true;}} catch (IOException e) {log.error("防重复提拦截器工具类异常", e);return false;}}/*** 验证同一个url数据是否相同提交,相同返回true** @param request* @return*/private boolean repeatDataValidator(HttpServletRequest request) {// 获取POST请求体-body-入参String params = getRequestBodyParam(request);// 获取请求路径String url = request.getRequestURI();Map<String, String> map = new HashMap<>();// 组装Map key: url、 value:url+请求方法体+时间map.put(url, params);String nowUrlParams = JSON.toJSONString(map);Object preUrlParams = request.getSession().getAttribute(FIXED_SESSION);//如果上一个数据为null,表示还没有访问页面if (preUrlParams == null) {//如果上一个数据为null,表示还没有访问页面request.getSession().setAttribute(FIXED_SESSION, nowUrlParams);return false;} else {//如果上次url+数据和本次url+数据相同,则表示重复添加数据if (preUrlParams.equals(nowUrlParams)) {log.info("[请求频繁提交 repeatDataValidator URL :{}; param :{}]", url, params);return true;} else {//如果上次 url+数据 和本次url加数据不同,则不是重复提交request.getSession().setAttribute(FIXED_SESSION, nowUrlParams);return false;}}}/*** 获取请求体-body-入参** @param request* @return*/private String getRequestBodyParam(HttpServletRequest request) {BufferedReader bufferedReader = null;StringBuffer stringBuffer = new StringBuffer();try {bufferedReader = request.getReader();String str = null;while ((str = bufferedReader.readLine()) != null) {stringBuffer.append(str);}bufferedReader.close();} catch (IOException e) {log.error("解析入参异常!!!", e);} finally {if (bufferedReader != null) {try {bufferedReader.close();} catch (IOException e) {log.error("解析入参异常!!!", e);}}}return stringBuffer.toString();}
}

3、创建类:配置拦截器路径(拦截URL规则);

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;/*** @ClassName WebMvcConfig* @Descripition 配置拦截路径* @Author * @Date 2023/9/1 10:08*/
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {@Autowiredprivate ResubmitInterceptorUtil resubmitInterceptorUtil;@Overridepublic void addInterceptors(InterceptorRegistry registry) {// 配置拦截类registry.addInterceptor(resubmitInterceptorUtil)// 设置拦截路径URL.addPathPatterns("/**");}}
http://www.mmbaike.com/news/22393.html

相关文章:

  • 网站建设合同中的违约责任关键词优化的策略
  • 南昌vr网站开发竞价代运营公司哪家好
  • 网站营销推广方案搜索引擎优化的英文
  • 免费个人网站模版下载站长工具传媒
  • 网站模板管理网站建设价格
  • 大连建站费用企业推广托管
  • 丹东到大连广告优化师怎么学
  • 网站公司品牌推广是做什么的
  • 做网站要实名认证吗搜索引擎优化主要包括
  • 灵璧做网站公司电商网络推广
  • 福州做网站互联网公司设计好看的网站
  • 百度移动端点赞排名软件河南做网站优化
  • 阿里云虚拟主机多个网站吗女教师遭网课入侵直播录屏曝光se
  • 电子商务网站技术排名怎么优化快
  • 中国机械工业建设集团有限公司网站百度最新人工智能
  • 灯具网站模板上海最新新闻
  • wordpress 子站点长沙有实力seo优化公司
  • 网页设计相关的网站找个免费网站这么难吗
  • 做网销做什么网站快速排名服务平台
  • 17做网站广州起做网店谷歌的推广是怎么样的推广
  • 有什么网站是做投资的推广链接点击器app
  • 网站建设方案怎么写深圳企业网站制作
  • 电商平台网站建设方案公司官网怎么做
  • 河南平台网站建设百度霸屏推广一般多少钱
  • 做导购型网站识图
  • 做网站好听的域名购买链接平台
  • 重庆网站建设 制作 设计 优惠价交换链接适合哪些网站
  • 榆中县城乡建设局网站百家号排名
  • 申请备案网站空间济南seo小黑seo
  • 网站优化检查广告制作