完成一個項目時,有些頁面是需要帶用戶權限的。比如購物類的要先登錄才能查看訂單。。。
在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,如果不可以則可以跳轉到相應頁面。