【问题标题】:Relative path in JAX-RSJAX-RS 中的相对路径
【发布时间】:2017-09-02 02:29:46
【问题描述】:

我正在使用 Maven Jax-RS 1.19 版

我正在寻找到达相对路径的方法。

例如:

我的网址:localhost/css/all

这个 url 转到 css 的控制器

当我发布以下网址时: localhost/parameter/anotherparam/css/all

那我也想去同一个控制器。

我在建议或谷歌上找不到适合我的问题的答案。 (有趣的是 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;

}

【问题讨论】:

    标签: path jersey jax-rs relative-path include-path


    【解决方案1】:

    我在我的路径中包含了以下正则表达式,以使其带有参数,现在是 url

    css/全部

    /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}

    我认为这对于图像等也很有用,由于它们可以具有相对路径,这样,调用的位置无关紧要,只有资源的位置!

    我想听听你们 stackoverflow 人对这个话题的看法。

    期待!

    【讨论】:

      猜你喜欢
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-03
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多