資源描述:
《JavaEE08Filter過濾器》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、JavaEE第8章Filter過濾器FilterFilter是對HTTP請求和響應(yīng)的頭(Header)和體(Body)進(jìn)行特殊操作的Web組件.Filter本身不生成Web響應(yīng),只對Web的請求和響應(yīng)做過濾處理。Filter的主要用途對HTTP請求作分析,對輸入流進(jìn)行預(yù)處理。阻止請求或響應(yīng)的進(jìn)行。根據(jù)需求改動請求頭的信息和數(shù)據(jù)體。根據(jù)需求改動響應(yīng)的頭(Header)和體(Body)數(shù)據(jù)。與其他Web資源進(jìn)行協(xié)作過濾器的主要應(yīng)用案例安全保護(hù)。日志記錄。字符編碼轉(zhuǎn)換。圖像轉(zhuǎn)換。過濾器的編程實(shí)現(xiàn)javax.servlet.Filter接口。實(shí)現(xiàn)publicvoiddo
2、Filter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)方法。在doFilter()方法中編寫過濾代碼。Filter例子代碼publicclassCharEncodingFilterimplementsFilter{privateFilterConfigconfig=null;privateStringcontentType=null;privateStringcode=null;publicvoiddoFilter(ServletRequestreq,ServletRespon
3、seres,FilterChainchain)throwsIOException,ServletException{HttpServletRequestrequest=(HttpServletRequest)req;if(request.getContentType().equals(contentType)){request.setCharacterEncoding(code);}chain.doFilter(req,res);}}Filter的doFilter()方法此方法在每次過濾被激活時被調(diào)用。此方法代碼完成過濾器的操作功能。如果是HTTP請求,需要強(qiáng)轉(zhuǎn)
4、為HttpServletRequest和HttpServletResponse.過濾器的請求和響應(yīng)對象會被傳遞到被過濾的JSP或Servlet。可以通過對request對象操作,在Servlet之前修改請求對象的信息。通過response對象操作,在Servlet響應(yīng)之前修改響應(yīng)信息。Filter的init()方法在初始化方法init中可以取得FilterConfig對象,通過此對象可以取得過濾器配置的初始參數(shù),打開到外部資源的連接等,完成過濾器的初始化任務(wù)。publicvoidinit(FilterConfigconfig)throwsServletExcep
5、tion{}該方法傳入FilterConfig類型對象,可以得到FilterConfig實(shí)例,供過濾器中其他方法使用,通過FilterConfig對象可以得到過濾器配置的初始化參數(shù)。Filter的destory()方法在destroy()方法中編寫資源清理工作,如關(guān)閉數(shù)據(jù)庫連接,關(guān)閉I/O流對象,清除ServletContext等共享對象中保存的無用屬性等。該方法在Web容器銷毀過濾器之前被自動調(diào)用,昭示過濾器生命周期的終結(jié)。Filter配置:聲明過濾器功能:指示W(wǎng)eb容器過濾器的存在。位置:/WEB-INF/web.xml聲明語法:6、r-name>LoginCheck包名.類名
Filter配置:過濾器映射功能:設(shè)置過濾地址位置:/WEB-INF/web.xml文件語法:過濾器名過濾地址過濾器過濾地址格式絕對地址/admin/main.do匹配地址/admin/*匹配地址*.do安全過濾的例子//驗(yàn)證用戶是否登錄。pub
7、licvoiddoFilter(ServletRequestrequest,….){HttpServletRequestreq=(HttpServletRequest)request;HttpSessionsession=req.getSession();StringuserId=(String)session.getAttribute(“userId”);if(userId==null){res.sendRedirect(“/web01/login.jsp);}else{chain.doFilter(request,response);}}過濾器對象的生命周期
8、創(chuàng)建階段(2)初始化階段