Java 中间带有通配符的servlet URL模式

Java 中间带有通配符的servlet URL模式,java,servlets,url-pattern,Java,Servlets,Url Pattern,我正在开发一个HttpServlet,并试图用通配符定义url模式,但找不到太多文档 我要捕获的路径是“resource/{id}/action” 我尝试了以下注释: @WebServlet("/resource/*/action") 但这并不匹配,尽管更基本的“resource/*”可以正常工作 还有,有没有什么方法可以自动拉出我的{id}通配符,而不必手动解析url?我想你试图解决错误的任务。像这样将servlet映射到通配符上是一个非常不寻常的决定。看看框架,你可以写这样的方法 @Req

我正在开发一个HttpServlet,并试图用通配符定义url模式,但找不到太多文档

我要捕获的路径是“resource/{id}/action”

我尝试了以下注释:

@WebServlet("/resource/*/action")
但这并不匹配,尽管更基本的“resource/*”可以正常工作


还有,有没有什么方法可以自动拉出我的{id}通配符,而不必手动解析url?

我想你试图解决错误的任务。像这样将servlet映射到通配符上是一个非常不寻常的决定。看看框架,你可以写这样的方法

@RequestMapping("/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET)
public String findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) {
  Owner owner = ownerService.findOwner(ownderId);  
  Pet pet = owner.getPet(petId);  
  model.addAttribute("pet", pet);  
  return "displayPet"; 
}

是否有办法用普通Java和xml实现这一点?当然,您可以编写简单的手工调度程序,它将解析doGet/doPost方法中的查询字符串(即使用regex)。这真的很简单,你的意思是如果我想捕获
user/123/reports/r33
(换句话说,表示用户123提交的报告r33的页面),我应该将
user/*
映射到某个servlet
解析器
并在其中运行整个regex解析器?声音complicated@Imray我告诉more-better map dispatcher servlet处理/*请求,然后根据您的规则将其解析并拆分为多个部分。是的,这听起来很复杂,但比维护一堆servlet映射更容易、更好(当然,这只适用于原始servlet)