欢迎来到天天文库
浏览记录
ID:15401844
大小:31.00 KB
页数:7页
时间:2018-08-03
《filter的用法总结》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Filter的用法总结Filter的用法总结Filter是Web编程里一把利器,它本质上就是一个拦截器,但实际应用中很灵活,用途也很广,下面是本人在开发中对filter应用的一个小结:1)转换字符编码中文网页编码常用的就是gb2312或是UTF-8,但TOMCAT会默认用编码iso-8859-1,所以需要把所有经过TOMCAT的中文字符进行转换,如果手动在request里改很麻烦,可以用一个filter对所有的request进行拦截,进行编码转换,一劳永逸2)管理Hibernate的session在Web里用Hibernate常常是把session绑定到线程
2、,但往往要求一个session在一个请求的活动中都有效,这样可以保证同一活动中能共享lazybean。用filter能到达这个目的,在doFilter之前绑定session到线程,在doFilter后关闭session,这样既可以保证session不会泄漏,也能让lazybean在同一请求周期里共享3)做权限审查在web层里需要对很多资源进行逻辑类似的安全保障,通过filter可以在调用这些资源前加上一个屏障,这样既可以把安全代码和逻辑代码相分离,也可以很好的reuse这些安全模块4)做cache在web层常常需要对一些请求返回进行缓存,这样可以有效的减轻服
3、务器的压力,filter可以对请求进行拦截,查询缓存,若有效则直接返回缓存内容,若无效则进行实际的服务器请求,返回给用户,并对缓存进行更新,以备下次请求5)做拦截器的代理有的时候需要把一些拦截器用到web层,filter可以很好地充当代理的角色,比如可以在Spring里做好拦截器的Bean,再通过filter把这些Bean和相应的web请求桥接起来。6)过滤特殊字符有时需要过滤特殊字符,比如防止sql注入,Filter可以很好达到这个目的doFilter(ServletRequestrequest,ServletResponseresponse,Filter
4、Chainnext)throwsIOException,ServletException{HttpServletRequestreq=(HttpServletRequest)request;HttpServletResponseresp=(HttpServletResponse)response;HttpSessionsession=req.getSession();Stringrequesturi=req.getRequestURI();if(requesturi.endsWith("css")
5、
6、requesturi.endsWith("js")
7、
8、re
9、questuri.endsWith("login.jsp")
10、
11、requesturi.endsWith("login.action")
12、
13、requesturi.endsWith("Logout.action")
14、
15、session.getAttribute(Constants.USER_KEY)!=null){next.doFilter(request,response);}elseif(session.getAttribute(Constants.USER_KEY)==null){resp.sendRedirect("/PowerGrid/login.jsp
16、");}众所周知,如果没有对页面进行权限控制,用户只要输入URL就能进入任何页面。下面就演示一下最基本的使用Fiter来控制页面的权限。1.写一个FILTER,用来判断用户是否有权限进入指定页面。java代码1importjava.io.IOException;23importjavax.servlet.Filter;4importjavax.servlet.FilterChain;5importjavax.servlet.FilterConfig;6importjavax.servlet.ServletException;7importjavax.serv
17、let.ServletRequest;8importjavax.servlet.ServletResponse;9importjavax.servlet.http.HttpServlet;10importjavax.servlet.http.HttpServletRequest;11importjavax.servlet.http.HttpServletResponse;12importjavax.servlet.http.HttpSession;1314importorg.apache.log4j.Logger;1516importcom.kiral.ac
18、tion.UserAction;17importco
此文档下载收益归作者所有