Directorio artículo
Una forma de proporcionar SpringBoot
Utilizar @Bean
anotaciones para agregar componentes a Web容器
la
@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;
}
}
En segundo lugar, las notas que se encuentra Servlet3.0
Tenemos que añadir anotaciones sobre las principales clases de inicio @ServletComponentScan
de escaneo Servlet3.0
notas
① Registro de servlets
@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);
}
}
② filtro registrado
@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--------------");
}
}
③ listener registrado
Común servletContextListener
oyente: 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========");
}
En tercer lugar, el uso de interceptor interceptor
HandlerInterceptor logra o heredado 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
Método para registrar los interceptores por debajo
En cuarto lugar, los interceptores utilizar para resolver problemas entre dominios
Creada y registrada 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);
}
}