目前cms内共定义四个servlet
2021-11-16 15:16:57,732| [localhost-startStop-1] INFO - Mapping servlet: 'captchaServlet' to [/captcha]
2021-11-16 15:16:57,733| [localhost-startStop-1] INFO - Mapping servlet: 'keepSessionServlet' to [/keep_session]
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO - Mapping servlet: 'backendDispatcherServlet' to [/cmscp/*]
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO - Mapping servlet: 'dispatcherServlet' to [/]
分别处理验证码,会话保持,后端接口(*.do
),前端处理(系统默认的dispatcherServlet) 。现在想通过cms暴露一些接口(主要是api)给第三方系统调用,是否再定义个ServletRegistrationBean 处理路由规则为/api/**
。如下所示
@Bean(name = "backendDispatcherServletRegistration222")
public ServletRegistrationBean backendDispatcherServletRegistration222(
ObjectProvider<MultipartConfigElement> multipartConfigProvider) {
ServletRegistrationBean registration = new ServletRegistrationBean(backendDispatcherServlet2(), "/api/**");
registration.setLoadOnStartup(0);
registration.setName("backendDispatcherServlet222");
return registration;
}
但是“/api/**
”格式 是不符合servlet的url-pattern定义个的要么/*
,要么是*.do
后缀这种。
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO - Mapping servlet: 'backendDispatcherServlet222' to [/api/**]
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO - Suspicious url pattern: "/api/**" in context [] - see sections 12.1 and 12.2 of the Servlet specification
如果不写成/api/**
,那么访问**.com/api/site/getList
没法处理 直接交给了前端dispatcherServlet处理 出现404 。另外 一些通用的filter 也会拦截请求,使得fitlter中得增加/api这种路由的处理,增加了程序复杂性。
是否有更好的建议呢
参:https://blog.csdn.net/n447194252/article/details/77481663