JSP过滤器、Session监听器、Servlet控制器的关系和执行顺序


1、首先配置好过滤器和监听器,访问index.jsp页面
(在index.jsp中设置session的Attribute属性、session的失效时间,查看的顺序是什么?);

1、运行Tomact的结果

  过滤器的初始化方法会在服务器运行的时候执行。

2、进入index.jsp页面的结果

  这个时没有在index中使用session.setAttribute();

  根据该图片可以看出来,我们在执行打开一个网页的时候就是创建了一个会话。

3、这个时候我们再加入session.setAttribute()的方法,并且设置session失效时间;

  首先显示的时我们的session创新成功,调用了create的方法。

在设置30秒失效后:

等待30秒,session失效:

这样我们可以看到Session的销毁,会调用destroyed的方法。同时会移除我们之前设置的Session属性。

4、还有一种情况Session的Add方法不会执行:

  修改后,此时我们再次刷新页面发现只有session创建成功,并没有session添加成功的信息显示,这是为什么呢?。

5、session设置的值为空(null)时:

之所以没有调用Add的方法,就是因为我们的设置值为空,所以系统并不会特意的去调用Add方法添加一个空值;

6、哪如果我们重复设置一个session属性会怎么样呢?

我重复刷新了访问了3次页面,第一个是添加session,第二次是替换了原来的session,第三次也是替换。

并且可以看出来每次页面的访问都会调用过滤器。

7、这时我们再点index,jsp页面上的跳转按钮跳转到servlet控制页面:

这时候可以看到我们的servlet首先执行的是init初始化方法,让后执行的是过滤器(这里有必要说明以下,servlet其实也是一个页面,只是他是一个不可见的页面,在访问时同样会调用过滤器。)然后系统会根据我们提交的方法执行doGet或者时doPost方法;

8、这时候我们再此点击index.jsp中的servlet按钮:

  init初始化方法并没有再执行,也就是说我们的初始话方法只会在第一次运用到页面的时候执行一次。

总结:在以上一系列实验中可以看出来,过滤器>监听器>Servlet控制器。

此上都为个人实验所得结果,如果有什么不对的地方希望能得到大家的指正,万分感谢。