zoukankan      html  css  js  c++  java
  • springboot之filter/listener/servlet

    简介

    SpringBoot可以简化开发流程,但是在其中如何使用传统的J2EE servlet/listener/filter呢

    @Bean配置

    在Configuration类中加入filter和servlet的registration

    @Bean
    	public FilterRegistrationBean registFilter() {
    	    FilterRegistrationBean registration = new FilterRegistrationBean();
    	    registration.setFilter(new Filter(){
    			@Override
    			public void init(FilterConfig filterConfig) throws ServletException {
    			}
    
    			@Override
    			public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    				System.out.println("in filter");
    				chain.doFilter(request, response);
    			}
    
    			@Override
    			public void destroy() {
    			}
    	    	
    	    });
    	    registration.addUrlPatterns("/*");
    	    registration.setOrder(1);
    	    return registration;
    	} 
    	
    	@SuppressWarnings("serial")
    	@Bean
    	public ServletRegistrationBean registServlet() {
    		ServletRegistrationBean servletRegist=new ServletRegistrationBean();
    		servletRegist.setServlet(new HttpServlet (){
    			@Override
    		    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    		            throws ServletException, IOException {
    		        resp.getWriter().write("inside servlet");
    		    }
    		});
    		servletRegist.addUrlMappings("/registedServlet");
    		return servletRegist;
    	} 
    

    运行项目就可以访问servlet和filter了,在registrationBean中可以配置路径和实例。

    使用Servlet3.0

    如果使用Servlet3.0的话,可以在Configuration类上加@ServletComponentScan("类路径")
    并开发对应的filter、listener、servlet

    @WebFilter
    public class CustFilter implements Filter{
    
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    		System.out.println("in filter2");
    		chain.doFilter(request, response);
    	}
    
    	@Override
    	public void destroy() {
    		// TODO Auto-generated method stub
    		
    	}
    
    }
    
    @WebListener
    public class CustListener implements HttpSessionListener {
    
    	@Override
    	public void sessionCreated(HttpSessionEvent se) {
    		System.out.println("session created");
    	}
    
    	@Override
    	public void sessionDestroyed(HttpSessionEvent se) {
    		// TODO Auto-generated method stub
    
    	}
    }
    
    @WebServlet(urlPatterns={"/cust"})
    public class CustServlet extends HttpServlet {
    
    	private static final long serialVersionUID = 1L;
    
    	@Override
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		req.getSession().setAttribute("a", "1");
    		resp.getWriter().write("cust servlet");
    	}
    }
    

    在访问localhost:8080/cust时,对应的filter、listener、servlet都会被访问到

  • 相关阅读:
    JavaScript 23 Window
    JavaScript 22 自定义对象
    JavaScript 21 Math
    History 7 : Christianity, Science, and The Enlightenment
    History : The Atlantic Slave Trade
    History 6 : Aztec and Inca Empires / African empires 8001500
    003 几个python编程例子
    006 网络的瓶颈效应
    0212 Logistic(逻辑)回归
    002 用Python打印九九乘法表与金字塔(*)星号
  • 原文地址:https://www.cnblogs.com/resentment/p/5964581.html
Copyright © 2011-2022 走看看