一、在MyEclipse中定义filter
只要在新建普通类时让它实现Filter接口就可以了。然后IDE会自动导入相关必须的类(还挺多的),而且一般会生成3个方法:
一般只需要在doFilter方法体内编写相关代码就行。
二、已登陆验证
除了首页外,只有用户成功登陆后才能进入其他页面。为了防止用户通过在浏览器地址栏输入地址非法进入这些页面,可以定义一个filter,当进入这些页面时,检查session的相关属性是否存在。只要客户浏览器没有关闭,session对象会一直保持,只要其中的属性没有被更改,将会一直保持。
在LoginFilter的doFilter方法体内编写如下代码:
26、27行将请求与响应对象强制转换为Http...类型。
29行获取网址中最后一个"/"之后的内容,也就是实际进入的页面文件名。
32行出现的LoginServlet是用来验证登陆、注销以及密码修改这三个操作的。要执行哪一个操作可以使用request的action属性来判断。因此,只要都不是这些操作,就可以确认是非法进入,强制跳转到首页中——有漏洞,应该还要判定该用户是否已经成功登陆。
43行的分支是对其他页面的验证,这些页面是只有登陆成功的用户才能进入的。
三、在web.xml中配置
因为进行身份验证的Filter的实现逻辑类似,故不再阐述。
配置格式如下:
这里定义了两个Filter,定义顺序应该决定执行顺序吧。
然后还要配置该Filter对哪些页面起作用
这三个filter-mapping的不同之处仅在于url-pattern这里,貌似没有方法一次过写上三个路径,所以这里只要分三个来写了。