zoukankan      html  css  js  c++  java
  • SpringBoot简单项目学习笔记07(Servlet、filter、listener三大组件的使用)

      项目地址https://github.com/H-Designer/SpringBoot

      上一节总结的是SpringBoot的错误页面的定制(https://www.cnblogs.com/zhaochunhui/p/11332089.html

      这一节要总结的是SpringBoot的三大组件(Servlet、Filter、Listener)的使用

      

    1)、Servlet( 它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。)
    定义自己的servlet的类的内容
    package com.example.servlet;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    public class MyServlet extends HttpServlet {
    //处理get请求
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    doPost(req,resp);
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.getWriter().write("Hello MyServlet");
    }
    }
    定义一个MyServlet的类,在里面进行servlet的一系列的设定,并且在config中可以将这一部分注册在Bean的容器中:
    @Bean
    public ServletRegistrationBean myServlet(){
    MyServlet servlet=new MyServlet();
    ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(servlet,"/myservlet");
    return servletRegistrationBean;
    }
    这里就是相当与得到myservlet的请求之后,然后在servlet的对象中(MyServlet servlet=new MyServlet();),然后在servlet里面找到具体的是get还是post的方法,然后执行里面的函数
    
    
    2)、Filter(过滤器)
    定义自己的filter过滤器
    package com.example.filter;
    import javax.servlet.*;
    import java.io.IOException;
    public class MyFilter implements Filter {
    //filter的初始化
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    //Filter的过滤
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    System.out.println("MyFilter proccess...");
    chain.doFilter(request,response);
    }
    //Filter的销毁
    @Override
    public void destroy() {
    }
    }
    将filter添加到Bean的容器
    @Bean
    public FilterRegistrationBean myFilter(){
    FilterRegistrationBean fileRegistrationBean = new FilterRegistrationBean();
    fileRegistrationBean.setFilter(new MyFilter());
    fileRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
    return fileRegistrationBean;
    }
    这就是在页面收到/hello或者是/myServlet的请求之后,进行调用自己的filter的过滤器具体实现的拦截功能还是会根据在filter的拦截器的类中进行设定,这里只是在这里面输出一句话,并没有进行拦截
    
    3)、listener(监听器)
    定义自己的监听器
    package com.example.listener;
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    public class MyListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
    System.out.println("Web项目启动");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    System.out.println("Web项目关闭");
    }
    }
    然后在config中进行添加到Bean容器中的操作
    @Bean
    public ServletListenerRegistrationBean myListener(){
    ServletListenerRegistrationBean<MyListener> registrationBean= new ServletListenerRegistrationBean<>(new MyListener());
    return registrationBean;
    }
    这里面就是在项目进行创建还有就是在项目被注销的时候输出一句话
  • 相关阅读:
    修改MySQL数据文件的位置
    服务名无效。请键入 NET HELPMSG 2185 以获得更多的帮助。
    索引的讲解
    运行php程序时,浏览器跳出打开和保存提示框
    ora-4031错误
    MySQL_Oracle_事物的隔离级别
    GNU与Linux
    计算机网络_第一章
    Linux网卡高级命令
    Linux RAID简介
  • 原文地址:https://www.cnblogs.com/zhaochunhui/p/11343963.html
Copyright © 2011-2022 走看看