今天在单位看了一下拦截器和过滤器,有相似也有不同。一下只先浅谈一下自己的理解,至于特别官方的描述以后补充
首先说说过滤器,过滤器是在web.xml里面配置的,然后要实现一个Filter类,里面有三个方法,init,destroy,和doFilter,主要是在doFilter方法里面进行操作
在web.xml里面可以配置那些action要被过滤,一般所有action都会进入doFilter方法,然后在方法里面进行筛选。在doFilter方法里面我们不仅可以判断那些action
可以执行那些不能执行还可以做很多事情,比如说设置国际化本地语言,这里只是把需要设置的语言放到session里面,然后再在统一的拦截器里面调用ServlteActionContext的getSession的setLocale方法设置因为过滤器里面没有action的上下文。还可以判断session是否超时,时时监控用户的状态等等。
再说说拦截器,这里主要说的是身体乳头上2的拦截器,这个需要在struts.xml文件里面进行配置,配置方法不做描述,到时候会做一个例子。拦截器里面有action的上下文
实现国际化的过程
1 先读取配置文件是中文还是英文,这个是在初始化加载的时候就读取好并且放到一个静态变量里面(如何初始化加载:在web.xml里面配置一个listerner就ok了)
2在过滤器里根据实际情况设置好locale并且放到session里面,而且还要添加cookie
3在同一的拦截器里面进行设置。
判断是否超时的过程
1在登陆成功后给session设置一个时长,给那个session呢,ServlteActionContext.getSession过了时间session会自动变成null的。
2在过滤器里面判断session是否为空就可以了
3时监控用户状态
1每次在过滤器里面进行用户信息检查就可以
2具体情况得具体分析
java还可以调用javascript代码,也可以设置cookie
有时间了会补做一个小例子的,现在只是纸上谈兵