IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Retourner une image : Servlet vs Web service Rest


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kodo
    Profil pro
    Chef de projet technique
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chef de projet technique

    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Par défaut Retourner une image : Servlet vs Web service Rest
    Bonjour,
    J'ai besoin de rendre des images disponibles à plusieurs applications web.
    On ne m'a pas encore précisé l'endroit ou se trouvent les images : est ce sur la même machine qui héberge le serveur d'application ou autre ?
    Maintenant pour le choix de la technologie, j’hésite entre un simple servlet et un web service rest.
    Je ne sais pas le bon choix à faire?
    Pouvez vous m'aider sur ce point ?

    J'ai développé le code des deux, le servlet marche bien, par contre le web service non.
    Code de web service rest avec Apache-CXF
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    @Path("/get/{id}")
    	public Response getImage(@PathParam("id") String id) {
    		Response response = null;
    		StringBuilder sbImage = new StringBuilder();
    		sbImage.append(id);
    		sbImage.append(EXT_IMAGE);
    		File image = new File(IMAGES_REPO, sbImage.toString());
    		if(image.exists()){
    			ResponseBuilder responseBuilder = Response.ok((Object) image);
    			response = responseBuilder.build();
    		}
    		return response;
    	}
    Je fais le test avec cette page html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <html>
    <head><meta content="text/html;charset=UTF-8" /></head>
    <body>
    <img src="http://localhost:8080/myAppWeb/services/images/get/2003631" width="30%" height="30%">
    </body>
    </html>
    L'image ne s'affiche pas que je lance mas page de test sur chrome.

    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Si c'est une simple requête Get pour retourner des images, une simple Servlet suffit amplement.
    Pas besoin d'installer des librairies supplémentaires.

    Si tu as des besoins plus compliqués, que tu veux gérer du GET/POST/PUT/DELETE, des formats différents Json/XML, là un web service REST a tout son sens.

  3. #3
    Membre éclairé Avatar de kodo
    Profil pro
    Chef de projet technique
    Inscrit en
    Mars 2006
    Messages
    300
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Chef de projet technique

    Informations forums :
    Inscription : Mars 2006
    Messages : 300
    Par défaut
    Merci fr1man pour la réponse.
    Je pense que si le souci de sécurité se présente, une servlet reste suffisante ?

    Pour le code qui ne marche pas, ci dessous la correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
            @GET
    	@Path("/get/{id}")
    	@Produces(MediaType.APPLICATION_OCTET_STREAM)
    	public Response getImage(@PathParam("id") String id){
    		Response response = null;
    		StringBuilder sbImage = new StringBuilder();
    		sbImage.append(id);
    		try{
    			File image = new File(IMAGE_REPO, sbImage.toString());
    			if(image.exists()){
    				byte[] data = IOUtils.toByteArray(image.toURI());
    				response = Response
    						.ok( data)
    						.header( "Content-Disposition","inline; filename = \"" + sbImage.toString() + "\"" )
    						.build();
    			}
    		}catch(Exception e){
     
    		}
    		return response;
    	}

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Servlet ou web service, ça reste une requête http, donc tu peux sécuriser dans les deux cas, avec un filtre de servlet par exemple.

Discussions similaires

  1. Réponses: 14
    Dernier message: 19/11/2015, 15h14
  2. Réponses: 4
    Dernier message: 16/11/2014, 07h38
  3. [Débutant] web-service-rest-avec-wcf-3-5. comment faire un PUT d'une Liste d'object ?
    Par denfer06 dans le forum Développement Web avec .NET
    Réponses: 2
    Dernier message: 16/04/2014, 14h48
  4. [Débutant] Retourner une valeur d'un Web Service
    Par Phossoyeur dans le forum Services Web
    Réponses: 6
    Dernier message: 15/04/2014, 13h16
  5. Réponses: 4
    Dernier message: 27/09/2013, 19h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo