-
我来说说我对异步过滤器的理解吧。根据过滤器的规则,过滤器得等servlet执行结束才能停止,所以如果servlet执行很久,过滤器得等很久,所以说呢,为了使得过滤器早点执行结束,就让servlet在后台执行,过滤器提前结束,这就是异步过滤器的优点所在 @WebServlet(asyncSupported = true, displayName = "/AsyncServlet", urlPatterns={"/servlet/AsyncServlet"}) asyncSupported = true 是必须开启用以支持异步 @WebFilter(filterName="AsynFilter",asyncSupported=true,value={"/servlet/AsyncServlet"},dispatcherTypes={DispatcherType.REQUEST,DispatcherType.ASYNC}) asyncSupported = true 是必须开启用以支持异步 dispatcherTypes={DispatcherType.REQUEST,DispatcherType.ASYNC} DispatcherType.REQUEST必须要加上,否则过滤器就不会生效了 同时注意在过滤的地址和servlet的地址必须相同查看全部
-
<error-page>如果【没有】设置且ERROR过滤器【有】设置,则输出错误地址检测不到且ERROR过滤器也失效;<error-page>如果【有】设置且ERROR过滤器【有】设置,则输出错误地址可检测到且ERROR过滤器生效;<error-page>如果【有】设置且ERROR过滤器【没有】设置,则输出错误地址可检测到但ERROR过滤器不会生效(注意:<location>/error.jsp</location>和<url-pattern>/error.jsp</url-pattern>文件一致,否则也会失效);所以无论如何,<error-page>一定要设置,否则一切都扯淡。 @web.xml <error-page> <error-code>404</error-code>//500 <location>/error.jsp</location> </error-page> <filter> <filter-name>ErrorFilter</filter-name> <filter-class>com.imooc.filter.ErrorFilter</filter-class> </filter> <filter-mapping> <filter-name>ErrorFilter</filter-name> <url-pattern>/error.jsp</url-pattern> <dispatcher>ERROR</dispatcher> </filter-mapping> @error.jsp 您输入的路径有误! @ErrorFilter.java public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain) throws IOException, ServletException { System.out.println("检测到有错误的信息!"); filterchain.doFilter(servletrequest, servletresponse);//注意:放行 }查看全部
-
我来说一下为什么sendRedirect会陷入死循环,而getRequestDispatcher.forward不会。 因为前者是使用的过滤器类型是request,访问index.jsp页面时,触发过滤器,重定向到main.jsp,由于过滤器类型是request,所以会继续触发main.jsp的过滤器,所以会陷入死循环。 后者在访问index.jsp的时候,过滤器类型是request,所以会触发过滤器,然后利用转发的方式访问main.jsp,这时候过滤器的类型是forward,而此时web.xml中定义的匹配main的过滤器类型还是request,所以不执行main所匹配的过滤器,因此只执行一次。查看全部
-
Web应用允许多个过滤器来过滤页面请求——联想现实生活中的例子是最好理解的啦!比如:为了获得更加干净的水,可能需要多个过滤器来进行过滤。 这个时候就分为两种情况了 1:多个过滤器过滤的URL不同,那么此时的多个过滤器是互不相干的,各过滤各的,互不干扰 2:多个多虑期过滤的URL相同,那么此时的多个过滤器就形成了一个过滤器链,此时就有个一个问题了Web容器现将对应的请求给谁过滤呢?处理规则也很简单,就是根据在Web.xml文件中配置的声明的顺序来决定,那个先过滤那个在过滤查看全部
-
JAVA过滤机制——第一个过滤器案例 1、创建一个过滤器类 ,继承自servlet下的Filter 2、重写三个方法init() doFilter() destroy()方法 (1)init()初始化:这个方法可以读取web.xml文件中的过滤器初始化参数。通过参数FilterConfig arg0可以获取更多参数 (2)doFIlter()核心:完成实际的过滤操作。当用户请求访问与过滤器【关联的URL】时,Web容器将先调用过滤器的doFilter方法,FilterChain arg2参数可以调用chain.doFilter方法,将请求传给下一个过滤器(或目标资源),或利用转发,重定向将请求转发给其他资源。 (3)web容器在消耗过滤器前调用该方法,用于释放过滤器占用的资源。(大多数情况用不到)查看全部
-
过滤器的生命周期查看全部
-
过滤器的工作原理查看全部
-
过滤器的概念查看全部
-
web过滤器时什么查看全部
-
过滤器生命周期查看全部
-
过滤器工作原理查看全部
-
过滤器概率查看全部
-
1.在web容器启动时依据web.xml实例化 一次 2.初始化 init() 一次 3.过滤 doFilter() 多次 4.销毁 destroy() 一次 web容器关闭查看全部
-
@JAVA过滤机制——过滤简介 1、过滤器三部分:过滤源(用户请求)——>过滤规则——>过滤结果 2、过滤器不处理结果,只做辅助性操作 3、定义:过滤器是一个【服务器端】的组件,它可以【截取用户端的请求和响应信息】,并对这些信息过滤 4.案列:登录案例、编码转换案例查看全部
-
过滤器链的执行过程: 用户请求 -> 依次执行过滤器的放行前方法 -> web资源 -> 依次执行过滤的放行后方法查看全部
举报
0/150
提交
取消