本篇文章為大家展示了SpringMVC 如何實(shí)現(xiàn)一個(gè)攔截器功能,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了坊子免費(fèi)建站歡迎大家使用!
攔截器的實(shí)現(xiàn)
1、編寫(xiě)攔截器類實(shí)現(xiàn)HandlerInterceptor接口;
2、將攔截器注冊(cè)進(jìn)springmvc框架中;
3、配置攔截器的攔截規(guī)則;
其他實(shí)現(xiàn)方法
WebRequestInterceptor接口:
與上一個(gè)的區(qū)別是參數(shù)區(qū)別和prehandle的方法沒(méi)有返回值。沒(méi)有上一個(gè)功能全,因此常用第一個(gè)。
攔截器的使用場(chǎng)景
處理所有請(qǐng)求共性問(wèn)題:
1、亂碼問(wèn)題:用request,response參數(shù)去設(shè)置編碼;
2、解決權(quán)限驗(yàn)證問(wèn)題(是否登陸,取session對(duì)象查看);
攔截器與過(guò)濾器的區(qū)別
1、攔截器Interceptor依賴于框架容器,基于反射機(jī)制,只過(guò)濾請(qǐng)求;
2、過(guò)濾器Filter依賴于Servlet容器,基于回調(diào)函數(shù),過(guò)濾范圍大;
例子
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 {
/**
* 返回值說(shuō)明是否需要將當(dāng)前的請(qǐng)求攔截下來(lái)
* false:請(qǐng)求將被終止
* true:請(qǐng)求會(huì)被繼續(xù)運(yùn)行
* Object handler 表示的是被攔截的請(qǐng)求的目標(biāo)對(duì)象
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("TestInterceptor.preHandle()");
return true;
}
/**
* modelAndView:
* 可以通過(guò)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()");
}
}
注冊(cè)方式:
在springmvc的Dispatcherservlet配置文件中加入攔截器代碼;
<!-- 注冊(cè)攔截器 -->
<mvc:interceptors>
<!-- 單個(gè)攔截器:設(shè)置具體的攔截路徑 -->
<mvc:interceptor>
<mvc:mapping path="/courses/view2/*"/>
<bean class="com.cc.mvcdemo.interceptor.TestInterceptor"></bean>
</mvc:interceptor>
<!-- 第二種方式:攔截經(jīng)過(guò)當(dāng)前Dispatcherservlet的所有請(qǐng)求 -->
<bean class="com.cc.mvcdemo.interceptor.TestInterceptorTwo"></bean>
</mvc:interceptors> 上述內(nèi)容就是SpringMVC 如何實(shí)現(xiàn)一個(gè)攔截器功能,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:SpringMVC如何實(shí)現(xiàn)一個(gè)攔截器功能
網(wǎng)頁(yè)地址:http://www.chinadenli.net/article32/gjoppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、App設(shè)計(jì)、軟件開(kāi)發(fā)、自適應(yīng)網(wǎng)站、商城網(wǎng)站、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)