欢迎来到天天文库
浏览记录
ID:38208799
大小:295.85 KB
页数:5页
时间:2019-05-27
《filter过滤器的使用》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、filter功能.它使用户可以改变一个request和修改一个response.Filter不是一个servlet,它不能产生一个response,它能够在一个request到达servlet之前预处理request,也可以在离开servlet时处理response.换种说法,filter其实是一个”servletchaining”(servlet链).一个filter包括:1.在servlet被调用之前截获;2.在servlet被调用之前检查servletrequest;3.根据需要修改request头和request数据;4.根据需要修改respo
2、nse头和response数据;5.在servlet被调用之后截获.通俗点说法filter相当于加油站,request是条路,response是条路,目的地是servlet,这个加油站设在什么地方对什么数据操作可以由你来控制。一些需要过滤器的情况:(1)认证Filter(2)日志和审核Filter(3)图片转换Filter(4)数据压缩Filter(5)密码Filter(6)令牌Filter(7)触发资源访问事件的Filter(8)XSLTFilter(9)媒体类型链Filter1.批量设置请求编码为了避免提交数据的中文乱码问题,需要在每次使用请求之前
3、设置request.setCharacterEncoding("gb2312")编码格式,麻烦。Filter可以批量拦截修改servlet的请求和响应。我们编写一个EncodingFilter.java,来批量设置请求编码。publicclassEncodingFilterimplementsFilter{publicvoidinit(FilterConfigconfig)throwsServletException{}publicvoiddestroy(){}publicvoiddoFilter(ServletRequestrequest,Servl
4、etResponseresponse,FilterChainchain)throwsIOException,ServletException{request.setCharacterEncoding("gb2312");chain.doFilter(request,response);}}在此EncodingFilter实现了Filter接口,Filter接口中定义的三个方法都要在EncodingFilter中实现,其中doFilter()的代码实现主要的功能:为请求设置gb2312编码并执行chain.doFilter()继续下面的操作。转换成对应H
5、ttpServletRequest和HttpServletResponse才能进行下面的session操作和页面重定向。与servlet相似,为了让filter发挥作用还需要在web.xml进行配置。EncodingFiltersam.EncodingFilterEncodingFilter/*
6、url-pattern>filter标签部分定义使用的过滤器,filter-mapping标签告诉服务器把哪些请求交给过滤器处理。这里的/*表示所有请求,/表示根路径,*(星号)代表所有请求,加在一起就变成了根路径下的所有请求。这样,所有的请求都会先被EncodingFilter拦截,并在请求里设置上指定的gb2312编码。2.用filter控制用户访问权限出于信息安全和其他一些原因的考虑,项目中的一些页面要求用户满足了一定条件之后才能访问让用户输入帐号和密码,如果输入的信息正确就在session里做一个成功的标记,这
7、里的成功标志就是session中的username有值;其后在请求保密信息的时候判断session中是否有已经登录成功的标记,存在则可以访问,不存在则禁止访问。假设我们要保护的页面是admin/index.jsp编写SecurityFilter.java,控制用户访问权限publicclassSecurityFilterimplementsFilter{publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,S
8、ervletException{HttpServletRequestreq=(HttpServ
此文档下载收益归作者所有