您好,登錄后才能下訂單哦!
本篇內容介紹了“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的攔截器、過濾器、視圖層、異步源碼分析”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。