1. 程式人生 > 實用技巧 >超簡單整合ML kit 實現聽寫單詞播報

超簡單整合ML kit 實現聽寫單詞播報

今日份程式碼:

1.定義攔截器

import com.alibaba.fastjson.JSON;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.dubbo.common.logger.Logger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.PrintWriter; import java.util.*; import java.util.regex.Pattern; import java.util.stream.Collectors;
/** * Spring boot攔截器 */ @Component public class MyInterceptor implements HandlerInterceptor { private final static Logger log = LoggerFactory.getLogger(MyInterceptor.class); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws
Exception { boolean pass = true; String methodType = request.getMethod(); //GET 或 POST String url = request.getRequestURI(); String 入參值1 = request.getParameter("介面入參1"); if (!pass) { response(request,response,"未通過攔截器校驗"); } return pass; } @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 { } //返回攔截訊息給前端,解決跨域,編碼問題 private void response(HttpServletRequest request, HttpServletResponse response, String message) throws Exception{ String origin = request.getHeader("Origin"); if (StringUtils.isNotBlank(origin)) { if (origin.toLowerCase().indexOf(".XXX.com") > 0) { response.setHeader("Access-Control-Allow-Origin", origin); // 允許訪問的域 response.setHeader("Access-Control-Allow-Methods", "POST,GET");// 允許GET、POST的外域請求 response.setHeader("Access-Control-Allow-Credentials", "true"); // 允許請求帶cookie到伺服器 response.setContentType("text/html; charset=utf-8"); // 設定JSON格式標準輸出、及編碼 } } PrintWriter pw = response.getWriter(); pw.write(JSON.toJSONString(message)); pw.flush(); pw.close(); } }
View Code

2.註冊攔截器

import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

import javax.annotation.Resource;

/**
 * 攔截器配置
 */
@ControllerAdvice
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {

    @Resource
    private MyInterceptor myInterceptor;
    @Resource
    private MyInterceptor2 myInterceptor2;

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //多個攔截器  按照程式碼順序 從上到下先後進入
        registry.addInterceptor(myInterceptor).addPathPatterns("/**").excludePathPatterns("/XXX/111","/YYY/222");
        registry.addInterceptor(myInterceptor2).addPathPatterns("/**");
    }


    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                .maxAge(3600)
                .allowCredentials(true);
    }
    
}
View Code

3.掃描攔截器

啟動類上需要保證 攔截器定義的位置 可以被Spring掃描到:
@SpringBootApplication
@ComponentScan(basePackages = {"com.XX.*", "com.YY.*"})
View Code