在我的web.xml中,我有以下映射:
<servlet>
<servlet-name>admin</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>admin</servlet-name>
<url-pattern>/admin/*</url-pattern>
</servlet-mapping>
用于我的应用程序的管理部分。
但是,当我为指标添加另一个映射时:
<servlet>
<servlet-name>metrics</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>3</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>metrics</servlet-name>
<url-pattern>/metrics/*</url-pattern>
</servlet-mapping>
并尝试使用例如/ metrics / errors url来访问资源,我收到错误,找不到资源。对于资源,我有以下控制器:
@RestController
@RequestMapping("/metrics")
public class MetricsController {
@Autowired
private MetricsService metricsService;
@RequestMapping(value = "/errors", method = RequestMethod.GET)
public List<TransactionsPerDay> fetchResult(@RequestParam("startDate") @DateTimeFormat(pattern="yyyy-MM-dd") Date startDate, @RequestParam("endDate") @DateTimeFormat(pattern="yyyy-MM-dd") Date endDate) {
//Specific logic here
}
这可能是个问题因为我尝试在我的应用中使用2个Dispatcher servlet吗? 当我将我的控制器移动到admin servlet所涵盖的管理包中时,突然发现了资源。
答案 0 :(得分:0)
URL由以下部分组成:
- url-pattern
DispatcherServlet
- 类级@RequestMapping
注释
- 方法级@RequestMapping
注释
在我们的情况下,MetricsController.fetchResult
可通过网址/metrics/metrics/error
访问。要/metrics/error
使其可用,我建议删除类级@RequestMapping
注释。