2015-11-05 1 views
3

Cela semble assez facile, mais il semble que je ne trouve pas la réponse chez Google. Je dois envoyer une liste de fichiers dans mon dossier webroot, comme la navigation dans les répertoires. J'utilise Glassfish, et JAX-RS.WS, et le genson pour l'auteur de POJO.Récupérer le dossier Web actuel en Java avec Jersey JAX RS.WS

la structure App comme ceci:

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

Ci-dessous est mon code

@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? 
    } 
} 

et lui a donné le résultat en:

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

je en ai besoin pour pointer vers

/sites/download/web/ 

ou au moins

/sites/download/ 

parce que je dois mon service pour donner une liste comme par exemple:

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

Tout le monde peut aider s'il vous plaît ??

Merci

Répondre

4

Vous pouvez obtenir le real path du 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); 
    } 
} 

Demande /JaxRsRealPath/sample?path=/WEB-INF rendements, dans mon éclipse gérés par exemple Tomcat, le chemin de système de fichiers réel au fichier requis ou un dossier - utilisable par 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/ 

Autre exemple qui demande juste /JaxRsRealPath/sample (le code puis vérifie le chemin de la racine du contexte /):

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

de là, y Vous pouvez utiliser le File APIs pour obtenir des listes de répertoires de fichiers si vous le souhaitez.

+0

Cela fonctionne .. Merci – Magician