servlet3.0的学习(四)

来源:互联网 发布:淘宝极速退款卖家拒签 编辑:程序博客网 时间:2024/06/06 11:01
动态注册Servlets,Filters,Listeners 

TestFilter.java 
Java代码  收藏代码
  1. package web.servlet.dynamicregistration_war;  
  2.   
  3. import java.io.*;  
  4. import javax.servlet.*;  
  5.   
  6.   
  7. public class TestFilter implements Filter {  
  8.   
  9.     private String filterInitParam;  
  10.   
  11.     @Override  
  12.     public void init(FilterConfig filterConfig) throws ServletException {  
  13.         filterInitParam = filterConfig.getInitParameter("filterInitName");  
  14.     }     
  15.   
  16.     @Override  
  17.     public void doFilter(ServletRequest req, ServletResponse res,  
  18.             FilterChain chain) throws IOException, ServletException {  
  19.         req.setAttribute("filterInitName", filterInitParam);  
  20.         chain.doFilter(req, res);  
  21.     }  
  22.   
  23.     @Override  
  24.     public void destroy() {  
  25.         // Do nothing  
  26.     }  
  27. }  


TestServlet.java 
Java代码  收藏代码
  1. package web.servlet.dynamicregistration_war;  
  2.   
  3. import java.io.*;  
  4. import javax.servlet.*;  
  5. import javax.servlet.http.*;  
  6.   
  7. public class TestServlet extends HttpServlet {  
  8.   
  9.     @Override  
  10.     protected void service(HttpServletRequest req, HttpServletResponse res)  
  11.             throws IOException, ServletException {  
  12.   
  13.         if (!"servletInitValue".equals(getServletConfig().getInitParameter(  
  14.                         "servletInitName"))) {  
  15.             throw new ServletException("Missing servlet init param");  
  16.         }  
  17.   
  18.         if (!"filterInitValue".equals(req.getAttribute("filterInitName"))) {  
  19.             throw new ServletException("Missing request attribute that was " +  
  20.                 "supposed to have been set by programmtically registered " +  
  21.                 "Filter");  
  22.         }  
  23.   
  24.         if (!"listenerAttributeValue".equals(req.getAttribute(  
  25.                 "listenerAttributeName"))) {  
  26.             throw new ServletException("Missing request attribute that was " +  
  27.                 "supposed to have been set by programmtically registered " +  
  28.                 "ServletRequestListener");  
  29.         }  
  30.   
  31.         res.getWriter().println("HELLO WORLD!\n");  
  32.     }  
  33. }  


TestServletRequestListener.java 
Java代码  收藏代码
  1. package web.servlet.dynamicregistration_war;  
  2.   
  3. import javax.servlet.*;  
  4.   
  5. public class TestServletRequestListener implements ServletRequestListener {  
  6.   
  7.     public void requestInitialized(ServletRequestEvent sre) {  
  8.         sre.getServletRequest().setAttribute("listenerAttributeName",  
  9.             "listenerAttributeValue");  
  10.     }  
  11.       
  12.     public void requestDestroyed(ServletRequestEvent sre) {  
  13.         // Do nothing  
  14.     }  
  15.   
  16. }  


TestServletContextListener.java 
Java代码  收藏代码
  1. package web.servlet.dynamicregistration_war;  
  2.   
  3. import java.util.*;  
  4. import javax.servlet.*;  
  5.   
  6.   
  7. public class TestServletContextListener implements ServletContextListener {  
  8.   
  9.     @Override  
  10.     public void contextInitialized(ServletContextEvent sce) {  
  11.   
  12.         ServletContext sc = sce.getServletContext();  
  13.   
  14.         // 注册 Servlet  
  15.         ServletRegistration sr = sc.addServlet("DynamicServlet",  
  16.             "web.servlet.dynamicregistration_war.TestServlet");  
  17.         sr.setInitParameter("servletInitName""servletInitValue");  
  18.         sr.addMapping("/*");  
  19.         // 注册过滤器  
  20.         FilterRegistration fr = sc.addFilter("DynamicFilter",  
  21.             "web.servlet.dynamicregistration_war.TestFilter");  
  22.         fr.setInitParameter("filterInitName""filterInitValue");  
  23.         fr.addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST),  
  24.                                      true"DynamicServlet");  
  25.   
  26.         // 注册监听器  
  27.         sc.addListener("web.servlet.dynamicregistration_war.TestServletRequestListener");  
  28.     }     
  29.   
  30.     @Override  
  31.     public void contextDestroyed(ServletContextEvent sce) {    
  32.         // Do nothing  
  33.     }  
  34. }