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,如果不可以则可以跳转到相应页面。

猜你喜欢

转载自blog.csdn.net/qq_41876436/article/details/80976589