1、响应式
@Component
public class PreRoutFilter implements WebFilter
....
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
String path = exchange.getRequest().getURI().getPath();
List<String> menus = Arrays.asList("/",
vue 的路由菜单 可以通过数据库查询缓存起来
);
if (menus.contains(path)) {
return chain.filter(exchange.mutate().request(exchange.getRequest().mutate().path("/index.html").build()).build());
}
return chain.filter(exchange);
}
2、servlet
public class PreRoutFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)servletRequest;
HttpServletResponse response = (HttpServletResponse)servletResponse;
String uri = request.getRequestURI();
List<String> menus = Arrays.asList(
"/index",
vue 的路由菜单 可以通过数据库查询缓存起来
);
if(menus.contains(uri)){
request.getRequestDispatcher("/").forward(servletRequest, servletResponse);
}
filterChain.doFilter(servletRequest, servletResponse);
}
}
-- aplication 入口
@Bean
public FilterRegistrationBean filterRegistrationBean(){
FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean(new PreRoutFilter());
return filterRegistrationBean;
}
3、其他网站的写法
@Component
public class ErrorConfig implements ErrorPageRegistrar {
@Override
public void registerErrorPages(ErrorPageRegistry registry) {
ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/index.html");
registry.addErrorPages(error404Page);
}
}