我正在使用jetty 9.0.3。
如何将URL(例如www.myweb.com/{servlet}/{parameter}映射到给定的servlet和参数?
例如,URL“/ client / 12312”将路由到clientServlet,其doGet
方法将接收12312作为参数。
答案 0 :(得分:5)
您需要担心两部分。
WEB-INF/web.xml
在你的WEB-INF/web.xml
中,你必须声明你的Servlet和你的url模式(也称为pathSpec)。
示例:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false"
version="3.0">
<display-name>Example WebApp</display-name>
<servlet>
<servlet-name>clientServlet</servlet-name>
<servlet-class>com.mycompany.ClientServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>clientServlet</servlet-name>
<url-pattern>/client/*</url-pattern>
</servlet-mapping>
</web-app>
这将在名称com.mycompany.ClientServlet
上设置实现为类clientServlet
的servlet,然后为传入的请求URL指定/client/*
的url模式。
url-pattern末尾的额外/*
允许接受以/client/
开头的任何传入模式,这对于pathInfo部分很重要。
接下来我们进入Servlet实现。
在ClientServlet上的doGet(HttpServletRequest req, HttpServletResponse resp)实现中,您应该访问req.getPathInfo()值,该值将接收您的网址格式/client
之后的请求网址部分。
示例:
Request URL Path Info
---------------- ------------
/client/ /
/client/hi /hi
/client/world/ /world/
/client/a/b/c /a/b/c
此时,您可以对路径信息中的信息执行任何逻辑操作
答案 1 :(得分:1)
您可以使用Jersey
并在处理ResourceConfig
网址格式的../worker/1234
包中注册以下类。
了解详情:When to use @QueryParam vs @PathParam
@Path("v1/services/{entity}")
@GET
public class RequestHandler(@PathParam("entity")String entity, @PathParam("id")String id){
@path({id})
public Entity handle(){
}
}