文档详情

java filter简单使用.doc

发布:2017-08-01约7.42万字共11页下载文档
文本预览下载声明
Java filter 过滤器Filter也具有生命周期:init()-doFilter()-destroy(),由部署文件中的filter元素驱动。在 servlet2.4中,过滤器同样可以用于请求分派器,但须在web.xml中声明,dispatcherINCLUDE或 FORWARD或REQUEST或ERROR/dispatcher该元素位于filter-mapping中。 一、批量设置请求编码 public class EncodingFilter implements Filter { private String encoding = null; public void destroy() { encoding = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String encoding = getEncoding(); if (encoding == null){ encoding = gb2312; } request.setCharacterEncoding(encoding);// 在请求里设置上指定的编码 chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.encoding = filterConfig.getInitParameter(encoding); } private String getEncoding() { return this.encoding; } } Xml代码 filter filter-nameEncodingFilter/filter-name filter-classcom.logcd.filter.EncodingFilter/filter-class init-param param-nameencoding/param-name param-valuegb2312/param-value /init-param /filter filter-mapping filter-nameEncodingFilter/filter-name url-pattern/*/url-pattern /filter-mapping 二、用filter控制用户访问权限 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res = (HttpServletResponse) response; HttpSession session = req.getSession(); if (session.getAttribute(username) != null) {//登录后才能访问 chain.doFilter(request, response); } else { res.sendRedirect(../failure.jsp); } } Xml代码 filter filter-nameSecurityFilter/filter-name filter-classcom.logcd.filter.SecurityFilter/filter-class /filter filter-mapping filter-nameSecurityFilter/filter-name url-pattern/admin/*/url-pattern /filter-mapping 三、过滤链 两个过滤器,EncodingFilter负责设置编码,SecurityFilter负责控制权限,服务器会按照web.xml中过滤器定义的先后循序 组装成一条链,然后一次执行
显示全部
相似文档