使用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