中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SpringMVC的攔截器、過濾器、視圖層、異步源碼分析

發布時間:2021-11-17 10:03:58 來源:億速云 閱讀:131 作者:iii 欄目:大數據

本篇內容介紹了“SpringMVC的攔截器、過濾器、視圖層、異步源碼分析”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

SpringMVC注解方式開啟視圖層

整合Jsp 視圖層

@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
    // 1.需要前綴
    InternalResourceViewResolver internalResourceViewResolver = new InternalResourceViewResolver();
    // 2.需要后綴
    internalResourceViewResolver.setPrefix("/WEB-INF/view/");
    internalResourceViewResolver.setSuffix(".jsp");
    return internalResourceViewResolver;
}
<%@ page contentType="text/html;charset=UTF-8"> 
 SpringMVC攔截器使用攔截器與過濾器區別攔截器和過濾器都是基于AOP實現的,能夠對請求方法之前和之后實現攔截過濾器是基于Servlet實現的,對web請求之前和之后實現攔截攔截器不需要依賴servlet,不僅可以實現web請求,還可以對其它方法攔截 SpringMVC攔截器的使用1.自定義攔截器攔截請求Tokenpublic class TokenInterceptor implements HandlerInterceptor {
    /**
     * 請求方法前置攔截,如果返回true 表示會執行到目標方法(請求方法) 如果返回false的情況下 則不會執行目標方法。
     */
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String token = request.getParameter("token");
        System.out.println(">>>>token<<<<:" + token);
        if (StringUtils.isEmpty(token)) {
            response.setStatus(500);
            response.getWriter().print(" token is null");
            return false;
        }
        // 執行我們的請求方法
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("<<<postHandle>>>>");
        // 請求之后執行。
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(">>>afterCompletion<<<");
        // 請求之后執行。
    }
} @Configuration
@ComponentScan(basePackages = {"com.mayikt.controller","com.mayikt.service"})
public class SpringMvcConfig extends WebMvcConfigurationSupport {
  ...// 1.手動注入攔截器到Spring中@Bean
    public TokenInterceptor tokenInterceptor() {
        return new TokenInterceptor();
    }    // 2.添加攔截器@Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(tokenInterceptor()).addPathPatterns("/**");// 攔截所有的請求}
} 注意:使用攔截器一定要關閉EnableWebMvc 否則攔截器不會生效。進入這個@EnableWebMvc注解中,可知加入這個注解EnableWebMvc重復注入了WebMvcConfigurationSupport,會覆蓋我們自定義的配置類 SpringMVC多線程異步處理使用異步注解@EnableAsync@RequestMapping("/pay")
public String pay() {
    System.out.println(">>>1.開始調用pay<<<<<<< ThradName:" + Thread.currentThread().getName());
    payServie.pay();
    System.out.println(">>>3.結束調用pay<<<<<<< ThradName:" + Thread.currentThread().getName());
    return "pay";
} 使用異步Callable 帶返回結果@RequestMapping("/asyncPay")
@ResponseBody
public Callable<String> asyncPay() {
    System.out.println("1.開始執行payToMember>>>> name:" + Thread.currentThread().getName());
    Callable callable = new Callable<String>() {
        // 異步的對吧!
        public String call() throws Exception {
            // 耗時的時間都可以放到這個里面做 安卓里面
            String member = memberService.member();
            return member;
        }
    };
    System.out.println("4.<<<<結束執行payToMember>>> name:" + Thread.currentThread().getName());
    return callable;
} @Component
public class MemberService {

    /**
     * member方法單獨開啟一個線程處理請求
     *
     * @return
     */
    public String member() {
        try {
            System.out.println("2.開始調用會員服務接口... name:" + Thread.currentThread().getName());
            Thread.sleep(5000);
            System.out.println("3.結束調用會員服務接口.. name:" + Thread.currentThread().getName());
        } catch (Exception e) {

        }
        return "member";
    }
}  面試題:SpringMVC項目中使用到多線程? 肯定是有。為什么要使用多線程?提高我們響應的速度、異步執行。在我們的Web中為什么要使用異步呢?目的:快速響應給客戶端,防止客戶端請求等待的。單獨開啟一個線程處理。使用異步也有缺點:線程安全問題、不能及時拿到結果、消耗CPU能夠讓耗時的時間,交給單獨線程處理 也能夠拿到異步線程結果本文參考螞蟻課堂http://www.mayikt.com/

“SpringMVC的攔截器、過濾器、視圖層、異步源碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

莱州市| 汝州市| 绥江县| 华亭县| 河西区| 芦溪县| 彩票| 桃源县| 普兰店市| 凤冈县| 克什克腾旗| 社会| 漾濞| 镇原县| 太仆寺旗| 禄劝| 临海市| 准格尔旗| 江永县| 阿克| 罗平县| 老河口市| 阳高县| 溆浦县| 淳安县| 临江市| 海伦市| 乌兰县| 南汇区| 留坝县| 瑞昌市| 和林格尔县| 新源县| 德庆县| 元朗区| 郧西县| 台南县| 宁晋县| 平邑县| 巫山县| 长寿区|