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都會被訪問到


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM