Web三大组件的注册——Servlet、Filter、Listener(监听三大作用域: ServletContext、HttpSession、ServletRequest )

 Web三大组件的注册



Servlet

@WebServlet(“/user.action”)


<servlet>

</servlet>

<servlet-mapping>

</servlet-mapping>



Filter

@WebFilter()


<filter>

</filter>

<filter-mapping>

</filter-mapping>



Listener

@WebListener


<listener>

<listener-class></listener-class>

</listener>





UserServlet.java

package com.sxt.controller;

import javax.servlet.ServletConfig;
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 UserServlet extends HttpServlet {

    @Override
    public void init(ServletConfig config) throws ServletException {
        String env = config.getInitParameter("env");
        String hello = config.getInitParameter("hello");
        System.out.println(env+"  "+hello);
    }

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

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello--UserServlet");
    }
}
 /**
     * 创建UserServlet
     */
    @Bean("userServlet")
    @ConditionalOnClass(value = {UserServlet.class})
    public UserServlet userServlet(){
        return new UserServlet();
    }
    /**
     * 注册UserServlet
     */
    @Bean
    @ConditionalOnBean(value = {UserServlet.class})
    public ServletRegistrationBean<UserServlet> servletRegistrationBeanUserServlet(UserServlet userServlet){
//    public ServletRegistrationBean<UserServlet> servletRegistrationBeanUserServlet(){
//        UserServlet userServlet=new UserServlet();
        //创建注册器对象
        ServletRegistrationBean<UserServlet> registrationBean=new ServletRegistrationBean<>();
        //注入Servlet
        registrationBean.setServlet(userServlet);
        //设置参数
        registrationBean.addInitParameter("env","UTF-8");
        registrationBean.addInitParameter("hello","你好");

        //设置映射
        registrationBean.addUrlMappings("/user1.action","/user2.action");

        return registrationBean;

    }


AppFilter.java

package com.sxt.controller;

import javax.servlet.*;
import java.io.IOException;

public class AppFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        String env = filterConfig.getInitParameter("env");
        String hello = filterConfig.getInitParameter("hello");
        System.out.println(env+"  "+hello);
    }

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

    @Override
    public void destroy() {

    }
}
/**
     * 创建Filter
     */
    @Bean("appFilter")
    @ConditionalOnClass(value = {AppFilter.class})
    public AppFilter appFilter(){
        return new AppFilter();
    }


    /**
     * 注册Filter
     */
    @Bean
    @ConditionalOnBean(value = {AppFilter.class})
    public FilterRegistrationBean<AppFilter> filterFilterRegistrationBeanAppFilter(AppFilter appFilter){
        //创建注册器
        FilterRegistrationBean<AppFilter> registrationBean=new FilterRegistrationBean<>();
        //注入filter
        registrationBean.setFilter(appFilter);

        //设置参数
        registrationBean.addInitParameter("env","filter-UTF-8");
        registrationBean.addInitParameter("hello","filter-你好");

        //设置映射
//        registrationBean.addUrlPatterns("/*");
        registrationBean.addServletNames("userServlet");
        return registrationBean;

    }


Listener的分类

监听三大作用域

ServletContext

|--ServletContextListener     ServletContextAttributeListener

HttpSession

|--HttpSessionListner     HttpSessionAttributeListener

ServletRequest

|--ServletReqeustListener   ServletRequestAttributeListener


AppListener.java

package com.sxt.controller;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class AppListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        System.out.println("contextInitialized");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}
package com.sxt.config;

import com.sxt.controller.AppListener;
import lombok.Data;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Configuration
@Component
@ConfigurationProperties(prefix = "web")
@Data
public class WebConfig {

    private Boolean applistenerEnable=true;
    /**
     * 创建Listener
     */
    @Bean
    @ConditionalOnClass(value = {AppListener.class})
    public AppListener appListener(){
        return new AppListener();
    }

    @Bean
    @ConditionalOnBean(value = {AppListener.class})
    public ServletListenerRegistrationBean<AppListener> servletListenerRegistrationBeanAppListener(AppListener listener){
        //创建注册器
        ServletListenerRegistrationBean<AppListener> bean=new ServletListenerRegistrationBean<AppListener>();
        //注入listener
        bean.setListener(listener);
        bean.setEnabled(applistenerEnable);
        return bean;

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值