SpringBoot registered three Web components

A way of providing SpringBoot

Use @Beanannotations to add components to Web容器the

@Component
public class WebComponentRegister {
    
    /**
     * 注册servlet
     */
    @Bean
    public ServletRegistrationBean myServlet() {
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new MyServlet(), "/myServlet");
        return registrationBean;
    }
    
     /**
     * 注册filter
     */
    @Bean
    public FilterRegistrationBean myFilter() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        registrationBean.setFilter(new MyFilter());
        registrationBean.setUrlPatterns(Arrays.asList("/hello","/myServlet"));
        return registrationBean;
    }

    /**
     * 注册listener
     */  
    @Bean
    public ServletListenerRegistrationBean myListener() {
	ServletListenerRegistrationBean<MyListener> registrationBean = new ServletListenerRegistrationBean<>(new MyListener());
	return registrationBean;
	}
}

Second, the notes provided Servlet3.0

We need to add annotations on the main startup class @ServletComponentScanscanning Servlet3.0notes

① Registration Servlet

@WebServlet(name = "userServlet",urlPatterns = "/test/customs")
public class UserServlet extends HttpServlet{

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().print("custom sevlet");
        resp.getWriter().flush();
        resp.getWriter().close();
    }

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

② registered filter

@WebFilter(urlPatterns = "/*",filterName = "TestFilter")
public class TestFilter implements Filter {
    /**
     * 容器初始化时调用
     */
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("-------------init--------------");
    }

    /**
     * 拦截请求
     */
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        boolean flag = true;
        if (flag){
            filterChain.doFilter(servletRequest,servletResponse);
        }else {
            //进行页面调用什么
            HttpServletResponse response = (HttpServletResponse) servletResponse;
            response.sendRedirect("/index.html");
        }
    }

    /**
     * 容器销毁时执行
     */
    @Override
    public void destroy() {
        System.out.println("-------------destory--------------");
    }
}

③ registered listener

Common servletContextListenerlistener: httpSessionListener, ,servletRequestListener

@WebListener
public class RequestListener implements ServletRequestListener {

    @Override
    public void requestDestroyed(ServletRequestEvent sre) {
        // TODO Auto-generated method stub
        System.out.println("======requestDestroyed========");
    }

    @Override
    public void requestInitialized(ServletRequestEvent sre) {
        System.out.println("======requestInitialized========");

    }

Third, the use of interceptor interceptor

HandlerInterceptor achieved or inherited HandlerInterceptorAdapter

@Component
public class AuthInterceptor extends HandlerInterceptorAdapter {

    @Autowired
    UserService userService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {		
        //这个handler可以被拦截请求的信息
        return true;
    }
}lan

Method to register interceptors below

Fourth, the use interceptors to solve cross-domain problems

Created and registered interceptor

@Component
public class AllowOriginIntercepter extends HandlerInterceptorAdapter {
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		response.addHeader("Access-Control-Allow-Origin", "*");
		response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
		return true;
	}
}
@Configuration
	public class WebMvcConfiguration extends WebMvcConfigurerAdapter {
		@Autowired
		AllowOriginIntercepter allowOriginIntercepter;
		
		@Override
		public void addInterceptors(InterceptorRegistry registry) {
			registry.addInterceptor(allowOriginIntercepter).addPathPatterns("/**");
			super.addInterceptors(registry);
		}
}
Published 81 original articles · won praise 124 · views 380 000 +

Guess you like

Origin blog.csdn.net/qq_38697437/article/details/104360558