spirngmvc--攔截器

完成一個項目時,有些頁面是需要帶用戶權限的。比如購物類的要先登錄才能查看訂單。。。
在springmvc中我們可以配置pom.xml文件來進行一個.do的攔截
1.pom.xml文件內容的追加,寫在中

<!-- springmvc 攔截 -->
<mvc:interceptors>
    <mvc:interceptor>
        <!-- * 代表攔截所有 product 下面的地址-->
        <mvc:mapping path="/product/*" />

        <!-- exclude-mapping 排除這樣的接口 -->
        <mvc:exclude-mapping path="/product/login.do" />
        <mvc:exclude-mapping path="/product/detail.html" />

        <!-- 攔截器類的所在包路徑 -->
        <bean class="com.yc.interceptor.ProductInterceptor" />

    </mvc:interceptor>
</mvc:interceptors>

2.編寫ProductInterceptor.java攔截器

package com.yc.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class ProductInterceptor extends HandlerInterceptorAdapter {

    // 在所有被攔截的方法前,都會調用
    @Override
    public boolean preHandle(HttpServletRequest request,
            HttpServletResponse response, Object handler) throws Exception {

        //當前請求的服務地址,這裏用於查看攔截了哪個接口
        String str = request.getServletPath();

        System.out.println("path:" + str);
        System.out.println("進入到攔截器");

        return true;
    }
}

3.ProductController.java文件的測試

package com.yc.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller // 說明當前是1個控制器對象
@RequestMapping(value = "/product") // 地址

public class ProductController {

    @RequestMapping(value = "/gouwuche")
    public String gouwuche() {
        return "/ProductInfo.html";
    }
}

4.結果測試
在瀏覽器中進入gouwuche.do這個接口可以發現進入了攔截器
這裏寫圖片描述
5.解釋說明
在pom.xml文件配置中,攔截了所有/product/中的接口,其中只允許通過了login.do和detail.html兩個(瀏覽器進入login.do和detail.html時不會在控制中打印),所以訪問其他頁面和接口時,會進入攔截器中,那我們便可以在攔截器中得到session對象判斷用戶是否能進行下一步操作,如果可以則返回true,如果不可以則可以跳轉到相應頁面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章