irw*_*inb 8 java tomcat servlets servlet-filters
是否可以将URL映射到servlet(可能是Tomcat特有的),以便后面的两个URL({id}是从代码中检索的变量),
/users/{id}/a
/users/{id}/b
Run Code Online (Sandbox Code Playgroud)
映射到两个不同的servlet,或者我是否必须为映射到的servlet实现我自己的某种过滤器/users/*?
更清楚的是,具有该模式的任何URL /users/*/a都应映射到同一个servlet.同样的道理/users/*/b.
您可以将其映射/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
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
(省略了对数组大小的明显验证)
看起来它可能是JAX-RS的一个很好的候选者.我不确定你的servlet当前执行什么业务逻辑,但是这个选项解决了你的servlet映射问题,可能是合适的.
@Path("/users/{id}")
public class User {
@Path("a")
public String doA(@PathParam("id") final int id) { ... }
@Path("b")
public String doB(@PathParam("id") final int id) { ... }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3652 次 |
| 最近记录: |