springboot2.0 使用servlet 、filter、listener

使用servlet、filter、listener、采用在主配置类中注册类的方式,用@Bean注解

package com.springboot2.thyemleaf;

import com.springboot2.thyemleaf.fileter.MyFilter;
import com.springboot2.thyemleaf.fileter.MyFilter2;
import com.springboot2.thyemleaf.lisener.Mylistener;
import com.springboot2.thyemleaf.servlet.MyServlet;
import com.springboot2.thyemleaf.servlet.MyServlet2;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;

@SpringBootApplication
public class ThyemleafdemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ThyemleafdemoApplication.class, args);
	}


	// 在主类采用bean方法注册
	@Bean
	public ServletRegistrationBean getServlet1(){
		return new ServletRegistrationBean(new MyServlet(),"/my1");
	}

	@Bean
	public ServletRegistrationBean getServlet2(){
		return new ServletRegistrationBean(new MyServlet2(),"/my2");
	}

	@Bean
	public FilterRegistrationBean getFilter(){
		//过滤所有请求
//		return new FilterRegistrationBean(new MyFilter());
		// 过滤指定的servlet
		return new FilterRegistrationBean(new MyFilter(),getServlet1());
	}

	@Bean
	public FilterRegistrationBean getFilter2(){
		// 过滤多个指定的servlet
		return new FilterRegistrationBean(new MyFilter2(),getServlet2(),getServlet1());

	}

	@Bean
	public ServletListenerRegistrationBean<Mylistener> getListener(){
		return new ServletListenerRegistrationBean<>(new Mylistener());
	}

}

类:servlet

package com.springboot2.thyemleaf.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by  lpw'ASUS on 2018/5/28.
 */
public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("这是自己写的servlet");
    }
}

filter:

package com.springboot2.thyemleaf.fileter;

import javax.servlet.*;
import java.io.IOException;

/**
 * Created by  lpw'ASUS on 2018/5/28.
 */
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("这是我的拦截器------");
            filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

listener:

package com.springboot2.thyemleaf.lisener;


import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Created by  lpw'ASUS on 2018/5/29.
 */
public class Mylistener implements HttpSessionListener{


    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        System.out.println("MyListener sessionCreated-----");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("MyListener sessionDestroyed-----");
    }
}
listener,监听的是servletSessionListener,所以创建、销毁session才会启用。

2. 通过实现

主配置类,实现servletContextInitializer,重写onStartup。


@Override
	public void onStartup(ServletContext servletContext) throws ServletException {
		servletContext.addServlet("my1",MyServlet.class).addMapping("/my1");
		servletContext.addFilter("myfilter1",MyFilter.class).addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST),true,"/*");
		servletContext.addListener(Mylistener.class);
	}

3.通过注解

在主配置配上加@ServletCompanentScan注解

package com.springboot2.thyemleaf;

import com.springboot2.thyemleaf.fileter.MyFilter;
import com.springboot2.thyemleaf.fileter.MyFilter2;
import com.springboot2.thyemleaf.lisener.Mylistener;
import com.springboot2.thyemleaf.servlet.MyServlet;
import com.springboot2.thyemleaf.servlet.MyServlet2;
import org.apache.tomcat.util.net.DispatchType;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.*;
import org.springframework.context.annotation.Bean;

import javax.servlet.DispatcherType;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.xml.ws.Dispatch;
import java.util.EnumSet;

@SpringBootApplication
@ServletComponentScan
public class ThyemleafdemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(ThyemleafdemoApplication.class, args);
	}
}

在servlet上加@Webservlet注解

package com.springboot2.thyemleaf.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by  lpw'ASUS on 2018/5/28.
 */
@WebServlet(urlPatterns = "/my1")
public class MyServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        System.out.println("这是自己写的servlet   get");
        req.getSession().setAttribute("mydemo","张三");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

            System.out.println("这是自己写的servlet");
        req.getSession().setAttribute("mydemo","张三");
    }


}

在filter上加@WebFilter注解

package com.springboot2.thyemleaf.fileter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

/**
 * Created by  lpw'ASUS on 2018/5/28.
 */
@WebFilter(urlPatterns = "/*")
public class MyFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
            System.out.println("这是我的拦截器------");
            filterChain.doFilter(servletRequest,servletResponse);
    }

    @Override
    public void destroy() {

    }
}

在listener上加@WebListener注解

package com.springboot2.thyemleaf.lisener;


import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 * Created by  lpw'ASUS on 2018/5/29.
 */
@WebListener
public class Mylistener implements HttpSessionListener{


    @Override
    public void sessionCreated(HttpSessionEvent httpSessionEvent) {
        System.out.println("MyListener sessionCreated-----");
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
        System.out.println("MyListener sessionDestroyed-----");
    }
}
第三种最简单,好用

猜你喜欢

转载自blog.csdn.net/m0_38044453/article/details/80486336