I. Functions of Servlet, filter, and listener
Servlet functionality: A servlet is a small application running on a Web server that receives requests from clients, processes, and returns responses. (the servlet itself has actually been able to do the filter and listener functions, but the two separate components are actually implemented with functional multiplexing and pluggable architectures )
Filter's function: filter, or filter, is a technique for functional processing before the servlet acquires the request and after the response. ( adorner mode )
Listener function: Listener is used to monitor the change of the object and carry out the corresponding function processing. In this article, listener is the listener for the servlet, and the action events and changes in the life state of the servlet trigger the corresponding listener. ( Listener mode )
Second, the life cycle comparison of Servlet, filter and listener
(i), the life cycle of these three components is controlled by the Web container
stage |
servlet |
filter |
listener |
Initialize |
void init (servletconfig config) |
void Init (filterconfig) |
processing |
void Service (ServletRequest req, servletresponse res) |
void DoFilter ( ServletRequest request, servletresponse response, Filterchain chain) |
|
Destroy |
void Destroy () |
void Destroy () |
|
(b), the corresponding class and configuration of the wording, you can find that the servlet and filter are very similar.
These two articles are well written "Listener in Web. XML, filter, servlet load order and its details", "java filter, servlet, listener learning ."
The main thing here is to pay attention to what kind of methods they have achieved. The listener in this article only monitors object life cycle changes, and other listeners monitor events that are manipulated by objects, such as: Httpsessionattributelistener.
PackageCom.kwan.web.three;Importjava.io.IOException;ImportJavax.servlet.ServletConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse;ImportJavax.servlet.http.HttpServlet; Public classDemoservletextendsHttpServlet {@Override Public voidService (ServletRequest arg0, servletresponse arg1)throwsservletexception, IOException {//TODO auto-generated Method Stub Super. Service (arg0, arg1); } @Override Public voiddestroy () {//TODO auto-generated Method Stub Super. Destroy (); } @Override Public voidInit ()throwsservletexception {//TODO auto-generated Method Stub Super. Init (); } @Override Public voidInit (servletconfig config)throwsservletexception {//TODO auto-generated Method Stub Super. init (config); } } PackageCom.kwan.web.three;Importjava.io.IOException;ImportJavax.servlet.Filter;ImportJavax.servlet.FilterChain;ImportJavax.servlet.FilterConfig;Importjavax.servlet.ServletException;Importjavax.servlet.ServletRequest;ImportJavax.servlet.ServletResponse; Public classDemofilterImplementsFilter {@Override Public voiddestroy () {//TODO auto-generated Method Stub} @Override Public voidDoFilter (ServletRequest arg0, Servletresponse arg1, Filterchain arg2)throwsIOException, servletexception {//TODO auto-generated Method Stub} @Override Public voidInit (Filterconfig arg0)throwsservletexception {//TODO auto-generated Method Stub }} PackageCom.kwan.web.three;Importjavax.servlet.ServletContextEvent;ImportJavax.servlet.ServletContextListener;Importjavax.servlet.ServletRequestEvent;ImportJavax.servlet.ServletRequestListener;Importjavax.servlet.http.HttpSessionEvent;ImportJavax.servlet.http.HttpSessionListener;//Listen the lifecycle of Object HttpSession, ServletContext, ServletRequest Public classDemolistenerImplementsHttpsessionlistener, Servletcontextlistener, Servletrequestlistener {@Override Public voidrequestdestroyed (servletrequestevent arg0) {//TODO auto-generated Method Stub} @Override Public voidrequestinitialized (servletrequestevent arg0) {//TODO auto-generated Method Stub} @Override Public voidcontextdestroyed (servletcontextevent arg0) {//TODO auto-generated Method Stub} @Override Public voidcontextinitialized (servletcontextevent arg0) {//TODO auto-generated Method Stub} @Override Public voidsessioncreated (httpsessionevent arg0) {//TODO auto-generated Method Stub} @Override Public voidsessiondestroyed (httpsessionevent arg0) {//TODO auto-generated Method Stub }}
<?XML version= "1.0" encoding= "UTF-8"?><Web-appxmlns= "Http://java.sun.com/xml/ns/javaee"Xmlns:xsi= "Http://www.w3.org/2001/XMLSchema-instance"xsi:schemalocation= "Http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version= "3.0"Metadata-complete= "true"> <servlet> <Servlet-name>Servletdemo</Servlet-name> <Servlet-class>Com.kwan.web.three.DemoServlet</Servlet-class> </servlet> <servlet-mapping> <Servlet-name>Servletdemo</Servlet-name> <Url-pattern>/servlet</Url-pattern> </servlet-mapping> <Filter> <Filter-name>Filterdemo</Filter-name> <Filter-class>Com.kwan.web.three.DemoFilter</Filter-class> </Filter> <filter-mapping> <Filter-name>Filterdemo</Filter-name> <Url-pattern>/*</Url-pattern> </filter-mapping> <Listener> <Listener-class>Com.kwan.web.three.DemoListener</Listener-class> </Listener></Web-app>
Three, adorner mode and listener mode (time to add later)
Servlet, filter, and listener