Jetty'{servlet} / {parameter}’url路由

我正在使用jetty 9.0.3。

如何将URL(如www.myweb.com/{servlet}/{parameter})映射到给定的servlet和参数?

例如,URL’/ client / 12312’将路由到clientServlet,其doGet方法将接收12312作为参数。

你需要担心两个部分。

  1. WEB-INF/web.xml的pathSpec
  2. servlet中的HttpServletRequest.getPathInfo() 。

pathSpec

WEB-INF/web.xml您必须声明Servlet和url-patterns(也称为pathSpec)。

例:

   Example WebApp  clientServlet com.mycompany.ClientServlet   clientServlet /client/*   

这将在名称clientServlet上设置为com.mycompany.ClientServlet类的servlet,然后为传入的请求URL指定/client/*的url-pattern。

url-pattern末尾的extra /*允许接受以/client/开头的任何传入模式,这对于pathInfo部分很重要。

pathInfo

接下来我们进入Servlet实现。

在ClientServlet上的doGet(HttpServletRequest req,HttpServletResponse resp)实现中,您应该访问req.getPathInfo()值,该值将接收url-pattern上/client之后的请求URL部分。

例:

 Request URL Path Info ---------------- ------------ /client/ / /client/hi /hi /client/world/ /world/ /client/a/b/c /a/b/c 

此时,您可以对路径信息中的信息执行任何逻辑操作

您可以使用Jersey并在ResourceConfig包中注册以下类,该类正在处理../worker/1234 url模式。

阅读更多: 何时使用@QueryParam vs @PathParam

 @Path("v1/services/{entity}") @GET public class RequestHandler(@PathParam("entity")String entity, @PathParam("id")String id){ @path({id}) public Entity handle(){ } }