• 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销毁");
        }
    }

    运行结果:

  • 相关阅读:
    将CMD内的显示内容输出到txt文件
    上传项目到Github
    利用百度地图API,在浏览器中找到自己的位置
    操作系统相关知识
    字符串的全排列
    二维数组做函数参数、指向指针的指针做函数参数
    strstr函数与strcmp函数
    华为机试题——数组排序,且奇数存在奇数位置,偶数存在偶数位置
    单链表的建立,插入,显示,查找删除以及反转
    《深入了解 Linq to SQL》之对象的标识 —— 麦叔叔呕心呖血之作
  • 原文地址:https://www.cnblogs.com/fdzfd/p/7874624.html
Copyright © 2020-2023  润新知