b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

jsp文件 Spring MVC(Interceptor )详解(2)

电脑杂谈  发布时间:2018-01-11 01:08:38  来源:网络整理

在控制台输出 test.jsp

(5、启动服务器测试

控制台输出:

到此一个正常流程的演示完毕。和图5-1一样,接下来看一下中断的流程。

(1、

HandlerInterceptor3和HandlerInterceptor4 与 之前的 HandlerInteceptor1和HandlerInterceptor2一样,只是在HandlerInterceptor4的preHandle方法返回false:

(2、控制器

流程中断不会执行到控制器,使用之前的TestController控制器。

(3、Spring配置文件chapter5-servlet.xml

interceptors:指定链,的执行顺序就是此处添加的顺序;

(4、视图页面

流程中断,不会执行到视图渲染。

(5、启动服务器测试

jsp格式文件怎么打开_jsp文件例子_jsp文件

控制台输出:

此处我们可以看到只有HandlerInterceptor3的afterCompletion执行,否和图5-2的中断流程。jsp文件

而且页面上会显示我们在HandlerInterceptor4 preHandle 直接写出的响应“break”。

如记录一下请求的处理时间,得到一些慢请求(如处理时间超过500毫秒),从而进行性能改进,一般的反向代理服务器如apache都具有这个功能,但此处我们演示一下使用怎么实现。

实现分析:

1、在进入处理器之前记录开始时间,即在的preHandle记录开始时间;

2、在结束请求处理之后记录结束时间,即在的afterCompletion记录结束实现,并用结束时间-开始时间得到这次请求的处理时间。

问题:

我们的是单例,因此不管用户请求多少次都只有一个实现,即线程不安全,那我们应该怎么记录时间呢?

解决方案是使用ThreadLocal,它是线程绑定的变量,提供线程局部变量(一个线程一个ThreadLocal,A线程的ThreadLocal只能看到A线程的ThreadLocal,不能看到B线程的ThreadLocal)。

代码实现:

NamedThreadLocal:Spring提供的一个命名的ThreadLocal实现。

在测试时需要把stopWatchHandlerInterceptor放在链的第一个,这样得到的时间才是比较准确的。

在访问某些资源时(如订单页面),需要用户登录后才能查看,因此需要进行登录检测。

流程:

1、访问需要登录的资源时,由重定向到登录页面;

2、如果访问的是登录页面,不应该拦截;

3、用户登录成功后,往cookie/session添加登录成功的标识(如用户编号);

4、下次请求时,通过判断cookie/session中是否有该标识来决定继续流程还是到登录页面;

5、在此还应该允许游客访问的资源。

代码如下所示:

提示:推荐能使用servlet规范中的过滤器Filter实现的功能就用Filter实现,因为HandlerInteceptor只有在Spring Web MVC环境下才能使用,因此Filter是最通用的、最先应该使用的。如登录这种最好使用Filter来实现。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-59678-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 朱载垕
      朱载垕

      我知道我知道我昨天就把高清图都存下来了

    • 晋昭侯姬伯
      晋昭侯姬伯

      一是少数民族封建统治

    • 植原卓也
      植原卓也

      我真不知道现在的教育到底是怎样的

    每日福利
    热点图片
    拼命载入中...