编程语言
首页 > 编程语言> > 使用Jersey Jersey JAX RS.WS获取Java中的当前Web文件夹

使用Jersey Jersey JAX RS.WS获取Java中的当前Web文件夹

作者:互联网

这似乎很容易,但似乎无法在Google上找到答案.
我需要在我的webroot文件夹中发送文件列表,类似于目录浏览.

我正在使用Glassfish,JAX-RS.WS和POJO作家的genson.

应用结构如下:

download
|- build
|- dist
|- src
|- web
|  |- files

下面是我的代码

@Path("home")
public class HomeResource {

    @Context
    private UriInfo context;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public String get() {
        return System.getProperty("user.dir"); // ??? Any idea what should be in here?
    }
}

结果为:

/usr/lib/glassfish/glassfish/domains/domain1/config

我需要指出

/sites/download/web/

或至少

/sites/download/

因为我需要我的服务提供一个列表,例如:

/files/item.zip
/files/document.pdf

任何人都可以帮忙吗?

谢谢

解决方法:

您可以从servlet context获取real path.

package com.scotth.jaxrsrealpath;

import javax.servlet.ServletContext;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;

/**
 * @author scotth
 * jax-rs application deployed to /JaxRsRealPath/
 */
@Path("sample")
public class SampleResource {

    @Context ServletContext servletContext;

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getHello(@QueryParam("path") String requestedPath) {
        String path = requestedPath == null ? "/" : requestedPath;
        String actualPath = servletContext.getRealPath(path);
        return String.format("Hello, world! \nRequested path: %s\nActual path: %s", path, actualPath);
    }
}

在我的日蚀管理的Tomcat实例中,请求/ JaxRsRealPath / sample?path = / WEB-INF会生成所请求文件或文件夹的实际文件系统路径-可与java.io.File一起使用:

Hello, world! 
Requested path: /WEB-INF
Actual path: /Users/scotth/Workspaces/eclipse45-default/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/JaxRsRealPath/WEB-INF/

另一个仅请求/ JaxRsRealPath / sample的示例(然后代码检查上下文根目录/的路径):

Hello, world! 
Requested path: /
Actual path: /Users/scotth/Workspaces/eclipse45-default/.metadata/.plugins/org.eclipse.wst.server.core/tmp1/wtpwebapps/JaxRsRealPath/

如果需要,您可以从那里使用File APIs获取文件的目录列表.

标签:glassfish-4,rest,jax-ws,web-services,java
来源: https://codeday.me/bug/20191027/1946608.html