zoukankan      html  css  js  c++  java
  • Spring Boot 内嵌servlet容器的Servlets +Filters + listeners

    一:servlet

    (1)启动类

    @SpringBootApplication
    @ServletComponentScan
    public class Application {
        public static void main(String[] args){
            SpringApplication.run(Application.class, args);
        }
    }

    启动类用@ServletComponentScan注解标注

    (2)继承HttpServlet

    @WebServlet(name = "webServlet", urlPatterns = "/webServlet", loadOnStartup = 2)
    public class WebServletTest extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("########doGet###########");
            System.out.println("WebServletTest.doGet");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("########doPost###########");
            System.out.println("WebServletTest.doPost");
        }
    }

    (3)访问http://localhost:8080/webServlet    运行结果:

     二:Filters

    测试示例1

    @WebFilter(urlPatterns = "/*",filterName="CharacterEncodeFilter",
            initParams={
                    @WebInitParam(name="encoding",value="UTF-8"),
                    @WebInitParam(name = "forceEncoding", value = "true")
            })
    @Singleton
    public class CharacterEncodingFilter implements Filter {
        private String encoding = "UTF-8";
        private boolean forceEncoding = true;
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            this.encoding = filterConfig.getInitParameter("encoding");
            String force = filterConfig.getInitParameter("forceEncoding");
            this.forceEncoding = (force == null) || Boolean.valueOf(force);
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            if (this.forceEncoding || servletRequest.getCharacterEncoding() == null) {
                servletRequest.setCharacterEncoding(this.encoding);
                servletResponse.setCharacterEncoding(this.encoding);
            }
            filterChain.doFilter(servletRequest, servletResponse);
        }
    
        @Override
        public void destroy() {
    
        }
    }

    测试示例2

    @WebFilter(urlPatterns = "/*", filterName = "indexFilter")
    public class IndexFilter implements Filter {
        private final static Logger logger = LoggerFactory.getLogger(IndexFilter.class);
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            logger.info("init IndexFilter");
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            logger.info("IndexFilter.doFilter exec");
            filterChain.doFilter(servletRequest,servletResponse);
    
        }
    
        @Override
        public void destroy() {
    
        }
    }

    三: listeners

    示例

    @WebListener
    public class MyServletContextListener implements ServletContextListener {
        @Override
        public void contextInitialized(ServletContextEvent servletContextEvent) {
            System.out.println("ServletContex初始化");
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent servletContextEvent) {
            System.out.println("ServletContex销毁");
        }
    }

    运行结果:

  • 相关阅读:
    产品经理之职责篇
    Scrum实践
    通用泛型存储接口的设计
    Jquery ajax执行顺序 返回自定义错误信息
    Js参数值中含有单引号或双引号解决办法
    Winform下的HTMLEditor引用Microsoft.mshtml的注意事项
    引用类型传参不加 ref 的注意事项
    List<T> 排序(Sort)查找(Find)功能的多种实现
    多线程三种传值方式
    SQL 存储过程传入多个ID
  • 原文地址:https://www.cnblogs.com/fdzfd/p/7874624.html
Copyright © 2011-2022 走看看