Article Directory
A way of providing SpringBoot
Use @Bean
annotations 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 @ServletComponentScan
scanning Servlet3.0
notes
① 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 servletContextListener
listener: 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);
}
}