美文网首页互联网科技程序员
Spring boot学习 (七) 之servlet、filte

Spring boot学习 (七) 之servlet、filte

作者: xml_ | 来源:发表于2018-11-30 14:20 被阅读2次

    前言

    使用Spring-Boot,可以通过扫描注解的方式注册Servlet、Filterlistener。在 启动类 上使用@ServletComponentScan注解后,Servlet、Filter、Listener 可以分别通过 @WebServlet、@WebFilter、@WebListener注解自动注册,整体来说还是很简单的,下面一起来学习一下。

    正文

    一,servlet的注册

    • 启动类
    @SpringBootApplication
    @ServletComponentScan
    public class Chapter1Application {
          public static void main(String[] args) {
            SpringApplication.run(Chapter1Application.class, args);
        }
    }
    
    • servlet文件类
    /**
     * @author merlin.xu
     * @create 2018-11-30-11:34
     */
    @WebServlet(urlPatterns="/*", description="说明") 
    public class MyServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("》》》》》》doPost方法执行》》》》》》");
    
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("》》》》》》doGet方法执行》》》》》》");
            doPost(req, resp);
      }
    
        @Override
        public void init() throws ServletException {
            super.init();
            System.out.println("servlet初始化");
        }
    
        @Override
        public void destroy() {
            super.destroy();
            System.out.println("servlet被销毁");
        }
    }
    

    二,Filter的注册

    • 启动类和上面一样
    • Filter类
    /**
     * @author merlin.xu
     * @create 2018-11-28-17:08
     * @WebFilter将一个实现了javax.servlet.Filter接口的类定义为过滤器
     * 属性filterName声明过滤器的名称,可选
     * 属性urlPatterns指定要过滤 的URL模式,也可使用属性value来声明.(指定要过滤的URL模式是必选属性)
     */
    @WebFilter(filterName="myFilter",urlPatterns="/*")
    public class MyFilter implements Filter {
    
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("过滤器初始化");
    
        }
    
        @Override
        public void destroy() {
            System.out.println("过滤器被销毁");
    
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    
            System.out.println("执行过滤操作");
            filterChain.doFilter(servletRequest, servletResponse);
    
        }
    }
    

    三,Listener的注册

    • 启动类和上面一样
    • Listener类(有好几种,这里实现HttpSessionListener为例 )
    /**
     * 监听Session的创建与销毁
     * @author merlin.xu
     * @create 2018-11-29-10:40
     */
    @WebListener
    public class MyHttpSessionListener implements HttpSessionListener {
        @Override
        public void sessionCreated(HttpSessionEvent se) {
    
            System.out.println("监听器sessiom被创建");
        }
    
        @Override
        public void sessionDestroyed(HttpSessionEvent se) {
            System.out.println("监听器session被摧毁");
    
        }
    }
    

    结果

    • 启动程序,出现如下信息
    监听器初始化
    过滤器初始化
    
    • 启动后,随便访问一个页面,出现如下信息
    servlet初始化
    执行过滤操作
    》》》》》》doGet方法执行》》》》》》
    》》》》》》doPost方法执行》》》》》》
    
    • 从输出信息大家也应该知道servlet,filter,listener三者之间的执行顺序了。

    原创作者:梦凌小样
    作品链接:https://www.jianshu.com/p/af6ecc629320【原创不易,转载请注明出处,感谢理解】
    一位爱生活,爱创作,爱分享,爱自己的90后女程序员一枚,记录工作中的点点滴滴,一起学习,共同进步,期待能和优秀的您交上朋友

    相关文章

      网友评论

        本文标题:Spring boot学习 (七) 之servlet、filte

        本文链接:https://www.haomeiwen.com/subject/crnccqtx.html