您的位置:首页 > 其它

基于注解,HandlerInterceptorAdapter 拦截器

2015-07-18 11:03 295 查看

基于注解,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域中添加指定类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: