完成一个项目时,有些页面是需要带用户权限的。比如购物类的要先登录才能查看订单。。。
在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,如果不可以则可以跳转到相应页面。