攔截器的實(shí)現(xiàn)
創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),察隅網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:察隅等地區(qū)。察隅做網(wǎng)站價(jià)格咨詢:13518219792
1、編寫攔截器類實(shí)現(xiàn)HandlerInterceptor接口;
2、將攔截器注冊進(jìn)springmvc框架中;
3、配置攔截器的攔截規(guī)則;
其他實(shí)現(xiàn)方法
WebRequestInterceptor接口:
與上一個(gè)的區(qū)別是參數(shù)區(qū)別和prehandle的方法沒有返回值。沒有上一個(gè)功能全,因此常用第一個(gè)。
攔截器的使用場景
處理所有請求共性問題:
1、亂碼問題:用request,response參數(shù)去設(shè)置編碼;
2、解決權(quán)限驗(yàn)證問題(是否登陸,取session對象查看);
攔截器與過濾器的區(qū)別
1、攔截器Interceptor依賴于框架容器,基于反射機(jī)制,只過濾請求;
2、過濾器Filter依賴于Servlet容器,基于回調(diào)函數(shù),過濾范圍大;
例子
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class TestInterceptor implements HandlerInterceptor { /** * 返回值說明是否需要將當(dāng)前的請求攔截下來 * false:請求將被終止 * true:請求會被繼續(xù)運(yùn)行 * Object handler 表示的是被攔截的請求的目標(biāo)對象 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("TestInterceptor.preHandle()"); return true; } /** * modelAndView: * 可以通過modelAndView參數(shù)改變顯示的視圖,或者修改發(fā)往視圖的方法 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("TestInterceptor.postHandle()"); } /** * 在視圖加載完畢之后調(diào)用 * 常用于作于資源的銷毀,流等 * 類似于析構(gòu)函數(shù) */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("TestInterceptor.afterCompletion()"); } }
注冊方式:
在springmvc的Dispatcherservlet配置文件中加入攔截器代碼;
<!-- 注冊攔截器 --> <mvc:interceptors> <!-- 單個(gè)攔截器:設(shè)置具體的攔截路徑 --> <mvc:interceptor> <mvc:mapping path="/courses/view2/*"> <bean class="com.cc.mvcdemo.interceptor.TestInterceptor"></bean> </mvc:mapping></mvc:interceptor> <!-- 第二種方式:攔截經(jīng)過當(dāng)前Dispatcherservlet的所有請求 --> <bean class="com.cc.mvcdemo.interceptor.TestInterceptorTwo"></bean> </mvc:interceptors>
希望本篇文章內(nèi)容對各位朋友有所幫助
網(wǎng)站名稱:淺析java中SpringMVC攔截器作用及其實(shí)現(xiàn)
鏈接地址:http://bm7419.com/article16/jjcpdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、建站公司、靜態(tài)網(wǎng)站、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)
聲明:本網(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)