基于注解,HandlerInterceptorAdapter 拦截器

基于注解,HandlerInterceptorAdapter 拦截器

第一步:自定义注解

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AccessRequired {

}


第二步:创建拦截器类


import java.lang.reflect.Method;

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

import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.zhangchu.chat.commen.annotation.AccessRequired;
import com.zhangchu.chat.domain.Employee;
import com.zhangchu.chat.utils.SessionUtil;

public class EmployeeLoginInterceptor extends HandlerInterceptorAdapter{
    public boolean preHandle(HttpServletRequest request,
        HttpServletResponse response, Object handler) throws Exception {
        HandlerMethod handlerMethod = (HandlerMethod) handler;
        Method method = handlerMethod.getMethod();
        AccessRequired annotation = method.getAnnotation(AccessRequired.class);
        if (annotation != null) {
            Employee employee = (Employee) SessionUtil.getAttribute("employee");
            if(employee==null||employee.getUsername()==null){
                //跳转到登陆界面
                response.sendRedirect(request.getContextPath()+"/empLogin/LoginEmpUI");
            }
        }
        // 没有注解通过拦截
        return true;
    }
}

第三步:配置拦截器

<mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/chat/UI"/> <!-- 被拦截的目录 这里指定到特定的controller-->
        <bean class="com.zhangchu.chat.controller.EmployeeLoginInterceptor"></bean>
        </mvc:interceptor>
</mvc:interceptors>

实现如下

@Controller
@RequestMapping("/chat")
public class ChatController {
    @RequestMapping("UI")
    @AccessRequired
    public String UI(HttpServletRequest request){
    }
}

这样 如果访问chat/UI 会被拦截器拦截,如果session域中取不到指定的东东话, 就会跳转到登录界面

在登录控制里面 登录成功以后 向session域中添加指定类

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值