4

私は桟橋 9.0.3 を使用しています。

www.myweb.com/{servlet}/{parameter} などの URL を特定のサーブレットとパラメーターにマップする方法は?

たとえば、URL '/client/12312' は clientServlet にルーティングされ、そのdoGetメソッドはパラメーターとして 12312 を受け取ります。

4

2 に答える 2

6

気になる部分が2つあります。

  1. あなたのpathSpecWEB-INF/web.xml
  2. サーブレットのHttpServletRequest.getPathInfo() 。

パススペック

WEB-INF/web.xmlで、サーブレットと 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これにより、名前のクラスとして実装されたサーブレットがセットアップされ、着信要求 URLclientServletの url-pattern が指定されます。/client/*

/*url-pattern の末尾にあるextraにより、 で始まる受信パターンを/client/受け入れることができます。これは、pathInfo 部分にとって重要です。

パス情報

次に、サーブレットの実装に入ります。

ClientServletのdoGet(HttpServletRequest req, HttpServletResponse resp)実装では、req.getPathInfo()/client値にアクセスする必要があります。この値は、 URL パターンの後のリクエスト URL の部分を受け取ります。

例:

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

この時点で、パス情報からの情報に対して必要なロジックを実行します

于 2013-06-06T15:23:36.220 に答える
2

URL パターンを処理するパッケージでJersey、次のクラスを使用および登録できます。ResourceConfig../worker/1234

続きを読む: @QueryParam と @PathParam をいつ使用するか

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

   }
}
于 2016-02-20T09:09:06.473 に答える