spring拦截器配置

在学习java的过程中,遇到很多的问题,通过百度各个大牛的博客,最终都解决了,分享出来,供大家参考,也避免自己下次忘记在四处查阅,有说的不对的地方请谅解,并加以更正谢谢各位!

springmvc中拦截器的配置

1.定义一个拦截器

package com.heitian.ssm.intercept;

import com.heitian.ssm.model.User;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

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

/**
 * Created by Administrator on 2016/12/21.
 */
public class LoginInterceptorAdapter extends HandlerInterceptorAdapter{
    public String[] login ;//注入springmvc中配置的值,不进行拦截

    public String[] getLogin() {
        return login;
    }

    public void setLogin(String[] login) {
        this.login = login;
    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       boolean flag=false;
        String url=request.getRequestURI().toString();
        //添加判断是否拦截的条件
        for (String str:login){
            if (url.contains(str)){
                flag=true;
                break;
            }
        }
        //判断是否拦截
        if (!flag){
            //获取session存储的users
            User user=(User)request.getSession().getAttribute("users");
            if (user !=null){
                flag=true;
            }else{
                response.sendRedirect("/webssm/login.jsp");
            }
        }

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

    }
}

2.springmvc中配置注入

<mvc:interceptors>
        <!-- session超时 -->
        <mvc:interceptor>
            <mvc:mapping path="/*/*"/>//这里配置的所有路径,可按需更改
            <bean class="com.heitian.ssm.intercept.LoginInterceptorAdapter">
                <property name="login">
                    <list>
                        <!-- 如果请求中包含以下路径,则不进行拦截 -->
                        <value>/login</value>
                        <value>/js</value>
                        <value>/css</value>
                        <value>/image</value>
                        <value>/images</value>
                    </list>
                </property>
            </bean>
        </mvc:interceptor>
    </mvc:interceptors>

3.web.xml中配置
    <!-- spring mvc servlet-->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <!--1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

        2)它的值必须是一个整数,表示servlet应该被载入的顺序

        2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

        3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

        4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

        5)当值相同时,容器就会自己选择顺序来加载。

        所以,<load-on-startup>x</load-on-startup>,中x的取值1,2,3,4,5代表的是优先级,而非启动延迟时间。-->
        <async-supported>true</async-supported><!--是否异步-->
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 此处也可以配置成 *.do 形式 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值