基于注解,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域中添加指定类
相关文章推荐
- 架构师速成4.8-幼儿园书单资料推荐
- 架构师速成4.8-幼儿园书单资料推荐 分类: 架构师速成 2015-07-18 11:03 248人阅读 评论(0) 收藏
- (简单) POJ 2406 Power Strings,扩展KMP。
- commons-fileupload 文件上传进度条
- 122 ehcache memcache redis 三大缓
- IE浏览器版本测试方法
- Cpp的Virtual函数不能只声明不定义
- Linux常用命令
- 蛇形填数
- 分数加减法
- egret GUI 和 egret Wing 是我看到h5 最渣的设计
- bzoj1185
- Project facet Java version 1.7 is not supported
- JS call与apply
- 应用系统开发--银行系统
- CODE[VS] 1154 能量项链
- linux设备驱动之总线、设备、驱动
- 尼科彻斯定理
- CODE[VS] 1154 能量项链
- Hibernate问题BeanValidation