我正在使用Maven Jax-RS版本1.19
我正在寻找一种到达相对路径的方法。
例如:
我的网址: localhost / css / all
此网址转到css的控制器
当我发布以下网址时: 的本地主机/参数/ anotherparam / CSS /所有
然后我也想去同一个控制器。
我无法在建议或谷歌上找到适合我的问题的答案。 (有趣的是,Stackoverflow仍然可以比google更好地搜索自己的网站)
所以这是我的问题:
如何在Jax-RS中创建相对路径,以便无论前面(或后面)的url是什么,匹配的路径始终都会跟随
我的css控制器:
@Path("/css")
@Singleton
public class CssController{
@GET
@Path("{id}")
public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id
String path = request.getServletContext().getRealPath("/css/"+id+".css");
File f = new File(path);
if (f.exists()) {
return Response.ok(new Viewable(path)).build();
}
return null;
}
答案 0 :(得分:1)
我将以下正则表达式包含在我的路径中以使其获取参数或不是,所以现在的URL
css / all
和
/ test / alsotest / css / all
都去了css控制器:
@Singleton
@Path("{param1 : ^(?![\\s\\S])|(\\w+/)*?}css/{id}")
public class CssController {
@GET
@Produces(MediaType.TEXT_HTML)
public Response getCss(@Context HttpServletRequest request, @PathParam("id") String id)
{
String path = request.getServletContext().getRealPath("/css/"+id+".css");
File f = new File(path);
if (f.exists()) {
return Response.ok(new Viewable(path)).build();
}
return null;
}
请偷得好!
使用正则表达式:
<强> ^([\ S \ S]?!)?|(\ W + /)* 强>
参数:
{param1:^(?![\ s \ S])|(\ w + /)*?}
所以我的完整路径是:
{param1:^(?![\ s \ S])|(\ w + /)*?} css / {id}
我认为这对图像等也很有用,因为它们可以有相对的路径,这样,调用的位置并不重要,只有资源的位置!
我希望你能想到这个话题的人们。
期待!