zoukankan      html  css  js  c++  java
  • servlet 3.0中三大组件的注册

    三大组件(Servlet,Filter,Listener)的传统的注册

    1、创建三大组件

    package com.web.servlet;
    
    import java.io.IOException;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    
    public class MyServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
           
       
        public MyServlet() {
            super();
        }
    
        
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
        }
    
        
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            
            doGet(request, response);
        }
    
    }
    package com.web.filter;
    
    import java.io.IOException;
    
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    
    public class MyFilter implements Filter{
        
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            String param01=filterConfig.getInitParameter("param01");
            String param02=filterConfig.getInitParameter("param02");
            System.out.println(param01);
            System.out.println(param02);
        }
    
        @Override
        public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2)
                throws IOException, ServletException {
            System.out.println("过滤请求");
            arg2.doFilter(arg0, arg1);
        }
        
        @Override
        public void destroy() {
            System.out.println("过滤请求完成");
            Filter.super.destroy();
        }
    
    }
    package com.web.listener;
    
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    import javax.servlet.annotation.WebListener;
    
    
    
    public class MyListener implements ServletContextListener {
    
        
        public MyListener() {
          
        }
    
        
        public void contextDestroyed(ServletContextEvent sce)  { 
           
        }
    
        
        public void contextInitialized(ServletContextEvent sce)  { 
            sce.getServletContext();
            System.out.println("ServletContext创建开始");
        }
        
    }

     2、在web.xml中进行注册

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://java.sun.com/xml/ns/javaee"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
        id="WebApp_ID" version="3.0">
    
    <!-- 注册监听器 -->
    <listener>
        <listener-class>com.web.listener.MyListener</listener-class>
    </listener>
    
    <!-- 注册Servlet -->
    <servlet>
        <servlet-name>myServlet</servlet-name>
        <servlet-class>com.web.servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
          <servlet-name>myServlet</servlet-name>
          <url-pattern>/myServlet</url-pattern>
     </servlet-mapping>
        
    
        
        <!-- 注册过滤器 -->
        <filter>
            <filter-name>myFilter</filter-name>
            <filter-class>com.web.filter.MyFilter</filter-class>
            <init-param>
                <param-name>param01</param-name>
                <param-value>utf-8</param-value>
            </init-param>
            <init-param>
                <param-name>param02</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>myFilter</filter-name>
            <url-pattern>/myServlet</url-pattern>
        </filter-mapping>
         
         
    </web-app>

     Servlet 3.0之后注册三大组件(可以采用注解,注解不介绍)

    在实现javax.servlet.ServletContainerInitializer接口的实现类中进行注册

    package com.tomcat.learn;
    
    import java.util.Set;
    
    import com.web.filter.MyFilter;
    import com.web.listener.MyListener;
    import com.web.servlet.MyServlet;
    
    import javax.servlet.FilterRegistration;
    import javax.servlet.ServletContainerInitializer;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRegistration;
    
    public class ContainerInitializer implements ServletContainerInitializer{
    
        @Override
        public void onStartup(Set<Class<?>> arg0, ServletContext arg1) throws ServletException {
            //注册Servlet
            ServletRegistration.Dynamic myServlet=arg1.addServlet("myServlet", MyServlet.class);
            myServlet.addMapping("/myServlet");
            
            //注册过滤器
            FilterRegistration.Dynamic myFilter= arg1.addFilter("myFilter", MyFilter.class);
            myFilter.addMappingForUrlPatterns(null, false, "/myServlet");
            
            //注册Listener
            arg1.addListener(MyListener.class);
            
            
        }
    
    }

     如果时在Spring应用中,还可以在org.springframework.web.WebApplicationInitializer实现类中的onStartup方法中进行注册

     

  • 相关阅读:
    随想 20180517
    随想 20180516
    随想 20180514
    alpinelinux
    装系统时总是提示 保存分区表时出现错误(0000000001)函数不正确
    kindeditor在Firefoxt 和 Chrome 下不能取到值的解决方法
    浏览器兼容
    php生成随机密码的几种方法
    按钮效果
    linux下修改/dev/shm tmpfs文件系统大小
  • 原文地址:https://www.cnblogs.com/cplinux/p/12323316.html
Copyright © 2011-2022 走看看