过滤器是服务器安全的重要手段之一是保护服务器资源被无权限访问的主要手段。
在doFilter中使用
* //设置请求编码格式
request.setCharacterEncoding("utf-8");
//设置响应编码格式
response.setContentType("text/html;charset=utf-8");
Filter案例之session管理
在过滤器中获取session对象,然后查看session中的数据是否还在
如果数据没了,则因为session失效则重定向到登录页面。如果数据还在
session没有失效,则放行
问题1:
在过滤器中使用session校验后发现登录页面的访问成了死循环,因为登录页面的
请求也就是login.jsp的请求也会被过滤器拦截,而此时session中没有相关数据的
造成又重定向到登录页面......
解决1:
对login.jsp和登录请求进行放行
问题2:
过滤器会拦截所有的请求,包括静态资源(css文件js文件image图片)请求也会拦截。
造成页面中的样式和动态效果等出不来
解决2:
对静态资源放行
Filter案例之权限管理
需求:
不同的用户在对同一功能使用时,有的用户可以直接使用,有的用户会被提示权限不足。
思路:
1、在数据库中创建一个URL权限表,该表存储了该系统需要被管理的URL。
2、在数据库中创建用户权限中间表,用来进行权限分配
3、在数据库中将权限给用户分配好
4、在用户登录成功后查询该用户具备的URL权限,存储到该用户的session中
5、在过滤器中对当前发起请求的用户的请求地址进行校验,校验该用户是否具备该请求地址的
权限,如果具备则放行执行,如果不具备则提示权限不足。
数据库设计:
URL权限表:t_url
编号: urlid
url地址 :location
描述:remark
用户权限中间表:t_user_url
uid
urlid
SQL语句的设计:查询当前登录用户的url信息
子查询:
select * from t_url where urlid in (select urlid from t_user_url where uid=8)
联合查询:
select * from t_url tu,t_user_url tul where tu.urlid=tul.urlid and tul.uid=8
注释的使用
@WebFilter(filterName = "MyFilter",urlPatterns = "/*")
public