发表于: 2017-07-07 14:37:38

1 1017


今天完成的:

Task5大部分

收获:

SpringMVC拦截器
常见应用场景
1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。
2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;
3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);
4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。
5、OpenSessionInView:如Hibernate,在进入处理器打开Session,在完成后关闭Session。
其本质也是AOP(面向切面编程),也就是说符合横切关注点的所有功能都可以放入拦截器实现。

使用MVC的拦截器可以实现handlerInterceptor接口,或继承其实现类handlerInterceptor。抑或实现WebRequestInterceptor 接

接口方法:
preHandle:预处理回调方法,实现处理器的预处理(如登录检查)
postHandle:后处理回调方法,实现处理器的后处理(但在渲染视图之前),此时我们可以通过modelAndView(模型和视图对象)对模型数据进行处理或对视图进行处理,modelAndView也可能为null。
afterCompletion:整个请求处理完毕回调方法,即在视图渲染完毕时回调,如性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally
如果实现HandlerInterceptor接口的话,三个方法必须实现,不管你需不需要,此时spring提供了一个HandlerInterceptorAdapter适配器(一种适配器设计模式的实现),允许我们只实现需要的回调方法。

具体的工作流程和代码明天完成Task5再贴.

遇到的问题:

1.Task5我理解错了,既需要验证用户能否成功登陆,又要做一个通过cookie/session自动登录的功能。

2.DES加密除了很麻烦的问题,加密后生成的特殊字符不符合cookie格式,无法存放到cookie里,编码为utf8之后可以放进cookie里,但会报异常。。。目前没法解决,只好换des加密的代码。我发现我好像每一天都会遇到一个很麻烦的bug。

明天的计划:

完成Task5,Task6做一点然后开始复习。


返回列表 返回列表
评论

    分享到