2015-11-05 2 views
3

Это кажется достаточно простым, но похоже, что я не могу найти ответ в Google. Мне нужно отправить список файлов в папке webroot, вроде просмотра каталогов.Получить текущую веб-папку на Java с Джерси JAX RS.WS

Я использую Glassfish, и JAX-RS.WS, и genson для писателя POJO.

App структура, как это:

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 

Любой человек может помочь пожалуйста ??

Спасибо

ответ

4

Вы можете получить real path от servlet context.

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); 
    } 
} 

запрашивающая /JaxRsRealPath/sample?path=/WEB-INF урожаев, в моем затмении управляемого экземпляра Tomcat, фактический путь файловой системы к запрашиваемому файлу или папке - может использоваться с 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/ 

От там у ou может использовать File APIs, чтобы получить списки каталогов файлов, если хотите.

+0

Это работает .. Спасибо – Magician

Смежные вопросы