概念

单实例的

如图所示,filter由Servlet容器加载web应用时创建并调用init(FilterConfig filterConfig),所以它是单实例的。注意普通Servlet的实例是在第一次访问时才由Servlet容器创建。 DoFilter((ServletRequest request, ServletResponse response, FilterChain chain)则在拦截的资源每次被请求时才执行。

登录

添加一个过滤器过滤某一部分资源,检查session中是否存在user;如果存在则放行,否则跳转登录页。 在登录页填写信息进入登录Servlet,将登陆信息存储在session中。

自动登录

选中自动登录,在Login这一Servlet中检查是否勾选了自动登录;如果勾选,则设置Cookie的有效时间,且将用户信息以字符串的形式存储到Cookie中。在检查登录过滤器前新增自动登录过滤器,检查是否存在Aotologin的cookie,如果有则取出cookie值中的用户信息并且存储到session中;这样在检查登录过滤器中就会检查到用户信息放行。

退出

Logout这一Servlet中,循环检索到Autologin的cookie,设置其值为null和有效时间为不大于0的值,然后跳转到首页。