Springboot - -web应用开发-Servlets, Filters, listeners

一.Web开发使用 Controller 基本上可以完成大部分需求,但是我们还可能会用到 Servlet、 Filter、 Listener等等

二.在spring boot中的三种实现方式

 方法一:通过注册ServletRegistrationBean、 FilterRegistrationBean 和 ServletListenerRegistrationBean 获得控制

servlet类:

package com.demo.example.util.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;



public class CustomServlet extends HttpServlet {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("servlet get method");
		doPost(request , response);
	}
	
	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("servlet get method");
		response.getWriter().write("Hello world");
	}
	

}

filter类:
package com.demo.example.util.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;



public class CustonFilter implements Filter {

	@Override
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("do destroy");
	}

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

	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("do init");
	}

}

 Listener类:

package com.demo.example.util.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class CustomListener implements ServletContextListener {

	@Override
	public void contextDestroyed(ServletContextEvent servletContextEvent) {
		// TODO Auto-generated method stub
		System.out.println("servletContextEvent");

	}

	@Override
	public void contextInitialized(ServletContextEvent servletContextEvent) {
		// TODO Auto-generated method stub
		System.out.println("servletContextEvent");
	}

}

 

注册bean(第一种方式)

代码注册:(在SpringBootDemoFilerServletLisApplication类中)

@Bean
	public ServletRegistrationBean<CustomServlet> servletRegistrationBean() {
		return new ServletRegistrationBean<CustomServlet>(new CustomServlet(), "/customServlet");
	}
	
	@Bean
	public FilterRegistrationBean<CustonFilter> filterRegistrationBean(){
		return new FilterRegistrationBean<CustonFilter>(new CustonFilter(),servletRegistrationBean() );
	}
	
	@Bean
	public ServletListenerRegistrationBean<CustomListener> servletListenerRegistrationBean(){
		return new ServletListenerRegistrationBean<CustomListener>(new CustomListener());
	}

 第二种代码注册:(类似一)

@SpringBootApplication
public class SpringBootDemoFilerServletLisApplication implements ServletContainerInitializer{
	

	
	@Override
	public void onStartup(Set<Class<?>> arg0, ServletContext servletContext) throws ServletException {
		// TODO Auto-generated method stub
		servletContext.addServlet("CustomServlet", new CustomServlet()).addMapping("/customServlet");
		servletContext.addFilter("CustonFilter", new CustonFilter()).addMappingForServletNames(EnumSet.of(DispatcherType.REQUEST), true, "CustomServlet");
		servletContext.addListener(new CustomListener());
	}

 第三种基于注释:

首先:在 SpringBootDemoFilerServletLisApplication 类中添加

 

在listener

在servlet

在filter (  "/*" 代表过滤全局  )

 



posted @ 2018-08-22 22:45  Bo仁  阅读(180)  评论(0编辑  收藏  举报