SpringBoot工程中三大JAVAEE组件注册
in JavaDevelop with 0 comment

SpringBoot工程中三大JAVAEE组件注册

in JavaDevelop with 0 comment

监听器(Listener)

定义监听器

package com.jt.listener;
import org.springframework.stereotype.Component;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
/**
 * 这里的监听器用于监听服务的启动和销毁
 */

public class DemoListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("服务启动了");
    }
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        System.out.println("服务销毁了");
    }
}

注册监听器

package com.jt.config;
/**
 * 在这里配置javaee规范中的三大组件
 */
@Configuration
public class ComponentConfig {
    ......
    //注册监听器
    @Bean
    public ServletListenerRegistrationBean servletListenerRegistrationBean(){
        ServletListenerRegistrationBean bean=
                new ServletListenerRegistrationBean(new DemoListener());
        return bean;
    }
}

启动服务测试

启动服务,检测服务日志输出,监听器方法是否执行

过滤器(Filter)

定义过滤器

package com.jt.filter;
import javax.servlet.*;
import java.io.IOException;
/**
 * javaee规范中的过滤器,对请求和响应数据进行过滤
 * 1)统一数据的编码
 * 2)统一数据格式校验 (今日头条的灵犬系统)
 * 3)统一身份认证
 */
public class DemoFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest,
                         ServletResponse servletResponse,
                         FilterChain filterChain) throws IOException, ServletException {
        System.out.println("==doFilter==");
        servletRequest.setCharacterEncoding("UTF-8");
        String id= servletRequest.getParameter("id");
        System.out.println("id="+id);
        filterChain.doFilter(servletRequest,servletResponse);
    }
}

注册过滤器

package com.jt.config;

/**
 * 在这里配置javaee规范中的三大组件
 */
@Configuration
public class ComponentConfig {

    ....
    //注册过滤器
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean bean=
                new FilterRegistrationBean(new DemoFilter());
        bean.addUrlPatterns("/hello");//对哪个请求进行处理
        return bean;
    }

}

访问过滤器

启动服务,对于以/hello开头的url进行访问,检测日志输出

处理器(Servlet)

定义处理器

package com.jt.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 * JavaEE规范中的Servlet
 */
public class DemoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("==doGet==");
        resp.getWriter().println("hello client");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
    //...
}

注册处理器

package com.jt.config;

/**
 * 在这里配置javaee规范中的三大组件
 */
@Configuration
public class ComponentConfig {
    .....
    //注册servlet
    @Bean
    public ServletRegistrationBean servletRegistrationBean(){
        ServletRegistrationBean bean=new ServletRegistrationBean();
        bean.setServlet(new DemoServlet());
        bean.addUrlMappings("/hello");
        return bean;
    }
}

访问处理器

启动服务,对于以/hello开头的url进行访问,检测日志输出。

总结(Summary)

本章节重点讲解了在SpringBoot工程中JavaEE三大组件的注册以及应用。