国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

可以做h5游戲的網(wǎng)站谷歌是如何運(yùn)營的

可以做h5游戲的網(wǎng)站,谷歌是如何運(yùn)營的,mooc 網(wǎng)站建設(shè)情況,開發(fā)三味風(fēng)車動(dòng)漫無修邏輯:寫一個(gè)注解,自定義在多少秒內(nèi)限制訪問多少次。 自定義攔截器,對(duì)于加了注解的請求,在執(zhí)行方法前。先檢查有沒有注解,如果有注解就將請求的ipurl拼接作為key。 查詢r(jià)edis中有沒有該key,沒有就存入&…

邏輯:寫一個(gè)注解,自定義在多少秒內(nèi)限制訪問多少次。

自定義攔截器,對(duì)于加了注解的請求,在執(zhí)行方法前。先檢查有沒有注解,如果有注解就將請求的ip+url拼接作為key。

查詢r(jià)edis中有沒有該key,沒有就存入(key,1,注解中設(shè)置的時(shí)間限制,單位)

如果redis有該key,就將原來的value取出+1,

1.自定義注解

import java.lang.annotation.*;
@Inherited
@Documented
@Target({ElementType.FIELD,ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface AccessLimit {int limit() default 5;int sec() default 5;
}

2.攔截器

在springboot中自定義攔截器,實(shí)現(xiàn)HandlerInterceptor接口。實(shí)現(xiàn)三個(gè)方法:preHandle()//請求到達(dá)controller前

postHandle()//請求到達(dá)controller后

afterCompletion()//渲染視圖后調(diào)用

import com.qcby.xmdemo.annocation.AccessLimit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Component
public class AccessLimitInterceptor implements HandlerInterceptor {@Autowiredprivate RedisTemplate  redisTemplate;@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;Method method = handlerMethod.getMethod();if (!method.isAnnotationPresent(AccessLimit.class)) {return true;}AccessLimit accessLimit = method.getAnnotation(AccessLimit.class);if (accessLimit == null) {return true;}int limit = accessLimit.limit();int sec = accessLimit.sec();String key = getIpAddr(request) + request.getRequestURI();Integer maxLimit = (Integer) redisTemplate.opsForValue().get(key);if (maxLimit == null) {redisTemplate.opsForValue().set(key, 1, sec, TimeUnit.SECONDS);//set時(shí)一定要加過期時(shí)間} else if (maxLimit < limit) {redisTemplate.opsForValue().set(key, maxLimit + 1, sec, TimeUnit.SECONDS);} else {output(response, "請求太頻繁!");return false;}}return true;}public void output(HttpServletResponse response, String msg) throws IOException {response.setContentType("application/json;charset=UTF-8");ServletOutputStream outputStream = null;try {outputStream = response.getOutputStream();outputStream.write(msg.getBytes("UTF-8"));} catch (IOException e) {e.printStackTrace();} finally {outputStream.flush();outputStream.close();}}@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}//獲取請求ip的方法private static String getIpAddr(HttpServletRequest request) {List<String> ipHeadList = Stream.of("X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "X-Real-IP").collect(Collectors.toList());for (String ipHead : ipHeadList) {if (checkIP(request.getHeader(ipHead))) {return request.getHeader(ipHead).split(",")[0];}}return "0:0:0:0:0:0:0:1".equals(request.getRemoteAddr()) ? "127.0.0.1" : request.getRemoteAddr();}private static boolean checkIP(String ip) {return !(null == ip || 0 == ip.length() || "unknown".equalsIgnoreCase(ip));}}

3.注冊攔截器

注冊到Spring MVC的攔截器鏈中。實(shí)現(xiàn)WebMvcConfigurer接口并重寫addInterceptors()方法來實(shí)現(xiàn)。

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;@Configuration
public class InterceptorConfig implements WebMvcConfigurer {@AutowiredAccessLimitInterceptor accessLimitInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(accessLimitInterceptor).addPathPatterns("/**")//攔截所有的路徑.excludePathPatterns("/LoginCntroller/login");}
}

4.測試

@Controller
@RequestMapping("/hello")
public class AopController {@ResponseBody@RequestMapping("/index")@AccessLimit(limit = 4,sec = 10)//加上自定義注解即可public String test (HttpServletRequest request, @RequestParam(value = "username",required = false) String userName) {return "hello!";}}
http://m.aloenet.com.cn/news/28853.html

相關(guān)文章:

  • 做面包有哪些網(wǎng)站知乎快速優(yōu)化系統(tǒng)
  • 那個(gè)網(wǎng)站教做仙芋鮮企業(yè)網(wǎng)站建設(shè)的一般要素
  • 用第三方做網(wǎng)站北京seo包年
  • 說做網(wǎng)站被收債正規(guī)淘寶代運(yùn)營去哪里找
  • 簡約網(wǎng)站模板廣州seo優(yōu)化排名公司
  • 重慶seo整站優(yōu)化外包服務(wù)最新消息
  • 文網(wǎng)文網(wǎng)站建設(shè)2024年陽性最新癥狀
  • 網(wǎng)站建設(shè)友情鏈接怎樣交換chrome瀏覽器下載安卓手機(jī)
  • wordpress掃碼槍鄭州好的seo外包公司
  • 尋找大連網(wǎng)站建設(shè)站長統(tǒng)計(jì)app進(jìn)入網(wǎng)址
  • 深圳本地招聘網(wǎng)站百度 人工客服
  • 如何幫別人推廣賺錢桂林seo顧問
  • 重慶建站網(wǎng)絡(luò)公司百度seo排名培訓(xùn) 優(yōu)化
  • 網(wǎng)站建設(shè)原則包括哪些內(nèi)容徐州seo外包
  • 網(wǎng)站建設(shè)公司開票開什么內(nèi)容百度天眼查
  • 做商品網(wǎng)站的教學(xué)視頻教程微博營銷的特點(diǎn)
  • 網(wǎng)站怎么做訪問日志網(wǎng)站seo優(yōu)化是什么意思
  • 局域網(wǎng)建站軟件八百客crm登錄入口
  • 網(wǎng)站高并發(fā)前端怎么做會(huì)計(jì)培訓(xùn)班多少錢
  • 一個(gè)帶有網(wǎng)上購物功能的小型網(wǎng)站的開發(fā)費(fèi)用騰訊廣點(diǎn)通廣告投放平臺(tái)
  • 林州網(wǎng)站建設(shè)報(bào)價(jià)做網(wǎng)站seo優(yōu)化
  • .net網(wǎng)站開發(fā)步驟免費(fèi)軟文網(wǎng)站
  • 藍(lán)色通用營銷型企業(yè)網(wǎng)站模板站長統(tǒng)計(jì)網(wǎng)站
  • 樂山網(wǎng)站建設(shè)公司什么是seo?
  • 做黨建網(wǎng)站百度教育網(wǎng)站
  • 杭州做網(wǎng)站 做小程序?qū)W生個(gè)人網(wǎng)頁制作教程
  • 韶關(guān)市建設(shè)工程造價(jià)網(wǎng)站百度指數(shù)代表什么
  • 網(wǎng)站建設(shè)設(shè)計(jì)作業(yè)百度競價(jià)排名推廣
  • 做網(wǎng)站gif代碼名優(yōu)網(wǎng)站關(guān)鍵詞優(yōu)化
  • wordpress 伊拉克防木馬seo排名優(yōu)化推廣報(bào)價(jià)