登录网站定制百度信息流广告
登录网站定制,百度信息流广告,wordpress多用户商城,类似一起做网店的网站1.url-pattern#xff1a;Filter的拦截路径#xff0c;即浏览器在请求什么位置的资源时#xff0c;过滤器会进行拦截
2.精准匹配url-pattern/a.jsp/url-pattern对应的请求地址#xff1a;http://ip[域名]:port/工程路径/a.jsp会拦截
3.目录匹配url-p…1.url-patternFilter的拦截路径即浏览器在请求什么位置的资源时过滤器会进行拦截
2.精准匹配url-pattern/a.jsp/url-pattern对应的请求地址http://ip[域名]:port/工程路径/a.jsp会拦截
3.目录匹配url-pattern/manage/*/url-pattern对应的请求地址http://ip[域名]:port/工程路径/manage/xx,即web工程manage目录下所有的资源都会拦截
4.后缀名匹配
!--
url-pattern*.jsp/url-pattern后缀可改变比如*.action *.do等等对应的请求
--
5.Filter过滤器只关心请求的地址是否匹配不关心请求的资源是否存在
Filter的生命周期
图解 注意
1.filter在web项目启动时由tomcat来创建filter实例只会创建一个
2.会调用filter的无参构造器同时会调用init()方法只会调用一次
3.在创建filter实例时同时会创建FilterConfig对象并通过init()方法传入
4.通过FilterConfig对象可以获取该filter的相关配置信息
5.当一个http请求和该filter的url-patter匹配时就会调用doFilter方法
6.在调用doFilter方法时tomcat会同时创建 servletRequest对象 和 servletResponse对象 和 filterChain对象并通过doFilter方法传入
7.如果后面的请求目标资源(jsp/html...)会使用到request和response 那么会继续传递
FilterConfig
说明
1.FilterConfig时Filter过滤器的配置类
2.Tomcat每次创建FIlter的时候也会创建一个FilterConfig对象这里包含了Filter配置文件的配置信息
3.FilterConfig对象作用是获取filter过滤器的配置内容
FilterConfig的使用
package com.filter;import javax.servlet.*;
import java.io.IOException;
import java.util.Enumeration;/*** 演示FilterConfig的使用*/
public class FilterConfigTest implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {//通过filterConfig 获取相关的参数String filterName filterConfig.getFilterName();String ip filterConfig.getInitParameter(ip);ServletContext servletContext filterConfig.getServletContext();//可以获取到该filter所有的配置参数名EnumerationString initParameterNames filterConfig.getInitParameterNames();//遍历枚举while (initParameterNames.hasMoreElements()){System.out.println(名字initParameterNames.nextElement());}System.out.println(FilterName filterName);System.out.println(ip ip);System.out.println(servletContext servletContext);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {}Overridepublic void destroy() {}
}
web.xml文件中配置的相关信息,IP等参数根据需求来写 filterfilter-nameFilterConfigTest/filter-namefilter-classcom.filter.FilterConfigTest/filter-classinit-paramparam-nameid/param-nameparam-value168.16.15.13/param-value/init-paraminit-paramparam-nameport/param-nameparam-value8989/param-value/init-param/filterfilter-mappingfilter-nameFilterConfigTest/filter-nameurl-pattern/abc/*/url-pattern/filter-mapping
测试简单的案例
需求如果访问ip是128.12网段开始的IP地址就返回登录页面也就是ip地址由128.12开头就不允许访问
注意web.xml文件中需要写一个IP然后值为128.12如下
filterfilter-nameFilterConfigTest/filter-namefilter-classcom.filter.FilterConfigTest/filter-classinit-paramparam-nameid/param-nameparam-value128.12/param-value/init-param/filterfilter-mappingfilter-nameFilterConfigTest/filter-nameurl-pattern/abc/*/url-pattern/filter-mapping
public class FilterConfigTest implements Filter {private String ip;Overridepublic void init(FilterConfig filterConfig) throws ServletException {ip filterConfig.getInitParameter(ip);}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {//通过forbidden ip来进行控制//先获取到访问ipString remoteAddr servletRequest.getRemoteAddr();if(remoteAddr.contains(ip)){System.out.println(封杀该网段);servletRequest.getRequestDispatcher(/login.jsp).forward(servletRequest,servletResponse);return;//直接返回}//继续访问目标资源filterChain.doFilter(servletRequest,servletResponse);}Overridepublic void destroy() {}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87969.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!