Spring boot注册三大组件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/nangeali/article/details/82729507

注册三大组件

Spring boot
以jar包的方式
使用嵌入式的Tomcat启动Web应用
没有Web应用目录结构,没有web.xml文件

Web应用
是一个Web应用的目录结构
存在目录文件src/main/webapp/WEB-INF/web.xml
可以把三大组件,注册在web.xml中

Spring boot
提供了三大组件,注册方式

注册Servlet,使用ServletRegistrationBean
注册Filter,使用FilterRegistrationBean
注册ServletListener,使用ServletListenerRegistrationBean

Servlet

自定义Servlet,继承HttpServlet
重写方法,处理请求

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

Filter

自定义Filter,实现Filter接口
实现Filter的三个方法

Init,初始化
doFilter,过滤
destroy,销毁
chain.doFilter,放行请求

public class MyFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("MyFilter process...");
        chain.doFilter(request,response);

    }

    @Override
    public void destroy() {

    }
}

Listener

自定义Listener,实现ServletContextListener
Listener有很多,这里监听启动和销毁的Listener

contextInitialized,初始化方法,Web项目启动
contextDestroyed,销毁方法,Web项目销毁

public class MyListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized...web应用启动");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("contextDestroyed...当前web项目销毁");
    }
}

注册Servlet

返回一个ServletRegistrationBean
是一个class,直接new一个
使用有参构造器,传递自定义的Servlet,映射路径

注册Filter

返回一个FilterRegistrationBean
是一个class,直接new一个
设置自定义的Filter,设置拦截请求的url
是一个集合,使用Arrays转换

注册Listener

返回一个ServletListenerRegistrationBean
是一个类,直接new一个
传递自定义的Listener
可以注册的Listener类型
这里写图片描述

注册方式

@Configuration
public class MyServerConfig {

    //注册三大组件
    @Bean
    public ServletRegistrationBean myServlet(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(),"/myServlet");
        registrationBean.setLoadOnStartup(1);
        return registrationBean;
    }

    @Bean
    public FilterRegistrationBean myFilter(){
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
        return registrationBean;
    }

    @Bean
    public ServletListenerRegistrationBean myListener(){
        ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
        return registrationBean;
    }

}

属性设置

可以直接在registrationBean中设置
自定义组件的属性

猜你喜欢

转载自blog.csdn.net/nangeali/article/details/82729507