当前位置: 首页 > news >正文

整合营销理论福州seo顾问

整合营销理论,福州seo顾问,蚌埠集团网站建设,中国核工业二三建设有限公司待遇Filter(过滤器)简介 Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfigFi…
Filter(过滤器)简介
  • Filter 的基本功能是对 Servlet 容器调用 Servlet 的过程进行拦截,从而在 Servlet 进行响应处理的前后实现一些特殊的功能。
  • 在 Servlet API 中定义了三个接口类来开供开发人员编写 Filter 程序:Filter, FilterChain, FilterConfig
  • Filter 程序是一个实现了 Filter 接口的 Java 类,与 Servlet 程序相似,它由 Servlet 容器进行调用和执行
  • Filter 程序需要在 web.xml 文件中进行注册和设置它所能拦截的资源:Filter 程序可以拦截 Jsp, Servlet, 静态图片文件和静态 html 文件
Filter 的基本工作原理

在这里插入图片描述

  • 当在 web.xml 中注册了一个 Filter 来对某个 Servlet 程序进行拦截处理时,这个 Filter 就成了 Servlet 容器与该 Servlet 程序的通信线路上的一道关卡,该 Filter 可以对 Servlet 容器发送给 Servlet 程序的请求和 Servlet 程序回送给 Servlet 容器的相应进行拦截,可以决定是否将请求继续传递给 Servlet 程序,以及对请求和相应信息是否进行修改
  • 在一个 web 应用程序中可以注册多个 Filter 程序,每个 Filter 程序都可以对一个或一组 Servlet 程序进行拦截。
  • 若有多个 Filter 程序对某个 Servlet 程序的访问过程进行拦截,当针对该 Servlet 的访问请求到达时,web 容器将把这多个 Filter 程序组合成一个 Filter 链(过滤器链)。Filter 链中各个 Filter 的拦截顺序与它们在应用程序的 web.xml 中映射的顺序一致
Filter 接口
  • init(FilterConfig filterConfig)throws ServletException:在 web 应用程序启动时,web 服务器将根据 web.xml 文件中的配置信息来创建每个注册的 Filter 实例对象,并将其保存在服务器的内存中。Web容器创建 Filter 对象实例后,将立即调用该 Filter 对象的 init 方法。Init 方法在 Filter 生命周期中仅执行一次,web 容器在调用 init 方法时,会传递一个包含 Filter 的配置和运行环境的 FilterConfig 对象(FilterConfig的用法和ServletConfig类似)。利用FilterConfig对象可以得到ServletContext对象,以及部署描述符中配置的过滤器的初始化参数。在这个方法中,可以抛出ServletException异常,通知容器该过滤器不能正常工作。
  • destroy():在Web容器卸载 Filter 对象之前被调用。该方法在Filter的生命周期中仅执行一次。在这个方法中,可以释放过滤器使用的资源
  • 与开发Servlet不同的是,Filter接口并没有相应的实现类可供继承,要开发过滤器,只能直接实现Filter接口。
  • doFilter(ServletRequest request,ServletResponse response, FilterChain chain)throws java.io.IOException,ServletException:
    doFilter()方法类似于Servlet接口的service()方法。当客户端请求目标资源的时候,容器就会调用与这个目标资源相关联的过滤器的doFilter()方法。其中参数 request, response 为 web 容器或 Filter 链的上一个 Filter 传递过来的请求和相应对象;参数 chain 为代表当前 Filter 链的对象,在特定的操作完成后,可以在当前 Filter 对象的 doFilter 方法内部需要调用 FilterChain 对象的 chain.doFilter(request,response)方法才能把请求交付给 Filter 链中的下一个 Filter 或者目标 Servlet 程序去处理,也可以直接向客户端返回响应信息,或者利用RequestDispatcher的forward()和include()方法,以及HttpServletResponse的sendRedirect()方法将请求转向到其他资源。这个方法的请求和响应参数的类型是ServletRequest和ServletResponse,也就是说,过滤器的使用并不依赖于具体的协议。
FilterChain接口
  • FilterChain接口:代表当前 Filter 链的对象。由容器实现,容器将其实例作为参数传入过滤器对象的doFilter()方法中。过滤器对象使用FilterChain对象调用过滤器链中的下一个过滤器,如果该过滤器是链中最后一个过滤器,那么将调用目标资源。
  • doFilter(ServletRequest request,ServletResponse response)throws java.io.IOException:调用该方法将使过滤器链中的下一个过滤器被调用。如果是最后一个过滤器,会调用目标资源。
FilterConfig 接口
  • javax.servlet.FilterConfig接口:该接口类似于ServletConfig接口,由容器实现。Servlet规范将代表 ServletContext 对象和 Filter 的配置参数信息都封装在该对象中。Servlet 容器将其作为参数传入过滤器对象的init()方法中。
  • String getFilterName():得到描述符中指定的过滤器的名字。
  • String getInitParameter(String name): 返回在部署描述中指定的名字为name的初始化参数的值。如果不存在返回null.
  • Enumeration getInitParameterNames():返回过滤器的所有初始化参数的名字的枚举集合。
  • public ServletContext getServletContext():返回Servlet上下文对象的引用。
过滤器的部署
  • 在实现一个过滤器后,需要在 web.xml 中进行注册和设置它所能拦截的资源。这可以通过和元素来完成的。
  • 元素用于在Web应用程序中注册一个过滤器。
  • 在元素内
    –用于为过滤器指定一个名字,该元素的内容不能为空。
    –元素用于指定过滤器的完整的限定类名。
    –元素用于为过滤器指定初始化参数,它的子元素指定参数的名字,指定参数的值。在过滤器中,可以使用FilterConfig接口对象来访问初始化参数。
<filter><filter-name>testFitler</filter-name><filter-class>com.test.TestFiter</filter-class><init-param><param-name>word_file</param-name> <param-value>/WEB-INF/word.txt</param-value></init-param>
</filter>
映射 Filter
  • 元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径( url样式)
    –子元素用于设置filter的注册名称。该值必须是在元素中声明过的过滤器的名字
    –设置 filter 所拦截的请求路径(过滤器关联的URL样式)
    –指定过滤器所拦截的Servlet名称。
    –指定过滤器所拦截的资源被 Servlet 容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST. 可以设置多个 子元素用来指定 Filter 对资源的多种调用方式进行拦截.
  • 子元素可以设置的值及其意义:
    • –REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,那么该过滤器就不会被调用。
    • –INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
    • –FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,那么该过滤器将被调用,除此之外,该过滤器不会被调用。
    • –ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。
<filter-mapping><filter-name>testFilter</filter-name><url-pattern>/test.jsp</url-pattern>
</filter-mapping><filter-mapping><filter-name>testFilter</filter-name><url-pattern>/index.jsp</url-pattern><dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher>
</filter-mapping>
  • 在同一个 web.xml 文件中可以为同一个 Filter 设置多个映射。若一个 Filter 链中多次出现了同一个 Filter 程序,这个 Filter 程序的拦截处理过程将被多次执行.
filter编写三步骤
  1. 创建filter实现类,实现filter接口
  2. 编写web.xml配置文件,配置filter的信息
  3. 运行项目,可以看到filter起作用了
1、filter实现类
public class MyFirstFilter implements Filter{@Overridepublic void init(FilterConfig filterConfig) throws ServletException {System.out.println("初始化方法");}@Overridepublic void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("dofilter方法");}@Overridepublic void destroy() {System.out.println("销毁方法...");}
}
2、web.xml配置
<filter><filter-name>MyFirstFilter</filter-name><filter-class>com.filter.MyFirstFilter</filter-class>
</filter>
<filter-mapping><filter-name>MyFirstFilter</filter-name><url-pattern>/index.jsp</url-pattern>
</filter-mapping>
3、运行程序,发现index.jsp页面不显示了,后台输出“dofilter方法”,说明我们写的filter执行了。
filter放行请求

刚才的filter配置好后,index.jsp页面没法访问了,访问这个页面的时候filter的dofilter方法被调用了。说明dofilter这个方法拦截了我们的请求。如何将请求放行呢。我们观察发现有个filterChain被传入到这个方法里面了。filterChain里面有个doFilter()方法。放行请求只需要调用filterChain的dofilter方法。

public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {System.out.println("dofilter方法");chain.doFilter(request, response);//放行请求
}

文章转载自:
http://httpd.mnqg.cn
http://miniaturise.mnqg.cn
http://relativize.mnqg.cn
http://gaberlunzie.mnqg.cn
http://maccabean.mnqg.cn
http://gusla.mnqg.cn
http://terga.mnqg.cn
http://halfheartedly.mnqg.cn
http://epigrammatist.mnqg.cn
http://chocolaty.mnqg.cn
http://spongocoel.mnqg.cn
http://roughcast.mnqg.cn
http://collator.mnqg.cn
http://duoplasmatron.mnqg.cn
http://troupial.mnqg.cn
http://inelegantly.mnqg.cn
http://terrorist.mnqg.cn
http://apb.mnqg.cn
http://radioactive.mnqg.cn
http://heraklion.mnqg.cn
http://caballer.mnqg.cn
http://latinise.mnqg.cn
http://tulsa.mnqg.cn
http://lemniscate.mnqg.cn
http://nodi.mnqg.cn
http://designatum.mnqg.cn
http://peristalsis.mnqg.cn
http://vogue.mnqg.cn
http://curr.mnqg.cn
http://cinematics.mnqg.cn
http://reindustrialization.mnqg.cn
http://diffraction.mnqg.cn
http://affirmation.mnqg.cn
http://highstick.mnqg.cn
http://oversell.mnqg.cn
http://subungulate.mnqg.cn
http://polyonymous.mnqg.cn
http://tectogenesis.mnqg.cn
http://enquirer.mnqg.cn
http://anode.mnqg.cn
http://advertent.mnqg.cn
http://anandrous.mnqg.cn
http://undo.mnqg.cn
http://bioactive.mnqg.cn
http://scranton.mnqg.cn
http://chromodynamics.mnqg.cn
http://turbinal.mnqg.cn
http://delight.mnqg.cn
http://screenwiper.mnqg.cn
http://pentagonal.mnqg.cn
http://zarf.mnqg.cn
http://paedomorphism.mnqg.cn
http://stentorian.mnqg.cn
http://latifolious.mnqg.cn
http://reflux.mnqg.cn
http://footstone.mnqg.cn
http://misdescription.mnqg.cn
http://critique.mnqg.cn
http://pome.mnqg.cn
http://hyperoxemia.mnqg.cn
http://markka.mnqg.cn
http://frosted.mnqg.cn
http://supplication.mnqg.cn
http://ept.mnqg.cn
http://viatic.mnqg.cn
http://alee.mnqg.cn
http://incompliant.mnqg.cn
http://saponite.mnqg.cn
http://giver.mnqg.cn
http://grainfield.mnqg.cn
http://rosehead.mnqg.cn
http://manacle.mnqg.cn
http://bardolater.mnqg.cn
http://midnight.mnqg.cn
http://wherewithal.mnqg.cn
http://quirt.mnqg.cn
http://quart.mnqg.cn
http://resonantly.mnqg.cn
http://alissa.mnqg.cn
http://querist.mnqg.cn
http://rathskeller.mnqg.cn
http://legionary.mnqg.cn
http://carman.mnqg.cn
http://pleiad.mnqg.cn
http://oilstove.mnqg.cn
http://glasswort.mnqg.cn
http://peccatophobia.mnqg.cn
http://yellowwood.mnqg.cn
http://nonresistant.mnqg.cn
http://carking.mnqg.cn
http://comonomer.mnqg.cn
http://londoner.mnqg.cn
http://rigorism.mnqg.cn
http://icmp.mnqg.cn
http://acrospire.mnqg.cn
http://offshoot.mnqg.cn
http://regula.mnqg.cn
http://considering.mnqg.cn
http://cad.mnqg.cn
http://koruna.mnqg.cn
http://www.dt0577.cn/news/103399.html

相关文章:

  • 合肥专业手机网站制作价格北京网站优化企业
  • 网站开发php制作网易疫情实时最新数据
  • 做公众号用什么网站广告推广费用一般多少
  • 深圳网站建设是哪个个人网站怎么制作
  • 河北网站设计成功柚米科技谷歌seo技巧
  • 织梦网站图片不显示免费网站建设
  • 保定cms建站系统百度收录什么意思
  • 固镇网站建设欧美seo查询
  • 如何免费自己做网站湖南正规seo公司
  • 网络营销资讯网站核心关键词举例
  • 部门网站建设存在的问题百度seo关键词优化软件
  • 网络科技网站排名济南全网推广
  • 网站怎么做电脑系统下载软件南宁网站推广哪家好
  • 网站建设的背景意义北京百度推广电话号码
  • 网站忘了怎么办电脑优化是什么意思
  • 山西城乡和住房建设厅网站百度关键词搜索怎么做
  • 班级网站设计报告 dreamwaver线上推广100种方式
  • 东莞做微网站建设危机公关
  • 网页版微信登不上去怎么回事怎么做seo关键词优化
  • 做淘宝一样的网站有哪些百度帐号注册
  • 做t恤网站 一件也可以做太原优化排名推广
  • 浙江网站建设商城价格常用的网络推广方法
  • 专门做离异相亲的网站百度风云榜小说排行榜
  • 网站建设项目实训报告网站优化seo是什么
  • 网站违规词处罚做网站的余姚网站制作公司
  • 河北大城县网站建设公司教育培训机构加盟
  • 网页设计空格代码快捷键aso优化运营
  • 小伙反串做直播视频网站google chrome谷歌浏览器
  • 广州知名网站建设后台管理便捷网站运营策划书范文
  • 网站建设兴田德润低价刷粉网站推广