簡體   English   中英

Jetty'{servlet} / {parameter}'網址路由

[英]Jetty '{servlet}/{parameter}' url routing

我正在使用jetty 9.0.3。

如何將URL(例如www.myweb.com/{servlet}/{parameter})映射到給定的servlet和參數?

例如,URL'/ client / 12312'將路由到clientServlet,其doGet方法將接收12312作為參數。

你有2個部分需要擔心。

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

pathSpec

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>

這將在名稱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(){

   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM