成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

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

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

成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、做網(wǎng)站與策劃設(shè)計(jì),通川網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:通川等地區(qū)。通川做網(wǎng)站價(jià)格咨詢:13518219792

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攔截器使用攔截器與過濾器區(qū)別攔截器和過濾器都是基于AOP實(shí)現(xiàn)的,能夠?qū)φ埱蠓椒ㄖ昂椭髮?shí)現(xiàn)攔截過濾器是基于Servlet實(shí)現(xiàn)的,對web請求之前和之后實(shí)現(xiàn)攔截?cái)r截器不需要依賴servlet,不僅可以實(shí)現(xiàn)web請求,還可以對其它方法攔截 SpringMVC攔截器的使用1.自定義攔截器攔截請求Tokenpublic class TokenInterceptor implements HandlerInterceptor {
    /**
     * 請求方法前置攔截,如果返回true 表示會執(zhí)行到目標(biāo)方法(請求方法) 如果返回false的情況下 則不會執(zhí)行目標(biāo)方法。
     */
    @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;
        }
        // 執(zhí)行我們的請求方法
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("<<<postHandle>>>>");
        // 請求之后執(zhí)行。
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println(">>>afterCompletion<<<");
        // 請求之后執(zhí)行。
    }
} @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("/**");// 攔截所有的請求}
} 注意:使用攔截器一定要關(guān)閉EnableWebMvc 否則攔截器不會生效。進(jìn)入這個(gè)@EnableWebMvc注解中,可知加入這個(gè)注解EnableWebMvc重復(fù)注入了WebMvcConfigurationSupport,會覆蓋我們自定義的配置類 SpringMVC多線程異步處理使用異步注解@EnableAsync@RequestMapping("/pay")
public String pay() {
    System.out.println(">>>1.開始調(diào)用pay<<<<<<< ThradName:" + Thread.currentThread().getName());
    payServie.pay();
    System.out.println(">>>3.結(jié)束調(diào)用pay<<<<<<< ThradName:" + Thread.currentThread().getName());
    return "pay";
} 使用異步Callable 帶返回結(jié)果@RequestMapping("/asyncPay")
@ResponseBody
public Callable<String> asyncPay() {
    System.out.println("1.開始執(zhí)行payToMember>>>> name:" + Thread.currentThread().getName());
    Callable callable = new Callable<String>() {
        // 異步的對吧!
        public String call() throws Exception {
            // 耗時(shí)的時(shí)間都可以放到這個(gè)里面做 安卓里面
            String member = memberService.member();
            return member;
        }
    };
    System.out.println("4.<<<<結(jié)束執(zhí)行payToMember>>> name:" + Thread.currentThread().getName());
    return callable;
} @Component
public class MemberService {

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

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

“SpringMVC的攔截器、過濾器、視圖層、異步源碼分析”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

新聞名稱:SpringMVC的攔截器、過濾器、視圖層、異步源碼分析
網(wǎng)站路徑:http://jinyejixie.com/article10/iisjdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、手機(jī)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)Google、網(wǎng)站排名、網(wǎng)站內(nèi)鏈

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
黄平县| 曲水县| 嘉荫县| 石泉县| 宜丰县| 台前县| 德江县| 出国| 高陵县| 淳化县| 昌都县| 屏东县| 淳化县| 唐河县| 平泉县| 城口县| 城口县| 武川县| 成都市| 崇信县| 榆树市| 沂水县| 马龙县| 称多县| 藁城市| 房山区| 天台县| 衢州市| 金溪县| 安阳市| 常熟市| 郯城县| 洪泽县| 屯门区| 两当县| 贞丰县| 西峡县| 昔阳县| 元阳县| 宜昌市| 绍兴县|