1. Native injection
First go to the directory structure
package com.spring.bootinit.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;
/**
* @User: Json
* @Date: 2022/8/22
**/
@WebServlet(urlPatterns="/my") //不会走spring 拦截器 一定要打 / 要不会报错
public class Myservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("6666");
}
}
package com.spring.bootinit.servlet;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* @User: Json
* @Date: 2022/8/25
*
**/
//urlPatterns 指定拦截 哪些路径
@WebFilter(urlPatterns = {
"/css/*","/images/*"}) // 单 * 是servlet 写法 双 ** 是 spring 写法
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化打印==============");
Filter.super.init(filterConfig);
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("工作");
filterChain.doFilter(servletRequest,servletResponse);
}
@Override
public void destroy() {
System.out.println("销毁时打印==============");
Filter.super.destroy();
}
}
package com.spring.bootinit.servlet;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
* @User: Json
* @Date: 2022/8/25
**/
@WebListener //必须写上这个 注解 说明 这个类是一个监听器
public class MyListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("MyListener 监听到项目初始化 完成");
ServletContextListener.super.contextInitialized(sce);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("MyListener 监听到项目摧毁 完成");
ServletContextListener.super.contextDestroyed(sce);
}
}
package com.spring.bootinit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
@SpringBootApplication
@ServletComponentScan(basePackages = "com.spring.bootinit") //指定扫描的 Servlet组件路径
public class BootInitApplication {
public static void main(String[] args) {
SpringApplication.run(BootInitApplication.class, args);
}
}
The above method is the native injection method
- Spring method injection
First comment out the class file
@WebServlet(urlPatterns="/my") //If you don't go through spring, you must hit the interceptor/ or you won't report an error
@WebFilter(urlPatterns = {"/css/ "," /images/ ”}) // single * is servlet writing double ** is spring writing
@WebListener // this annotation must be written to indicate that this class is a listener
Then create a config file
package com.spring.bootinit.config;
import com.spring.bootinit.interceptor.LoginTnterceptor;
import com.spring.bootinit.servlet.MyFilter;
import com.spring.bootinit.servlet.MyListener;
import com.spring.bootinit.servlet.Myservlet;
import com.sun.org.apache.bcel.internal.generic.NEW;
import javafx.concurrent.Service;
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;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.HiddenHttpMethodFilter;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.PathMatchConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.util.UrlPathHelper;
import java.util.ArrayList;
import java.util.Arrays;
/**
* @User: Json
* @Date: 2022/7/4
**/
@Configuration(proxyBeanMethods = false)
public class WebConfig implements WebMvcConfigurer {
@Bean
public ServletRegistrationBean myServlet(){
Myservlet myservlet = new Myservlet();
return new ServletRegistrationBean(myservlet,"/my");
}
@Bean
public FilterRegistrationBean myFilter(){
MyFilter myFilter = new MyFilter();
FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean(myFilter);
filterRegistrationBean.setUrlPatterns(Arrays.asList("/my")); //一定要打 / 要不会报错
return new FilterRegistrationBean(myFilter);
}
@Bean
public ServletListenerRegistrationBean myListener(){
MyListener myListener = new MyListener();
ServletListenerRegistrationBean servletListenerRegistrationBean=new ServletListenerRegistrationBean(myListener);
return servletListenerRegistrationBean;
}
// @Override
// public void addInterceptors(InterceptorRegistry registry) {
// registry.addInterceptor(new LoginTnterceptor())
// .addPathPatterns("/**") // ** 拦截所有请求 包括静态资源
// .excludePathPatterns("/login","/css/**","/js/**"); // 放行哪些请求
// //"/css/**","/js/**" 这样配置 可以不拦截 静态资源
// }
}
start test