美文网首页
SpringBoot 配置自定义servlet

SpringBoot 配置自定义servlet

作者: 拉提娜的爸爸 | 来源:发表于2019-09-29 09:14 被阅读0次

    SpringBoot中有内置的servlet容器

    一、如何指定和修改Servlet容器的相关配置

    可以在application.properties中修改servlet容器的配置

    // 通用的Servlet容器设置 server.xxx
    server.port=8080
    server.servlet.context-path=/me
    
    // Tomcat的设置 server.tomcat.xxx
    server.tomcat.uri-encoding=utf-8
    

    二、怎样自定义servlet、filter、listener组件

    主要分为两步:
    1、编写自定义组件
    2、注册组件

    • 1.1自定义servlet
    public class MyServlet extends HttpServlet {
    
        @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 servlet");
        }
    }
    
    • 1.2自定义filter
    import javax.servlet.*;
    import java.io.IOException;
    
    public class MyFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            System.out.println("初始化filter");
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("进入filter。。。");
            filterChain.doFilter(servletRequest,servletResponse);//进入下一个filter
        }
    
        @Override
        public void destroy() {
            System.out.println("销毁filter");
        }
    }
    
    • 1.3自定义listener
    import javax.servlet.ServletContextEvent;
    import javax.servlet.ServletContextListener;
    
    public class MyListener implements ServletContextListener {
    
        @Override
        public void contextInitialized(ServletContextEvent sce) {
            System.out.println("监听器已启动。。。");
        }
    
        @Override
        public void contextDestroyed(ServletContextEvent sce) {
            System.out.println("当前监听器已销毁");
        }
    }
    
    • 2.1注册自定义的组件
      主要应用到的组件是:
      ServletRegistrationBean
      FilterRegistrationBean
      ServletListenerRegistrationBean
    import com.mystudy.springboot.config.filter.MyFilter;
    import com.mystudy.springboot.config.listener.MyListener;
    import com.mystudy.springboot.config.servlet.MyServlet;
    import org.springframework.boot.web.servlet.FilterRegistrationBean;
    import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
    import org.springframework.boot.web.servlet.ServletRegistrationBean;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    import javax.servlet.Filter;
    import java.util.Arrays;
    import java.util.EventListener;
    
    @Configuration
    public class MyServer {
    
        // 注册自定义servlet
        @Bean
        public ServletRegistrationBean myServlet(){
            ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean();
            servletRegistrationBean.setServlet(new MyServlet()); // 添加自定义的servlet
            // 设置自定义servlet的访问路径
            servletRegistrationBean.setUrlMappings(Arrays.asList("/myServlet"));
            return servletRegistrationBean;
        }
    
        // 注册自定义filter
        @Bean
        public FilterRegistrationBean myFilter(){
            FilterRegistrationBean<Filter> filterFilterRegistrationBean = new FilterRegistrationBean<>();
            filterFilterRegistrationBean.setFilter(new MyFilter());// 添加自定义的filter
            // 指定需要进行过滤的请求路径
            filterFilterRegistrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
            return filterFilterRegistrationBean;
        }
    
        // 注册自定义监听器
        @Bean
        public ServletListenerRegistrationBean myListener(){
            ServletListenerRegistrationBean<EventListener> eventListener = new ServletListenerRegistrationBean<>();
            eventListener.setListener(new MyListener());// 添加自定义的listener
            return eventListener;
    
        }
        
    }
    

    相关文章

      网友评论

          本文标题:SpringBoot 配置自定义servlet

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