jersyでは、下記のような@QueryParamや@PathParamなどで受け取った値は、標準では自動でURLデコード処理がかけられています。
このことはjavadoc にももちろん書かれています。
@GET
public Response findByName(@QueryParam("name") String name) {
// このときnameという変数はURLデコード済みの状態
/* 中略 */
}
URLデコード処理をして欲しくないときは@Encoded のアノテーションを追加で付与すればよいです。このアノテーションはclassにもつけられ、その場合はそのクラスの全てのメソッドの全てのパラメタに適用されます。
@GET
public Response findByName(@QueryParam("name") @Encoded String name) {
// このときnameはリクエストされたURLのままの状態
/* 中略 */
}
暗号化されたトークンなど、そのままの状態で扱いたい場合は、上記のようにデコード処理をさせないようにするか、URLセーフなものにするかです。
また、Json Web Tokens でも、URLセーフなトークンを実現できます。
# 参考サイト