私は桟橋 9.0.3 を使用しています。
www.myweb.com/{servlet}/{parameter} などの URL を特定のサーブレットとパラメーターにマップする方法は?
たとえば、URL '/client/12312' は clientServlet にルーティングされ、そのdoGet
メソッドはパラメーターとして 12312 を受け取ります。
私は桟橋 9.0.3 を使用しています。
www.myweb.com/{servlet}/{parameter} などの URL を特定のサーブレットとパラメーターにマップする方法は?
たとえば、URL '/client/12312' は clientServlet にルーティングされ、そのdoGet
メソッドはパラメーターとして 12312 を受け取ります。
気になる部分が2つあります。
WEB-INF/web.xml
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
この時点で、パス情報からの情報に対して必要なロジックを実行します
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(){
}
}