建设网站行业云,简述网页布局的几种方法,乌云网是个什么网站,更合网站开发文章目录1#xff0c;Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题2#xff0c;Listener2.1 概述2.2 分类2.3 代码演示最后说一句1#xff0c;Filter
1.1 Filter概述
F… 文章目录1Filter1.1 Filter概述1.2 Filter快速入门1.2.1 开发步骤1.3 Filter执行流程1.4 Filter拦截路径配置1.5 过滤器链1.5.1 概述1.5.2 代码演示1.5.3 问题2Listener2.1 概述2.2 分类2.3 代码演示最后说一句1Filter
1.1 Filter概述
Filter 表示过滤器是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源的请求拦截下来从而实现一些特殊的功能。
如下图所示浏览器可以访问服务器上的所有的资源servlet、jsp、html等 而在访问到这些资源之前可以使过滤器拦截来下也就是说在访问资源之前会先经过 Filter如下图 拦截器拦截到后可以做什么功能呢
过滤器一般完成一些通用的操作。比如每个资源都要写一些代码完成某个功能我们总不能在每个资源中写这样的代码吧而此时我们可以将这些代码写在过滤器中因为请求每一个资源都要经过过滤器。
过滤器还可以做 统一编码处理、 敏感字符处理 等等…
1.2 Filter快速入门
1.2.1 开发步骤
进行 Filter 开发分成以下三步实现 定义类实现 Filter接口并重写其所有方法 配置Filter拦截资源的路径在类上定义 WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源 在doFilter方法中输出一句话并放行 上述代码中的 chain.doFilter(request,response); 就是放行也就是让其访问本该访问的资源。
1.3 Filter执行流程 如上图是使用过滤器的流程我们通过以下问题来研究过滤器的执行流程 放行后访问对应资源资源访问完成后还会回到Filter中吗 从上图就可以看出肯定 会 回到Filter中 如果回到Filter中是重头执行还是执行放行后的逻辑呢 如果是重头执行的话就意味着 放行前逻辑 会被执行两次肯定不会这样设计了所以访问完资源后会回到 放行后逻辑执行该部分代码。
通过上述的说明我们就可以总结Filter的执行流程如下 以后我们可以将对请求进行处理的代码放在放行之前进行处理而如果请求完资源后还要对响应的数据进行处理时可以在放行后进行逻辑处理。
1.4 Filter拦截路径配置
拦截路径表示 Filter 会对请求的哪些资源进行拦截使用 WebFilter 注解进行配置。如WebFilter(拦截路径)
拦截路径有如下四种配置方式
拦截具体的资源/index.jsp只有访问index.jsp时才会被拦截目录拦截/user/*访问/user下的所有资源都会被拦截后缀名拦截*.jsp访问后缀名为jsp的资源都会被拦截拦截所有/*访问所有资源都会被拦截
通过上面拦截路径的学习大家会发现拦截路径的配置方式和 Servlet 的请求资源路径配置方式一样但是表示的含义不同。
1.5 过滤器链
1.5.1 概述
过滤器链是指在一个Web应用可以配置多个过滤器这多个过滤器称为过滤器链。
如下图就是一个过滤器链我们学习过滤器链主要是学习过滤器链执行的流程 上图中的过滤器链执行是按照以下流程执行
执行 Filter1 的放行前逻辑代码执行 Filter1 的放行代码执行 Filter2 的放行前逻辑代码执行 Filter2 的放行代码访问到资源执行 Filter2 的放行后逻辑代码执行 Filter1 的放行后逻辑代码
以上流程串起来就像一条链子故称之为过滤器链。
1.5.2 代码演示 编写第一个过滤器 FilterDemo 配置成拦截所有资源 WebFilter(/*)
public class FilterDemo implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//1. 放行前对 request数据进行处理System.out.println(1.FilterDemo...);//放行chain.doFilter(request,response);//2. 放行后对Response 数据进行处理System.out.println(3.FilterDemo...);}Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void destroy() {}
}编写第二个过滤器 FilterDemo2 配置拦截所有资源 WebFilter(/*)
public class FilterDemo2 implements Filter {Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//1. 放行前对 request数据进行处理System.out.println(2.FilterDemo...);//放行chain.doFilter(request,response);//2. 放行后对Response 数据进行处理System.out.println(4.FilterDemo...);}Overridepublic void init(FilterConfig filterConfig) throws ServletException {}Overridepublic void destroy() {}
} 修改 hello.jsp 页面中脚本的输出语句 % page contentTypetext/html;charsetUTF-8 languagejava %
html
headtitleTitle/title
/head
bodyh1hello JSP~/h1%System.out.println(3.hello jsp);%
/body
/html启动服务器在浏览器输入 http://localhost/filter-demo/hello.jsp 进行测试在控制台打印内容如下 从结果可以看到确实是按照我们之前说的执行流程进行执行的。
1.5.3 问题
上面代码中为什么是先执行 FilterDemo 后执行 FilterDemo2 呢
我们现在使用的是注解配置Filter而这种配置方式的优先级是按照过滤器类名(字符串)的自然排序。
比如有如下两个名称的过滤器 BFilterDemo 和 AFilterDemo 。那一定是 AFilterDemo 过滤器先执行。
2Listener
2.1 概述 Listener 表示监听器是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。 监听器可以监听就是在 applicationsessionrequest 三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。 request 和 session 我们学习过。而 application 是 ServletContext 类型的对象。 ServletContext 代表整个web应用在服务器启动的时候tomcat会自动创建该对象。在服务器关闭时会自动销毁该对象。
2.2 分类
JavaWeb 提供了8个监听器 这里面只有 ServletContextListener 这个监听器后期我们会接触到ServletContextListener 是用来监听 ServletContext 对象的创建和销毁。
ServletContextListener 接口中有以下两个方法
void contextInitialized(ServletContextEvent sce)ServletContext 对象被创建了会自动执行的方法void contextDestroyed(ServletContextEvent sce)ServletContext 对象被销毁时会自动执行的方法
2.3 代码演示
我们只演示一下 ServletContextListener 监听器
定义一个类实现ServletContextListener 接口重写所有的抽象方法使用 WebListener 进行配置
代码如下
WebListener
public class ContextLoaderListener implements ServletContextListener {Overridepublic void contextInitialized(ServletContextEvent sce) {//加载资源System.out.println(ContextLoaderListener...);}Overridepublic void contextDestroyed(ServletContextEvent sce) {//释放资源}
}启动服务器就可以在启动的日志信息中看到 contextInitialized() 方法输出的内容同时也说明了 ServletContext 对象在服务器启动的时候被创建了。
最后说一句
感谢大家的阅读文章通过网络资源与自己的学习过程整理出来希望能帮助到大家。
才疏学浅难免会有纰漏如果你发现了错误的地方可以提出来我会对其加以修改。
文章转载自: http://www.morning.sgjw.cn.gov.cn.sgjw.cn http://www.morning.sbjbs.cn.gov.cn.sbjbs.cn http://www.morning.znkls.cn.gov.cn.znkls.cn http://www.morning.thlzt.cn.gov.cn.thlzt.cn http://www.morning.lctrz.cn.gov.cn.lctrz.cn http://www.morning.nlbw.cn.gov.cn.nlbw.cn http://www.morning.mtbth.cn.gov.cn.mtbth.cn http://www.morning.xkgyh.cn.gov.cn.xkgyh.cn http://www.morning.wtcyz.cn.gov.cn.wtcyz.cn http://www.morning.zcsch.cn.gov.cn.zcsch.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.rykw.cn.gov.cn.rykw.cn http://www.morning.snjpj.cn.gov.cn.snjpj.cn http://www.morning.fmrrr.cn.gov.cn.fmrrr.cn http://www.morning.pdwny.cn.gov.cn.pdwny.cn http://www.morning.bpmnj.cn.gov.cn.bpmnj.cn http://www.morning.bpmnl.cn.gov.cn.bpmnl.cn http://www.morning.tkrdg.cn.gov.cn.tkrdg.cn http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.fhntj.cn.gov.cn.fhntj.cn http://www.morning.txtzr.cn.gov.cn.txtzr.cn http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.wpmlp.cn.gov.cn.wpmlp.cn http://www.morning.lizpw.com.gov.cn.lizpw.com http://www.morning.tpps.cn.gov.cn.tpps.cn http://www.morning.yltyz.cn.gov.cn.yltyz.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.dljujia.com.gov.cn.dljujia.com http://www.morning.dfmjm.cn.gov.cn.dfmjm.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.qfnrx.cn.gov.cn.qfnrx.cn http://www.morning.lsjtq.cn.gov.cn.lsjtq.cn http://www.morning.yysqz.cn.gov.cn.yysqz.cn http://www.morning.fpkpz.cn.gov.cn.fpkpz.cn http://www.morning.jhwwr.cn.gov.cn.jhwwr.cn http://www.morning.dbfwq.cn.gov.cn.dbfwq.cn http://www.morning.trfh.cn.gov.cn.trfh.cn http://www.morning.mqxzh.cn.gov.cn.mqxzh.cn http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn http://www.morning.trnhy.cn.gov.cn.trnhy.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn http://www.morning.tkzrh.cn.gov.cn.tkzrh.cn http://www.morning.tstwx.cn.gov.cn.tstwx.cn http://www.morning.qtwd.cn.gov.cn.qtwd.cn http://www.morning.ybmp.cn.gov.cn.ybmp.cn http://www.morning.hwnqg.cn.gov.cn.hwnqg.cn http://www.morning.mbaiwan.com.gov.cn.mbaiwan.com http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn http://www.morning.rckdq.cn.gov.cn.rckdq.cn http://www.morning.ntwfr.cn.gov.cn.ntwfr.cn http://www.morning.bkryb.cn.gov.cn.bkryb.cn http://www.morning.mbhdl.cn.gov.cn.mbhdl.cn http://www.morning.ypxyl.cn.gov.cn.ypxyl.cn http://www.morning.dbxss.cn.gov.cn.dbxss.cn http://www.morning.jrdbq.cn.gov.cn.jrdbq.cn http://www.morning.qbxdt.cn.gov.cn.qbxdt.cn http://www.morning.lhptg.cn.gov.cn.lhptg.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.ylljn.cn.gov.cn.ylljn.cn http://www.morning.hhxkl.cn.gov.cn.hhxkl.cn http://www.morning.nqypf.cn.gov.cn.nqypf.cn http://www.morning.gmswp.cn.gov.cn.gmswp.cn http://www.morning.mczjq.cn.gov.cn.mczjq.cn http://www.morning.xbrxk.cn.gov.cn.xbrxk.cn http://www.morning.china-cj.com.gov.cn.china-cj.com http://www.morning.pmdlk.cn.gov.cn.pmdlk.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.gidmag.com.gov.cn.gidmag.com http://www.morning.rsnn.cn.gov.cn.rsnn.cn http://www.morning.hwzzq.cn.gov.cn.hwzzq.cn http://www.morning.kjyfq.cn.gov.cn.kjyfq.cn http://www.morning.rnmdp.cn.gov.cn.rnmdp.cn http://www.morning.pmlgr.cn.gov.cn.pmlgr.cn http://www.morning.simpliq.cn.gov.cn.simpliq.cn