一尘不染

带有变量的Servlet映射(Tomcat 7.0)

tomcat

是否可以将URL映射到servlet(也许是Tomcat特定的东西),以便以下两个URL({id}是可从代码中检索的变量),

/users/{id}/a

/users/{id}/b

映射到两个不同的servlet,还是我必须为映射到的servlet实现自己的某种过滤器/users/*

更清楚地说,任何带有模式的URL /users/*/a都应映射到同一servlet。同样的道理/users/*/b


阅读 228

收藏
2020-06-16

共1个答案

一尘不染

您可以将其映射/users/*并从中提取信息HttpServletRequest#getPathInfo()

@WebServlet("/users/*")
public class UsersController extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String[] pathInfo = request.getPathInfo().split("/");
        String id = pathInfo[1]; // {id}
        String command = pathInfo[2]; // a or b
        // ...
    }

}

(省略了对数组大小的明显验证)

2020-06-16