web三大组件的注册

1.Servlet的注册

:JavaEE

Web.xml

<servlet>
    <servlet-name>userServlet</servlet-name>
    <servlet-class>cn.taotao.UserServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>userServlet</servlet-name>
    <url-pattern>/user.do</url-pattern>
</servlet-mapping>

注解方式

@WebServlet("/user.do")

:Springboot

创建servlet

public class UserServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        //super.doGet(req, resp);
        doPost(req, resp);    //转向调用dopost
    }
    
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // TODO Auto-generated method stub
        super.doPost(req, resp);
        System.out.println("dopost method");
    }

}
创建配置类【参考DispatcherServlet的配置】
@Configuration
public class WebObjectConfig {

    

    private static final String USER_SERVLET_NAME = "userServlet";

    @Bean(name=USER_SERVLET_NAME)
    public UserServlet getUserServlet() {
        return new UserServlet();
    }
    
    /***
     * 注册servlet
     */
    @Bean
    @ConditionalOnBean(value = UserServlet.class ,name = USER_SERVLET_NAME)
    public ServletRegistrationBean<UserServlet> servletRegistrationBean(UserServlet userServlet){   //userServelt 会自动autowire
        
        ServletRegistrationBean<UserServlet> registrationBean = new ServletRegistrationBean<UserServlet>();
        registrationBean.setServlet(userServlet);
        registrationBean.addUrlMappings("/user.do","/user.action");//可变参数,可以多个
        
    

      //注入参数
      registrationBean.addInitParameter("env", "UTF-8");

     //设置启动时,自动加载,如果不设置,需要第一次访问时,上面的utf-8的配置才会生效
registrationBean.setLoadOnStartup(0);

      return registrationBean; } }

访问 http://localhost/user.do  可以看到后台打印dopost method

添加参数 ,在userServlet的类里继续配置

@Override
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        super.init(config);
        String initParameter = config.getInitParameter("env");
        System.out.println(initParameter);
    }

 ---------------------------------

可以把注入的urlpattern写入配置文件

在类上加入@ConfigurationPorperties(prefix="myweb")

在类中加入

private String[]  urlpattern;加入set get方法

然后建立配置文件,在application.yml 中,加入

myweb.

   urlpattern 

          - /user.do  

          - /user.action

 ################################################################

2.filter的注册

:JaveEE

   <filter>
        <filter-name>userFilter</filter-name>
        <filter-class>cn.taotao.userFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>userFilter</filter-name>
        <servlet-name>xxx</servlet-name>
        <url-pattern>xxx</url-pattern>
    </filter-mapping>

注解方式

@WebFilter("/*")

:Springboot

 创建filter类

public class UserFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        // TODO Auto-generated method stub

        System.out.println("dofilter");
        chain.doFilter(request, response);
    }

}

创建filter配置类

@Bean
    public UserFilter userFilter() {
        return new UserFilter();
    }
    
    @Bean
    public FilterRegistrationBean<UserFilter> filterRegistrationBean(UserFilter userFilter){
        
        FilterRegistrationBean<UserFilter> registrationBean = new FilterRegistrationBean<UserFilter>();
        registrationBean.setFilter(userFilter);
        
        Collection<String> urlPatterns =  new ArrayList<String>();
        urlPatterns.add("/*");
        registrationBean.setUrlPatterns(urlPatterns );
    //    registrationBean.setServletNames(servletNames);
registrationBean.addInitParameter("env", "UTF-8");
return registrationBean; }
@Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub
        Filter.super.init(filterConfig);
        String initParameter = filterConfig.getInitParameter("env");
        System.out.println(initParameter);
    }

#########################################################################

3.listener的注册

一共有6个监听器,监听6个对象;分别对应6个接口

分别对应3个范围,两两成对。

ServletContext    ---------          ServletContextListener       ServletContextAttributeListener

HttpSession   ------------ HttpSessionListener   HttpSessionAttributeListener

HttpServletRequest   -----------------ServletRequestListener    ServletRequestAttributeListenter

:JavaEE

<listener>
        <listener-class>cn.taotao.UserListener</listener-class>
    </listener>

注解方式

@WebListener

:Springboot

 创建监听类对象

public class MyListener implements ServletContextListener{

    //重写2个方法,一个创建的时候,一个是销毁的时候
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // TODO Auto-generated method stub
        ServletContextListener.super.contextInitialized(sce);
        ServletContext context = sce.getServletContext();
        //获取上下文路径
        context.setAttribute("ctx", context.getContextPath());
        String initParameter = context.getInitParameter("env");
        System.out.println(initParameter);
        System.out.println("contextInitialized");
    }
    
    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // TODO Auto-generated method stub
        ServletContextListener.super.contextDestroyed(sce);
        
    }
    
}

配置注册

@Bean
    public MyListener myListener() {
        return new MyListener();
        
    }
    
    @Bean
    public ServletListenerRegistrationBean<MyListener> servletListenerRegistrationBean(MyListener myListener){
        ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<MyListener>();
        registrationBean.setListener(myListener);
        return registrationBean;
    } 
原文地址:https://www.cnblogs.com/sdgtxuyong/p/14398939.html