关于java:024期JavaWeb面试题五Filter和Listener

开篇介绍

大家好,我是Java最全面试题库的提裤姐,明天这篇是JavaWeb系列的第五篇,次要总结了JavaWeb中Filter和Listener相干的问题,在后续,会沿着第一篇开篇的常识线路始终总结上来,做到日更!如果我能做到百日百更,心愿你也能够跟着百日百刷,一百天养成一个好习惯。

什么是过滤器?

定义:
依赖于servlet容器;
在实现上基于函数回调,能够对简直所有申请进行过滤;
毛病是一个过滤器实例只能在容器初始化时调用一次;

作用
用来做一些过滤操作,获取咱们想要获取的数据:
在过滤器中批改字符编码;
在过滤器中批改HttpServletRequest的一些参数,包含:过滤低俗文字、危险字符等。

什么是监听器?

定义:
实现了javax.servlet.ServletContextListener 接口的服务器端程序;
随web利用的启动而启动;只初始化一次;
随web利用的进行而销毁;

作用:
做一些初始化的内容增加工作、设置一些根本的内容、比方一些参数或者是一些固定的对象等等。如SpringMVC的监听器org.springframework.web.context.ContextLoaderListener,实现了SpringMVC容器的加载Bean对象创立DispatchServlet初始化等。

什么是拦截器?

依赖于web框架,在SpringMVC中就是依赖于SpringMVC框架;
在实现上基于Java的反射机制,属于面向切面编程(AOP)的一种使用;
毛病是只能对controller申请进行拦挡,对其余的一些比方间接拜访动态资源的申请则没方法进行拦挡解决;

因为拦截器是基于web框架的调用,因而能够应用Spring的依赖注入(DI)进行一些业务操作,同时一个拦截器实例在一个controller生命周期之内能够屡次调用。

过滤器和拦截器的区别?

拦截器 过滤器
基于Java反射机制 基于函数回调
不依赖Servlet容器 依赖Servlet容器
只能对action起作用 简直对所有申请起作用
能够拜访action上下文,值栈里的对象 能够拜访action上下文,值栈里的对象
在Action生命周期中,拦截器能够屡次被调用 过滤器只能在容器初始化时被调用一次
拦截器不能批改request 过滤器能够批改request
拦截器能够调用IOC容器中的各种依赖 过滤器不能调用IOC容器中的各种依赖
拦截器能够具体到每个办法 过滤器只能在申请的前后应用

过滤器次要是过滤出要的货色,如requeset中的信息;拦截器在做平安方面用的比拟多,比方终止一些流程

Servlet与Filter的区别?

Filter是一种特地的Servlet,它们的作用是齐全不一样的。
Servlet是用来解决申请的,而Filter是用来过滤查看申请的。

web.xml 的作用?

用于配置Web利用的相干信息
如:监听器(listener)、过滤器(filter)、 Servlet、相干参数、会话超时工夫、平安验证形式、谬误页面等。

filter的生命周期?

  • 启动服务器时加载过滤器的实例,并调用init()办法来初始化实例;
  • 每一次申请时都只调用办法doFilter()进行解决;
  • 进行服务器时调用destroy()办法,销毁实例。

须要实现javax.servlet包的Filter接口的三个办法init()doFilter()destroy()

什么是servlet?

servlet是运行在web服务器中的小型java程序,通常通过HTTP协定承受和相应来自web客户端的申请。

  • Servlet对像,由Servlet容器创立。通常这个容器就是tomcat。
  • Servlet是一个接口:位于javax.servlet包中。

Servlet的生命周期?

servlet被实例化后,调用init办法。申请达到时,运行service()办法,调用doGet()、doPost()等办法。当服务器决定将实例销毁时调用destroy()办法。

  • init():第一次申请资源的时候,执行且只执行一次init办法。
  • service():第二次往后,执行service办法,执行屡次。在这个办法外部,依据申请形式的不同,进而持续调用不同的doGet和doPost办法。
  • destory():当Servlet服务器失常敞开时,执行destroy办法,只执行一次

Servlet和 CGI的区别?

Servlet通过多线程的形式运行service办法,一个实例能够服务于多个申请,并且实例个别不会被销毁。而CGI对每个申请都产生新的过程,服务实现后就销毁,所以效率上低于Servlet。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理