spring boot注册三大web组件以及一些理论


前言

笔记


一、使用到的一些注解

1.@Component 相当于配置文件中的<bean id="" class=""/> 且会自动交由spring容器
  不用再在配置类中手写bean

2.@Configuration //====>表示该类为配置类 等价于我们之前的xml文件
        @Bean //xml文件中<bean class=""> 把方法返回的对象交于spring容器来管理 和上面配置类注解一起使用
3.人为指定扫描的包,有两种方式
    第一种,在主函数的注解@SpringBootApplication(scanBasePackages={"xxx.yy"})
    第二种,在主函数使用两个注解
            @SpringBootApplication
            @ComponentScan(basePackages="xxx.yy")

4.@Repository 被该注解使用的POJO类表示DAO层的实现类

二、注册listener组件

监听器能监听很多种,这里拿请求监听器写例子。步骤:

1.定义一个普通类,实现ServletRequestLister接口并重写里面的方法

2.在初始化方法里写业务代码

3.编写控制层请求测试能否拿到监听器里的数据

/**
 * 使用ServletRequestListener获取访问信息
 * @Component 相当于配置文件中的<bean id="" class=""/> 且会自动交由spring容器
 * 不用再在配置类中手写bean
 * @date :Created in 2022/11/16 12:49
 */
@Component
public class MyServletRequestListener implements ServletRequestListener {

    private static final Logger logger = LoggerFactory.getLogger(MyServletRequestListener.class);

    @Override
    public void requestInitialized(ServletRequestEvent servletRequestEvent) {
        HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
        logger.info("session id为:{}", request.getRequestedSessionId());
        logger.info("request url为:{}", request.getRequestURL());

        request.setAttribute("name", "老六");
    }

    @Override
    public void requestDestroyed(ServletRequestEvent servletRequestEvent) {

        logger.info("request end");
        HttpServletRequest request = (HttpServletRequest) servletRequestEvent.getServletRequest();
        logger.info("request域中保存的name值为:{}", request.getAttribute("name"));
    }
}

编写控制层测试

    /**
     * 测试获取监听器中放的属性
     * @param request
     * @return
     */
    @GetMapping("/request")
    public String getRequestInfo(HttpServletRequest request) {
        System.out.println(request.getAttribute("name"));
        return "成功拿到数据";
    }

三、注册servlet

(1) 创建一个类并继承HttpServlet

​ (2) 重写service方法 【doGet 或doPost方法】

(3)在spring boot项目主函数同级下,创建config的包,然后创建一个配置类

public class MyServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("这是自己定义的servlet");
    }
}
@Configuration //====>表示该类为配置类 等价于我们之前的xml文件
public class MyConfig {


    @Bean //xml文件中<bean class=""> 把方法返回的对象交于spring容器来管理
    public ServletRegistrationBean<HttpServlet> registrationBean(){
        ServletRegistrationBean<HttpServlet> servletServletRegistrationBean=new ServletRegistrationBean<>();
        servletServletRegistrationBean.setName("my");
        servletServletRegistrationBean.addUrlMappings("/my");
        servletServletRegistrationBean.setServlet(new MyServlet());
        return servletServletRegistrationBean;
    }
}

四、注册filter

1.定义一个过滤器类并实现Filter接口

​ 2.重写接口中的抽象方法

​ 3. 在web.xml文件中注册过滤器。就是在配置类里面继续使用@Bean注解注入bean

public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("过滤器编码");
    }

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


//在配置类里面实现
    //过滤的注册
    @Bean
    public FilterRegistrationBean<Filter> filterRegistrationBean(){
        FilterRegistrationBean<Filter> filterRegistrationBean=new FilterRegistrationBean<>();
        filterRegistrationBean.setName("encondigFilter");
        filterRegistrationBean.addUrlPatterns("/*");
        filterRegistrationBean.setFilter(new MyFilter());
        return filterRegistrationBean;
    }


总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值