zoukankan      html  css  js  c++  java
  • 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;
        } 
  • 相关阅读:
    SQL EXPLAIN优化详解
    2019数据智能算法大赛赛后复盘
    K-D树详解
    点云配准相关
    pandas速查手册(中文版)
    Windows CMD命令大全
    获取时间戳
    SQL 字符串转成临时表
    delphi cxgrid明细新增第三行的报错【Key violation】
    cxgrid列的Properties(cxPopupEditPopup)的关闭方法
  • 原文地址:https://www.cnblogs.com/sdgtxuyong/p/14398939.html
Copyright © 2011-2022 走看看