SSM项目配置 拦截器 #私藏项目实操分享#

Posted 梁云亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM项目配置 拦截器 #私藏项目实操分享#相关的知识,希望对你有一定的参考价值。

第一步:编写一个拦截器(登录拦截器)

@Slf4j
public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String requestURI = request.getRequestURI();
        log.info("被拦截的请求有:{}",requestURI);

        //通过session,拿到用户登录信息
        HttpSession session = request.getSession();
        final Object userObj = session.getAttribute(ProjShow.USER_SESSION);//获取角色属性

        if (userObj != null) {
            //如果已经登录,不拦截
            return true;
        } else {
            //如果没有登录,打开登录页面
            response.sendRedirect(request.getContextPath() + "/login.jsp");
            return false;
        }
    }
}

第二步:在springmvc配置文件中对第一步中创建的拦截器进行配置

<mvc:interceptors>
    <mvc:interceptor>
        <!-- 拦截所有mvc控制器 -->
        <mvc:mapping path="/**"/>
        <!-- mvc:exclude-mapping是另外一种拦截,它可以在你后来的测试中对某个页面进行不拦截,这样就不用在
               LoginInterceptor的preHandler方法里面获取不拦截的请求uri地址了(优选) -->
        <mvc:exclude-mapping path="/" />
        <mvc:exclude-mapping path="/index.jsp" />
        <mvc:exclude-mapping path="/regist.jsp" />
        <mvc:exclude-mapping path="/login.jsp" />
        <mvc:exclude-mapping path="/account/**" />

        <bean class="com.hc.interceptor.LoginInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

第三步:在web.xml中指定使用默认的servlet对静态资源进行拦截

<!--  放行静态资源 ,配合SpringMVC拦截器使用-->
<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.js</url-pattern>
    <url-pattern>*.css</url-pattern>
</servlet-mapping>

经过以上三步,ssm中的拦截器就创建成功了

附:过滤器与拦截器的区别:

  • 过滤器

    • servlet规范中的一部分,任何java web工程都可以使用
    • 在url-pattern中配置了/*之后,可以对所有要访问的资源进行拦截
  • 拦截器
    • 拦截器是AOP思想的具体应用。
    • 拦截器是springMVC框架自己的,只有使用了SpringMVC框架的工程才能使
    • 拦截器只会拦截访问的控制器方法,如果访问的是jsp/html/css/image/js是不会进行拦截

以上是关于SSM项目配置 拦截器 #私藏项目实操分享#的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# Mybatis自定义拦截器与插件开发

11.22-11.28博客精彩回顾

PassJava 开源 : Spring Cloud 整合 Nacos 配置中心 #私藏项目实操分享#

Docker基础:安装Redis Cluster服务 #私藏项目实操分享#

openstack的命令行管理#私藏项目实操分享#

#私藏项目实操分享# SpringCloud Alibaba Sentinel使用及规则配置