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

Servlets/JSP Java Discussion :

Faire fonctionner une application java en architecture 2-tiers (servlet ?)


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut Faire fonctionner une application java en architecture 2-tiers (servlet ?)
    Bonjour à tous,
    je dispose d'une application java qui permet de générer des documents au format pdf, jpeg ... a partir de documents xml. Celle ci fonctionne en ligne de commande.
    Mon but serait de faire une page en jsp capable de faire l'équivalent de la ligne de commande (c'est a dire selectionner un fichier xml et un fichier xslt) et de generer les documents correspondants sur le serveur.
    Pour cela, j'ai installé tomcat ainsi que le plugin sysdeo pour eclipse.

    Ma question principale est de savoir s'il est possible de fournir des arguments à une application java à partir d'un jsp ?
    Faut il convertir l'application en servlet ? Si oui, quelles sont les pistes à exploiter pour le faire efficacement ?

    Je vous remercie d'avance pour vos réponses.

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    Salut,
    Je ne sais pas si j ai bien saisi ta question mais apparemment, tu peux ajouter le jar de ton application dans le classpath de ton appli web et ainsi appeller les methodes de ton application pour construire ters fichiers...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    Voici la manière donc j'ai procéder histoire d'essayer, mais j'ai une erreur :


    Voila mon package explorer, j'ai ajouté les packages contenant les sources de mon application dans le repertoire WEB-INF/src
    J'ai ajouté à l'application les JAR nécessaire à son exécution.

    j'ai ensuite créer le fichier index.jsp suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // On importe les classes d'antidote.
    <%@ page import="antidote.*" %>
    <%
    // on récupère les paramètres
    String XML1=request.getParameter("txtXML");
    String XSL1=request.getParameter("txtXSL");
    if(XML1!=null && XSL1!=null) {
            //On lance antidote
            Antidote obj = new Antidote(XML1,XSL1);
    }
    %>
    XML1 et XSL1 correspondent à deux champs de formulaires qui reçoivent un fichier en argument.
    Lorsque j'essaye d'accéder au JSP, tomcat retourne l'erreur suivante :

    cause mère

    org.apache.jasper.JasperException: Impossible de compiler la classe pour la JSP

    Une erreur s'est produite à la ligne: 3 dans le fichier jsp: /index.jsp
    Erreur de servlet générée:
    Antidote cannot be resolved to a type

    Une erreur s'est produite à la ligne: 3 dans le fichier jsp: /index.jsp
    Erreur de servlet générée:
    Antidote cannot be resolved to a type
    Je comprends l'erreur mais je n'en comprends pas la cause. Ya t'il une étape à faire ? j'ai cru comprendre que tomcat compilait les fichiers sources contenus dans WEB-INF/src pour les mettre dans WEB-INF/classes, me trompais-je ?

    Une fois de plus, merci pour vos informations.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    si je procede comme ca, mes sources doivent etre des servlets c'est bien cela ?
    si oui, dois je plutot creer un jar de mon application et l'ajouter à la liste des jar exploitables par la webapps ?

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    240
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 240
    Points : 145
    Points
    145
    Par défaut
    Il semblerait que ton package antidote est vide...

    Quand tu fais un "import antidote.*", tu importes les classes de ce package et pas les "sous package"
    Et sinon tu peux te faire un jar avec les classes de ton appli et n'ajouter que le jar, et c'est plus pratique pour le réutiliser dans une autre appli

    Et tu peux utiliser ces classes dans n'importe quelle classe de ton appli...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    merci pour ta réponse, en effet j'ai créé un jar et maintenant tout est plus simple
    je rencontre par contre un autre probleme, j'ai créé une servlet pour gerer l'upload de fichiers sur le serveur, le probleme c'est que ... ca ne marche pas
    le formulaire ne renvoit aucune erreur, tomcat non plus, mais aucune ecriture sur le disque ... Si quelqu'un a une piste à me fournir je lui serais tres reconnaissant !

    les sources :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    import java.io.*;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.commons.fileupload.*;
    import org.apache.commons.fileupload.disk.*;
    import org.apache.commons.fileupload.servlet.*;
    import org.apache.commons.io.input.*;
    import org.apache.commons.io.output.*;
    import org.apache.commons.io.*;
    import org.apache.commons.io.filefilter.*;
     
     
    public class UploadServlet extends HttpServlet {
     
    //	 paramètres d'instance
    	private String defaultXML = null;
    	private String defaultXSL = null;
     
    	//	init
    	public void init() {
    		//	 on récupère les paramètres d'initialisation de la servlet
    		ServletConfig config = getServletConfig();
    		defaultXML = config.getInitParameter("defaultNom");
    		if(defaultXML==null) defaultXML="NNNNNNNNNNNNNNN";
    		defaultXSL = config.getInitParameter("defaultAge");
    		if(defaultXSL==null) defaultXSL="AAA";
    	}
     
    	//	GET
    	public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		//	 on récupère les paramètres du formulaire
    		String XML = request.getParameter("xml_file");
    		if (XML == null) {
    		XML = defaultXML;
    		}
    		String XSL = request.getParameter("xsl_file");
    		if (XSL == null) {
    		XSL = defaultXSL;
    		}
    		doFileWrite(request);
    	}
    	/**
    	* @param request la requête HTTP du client
    	* @param response la réponse HTTP qu'on va construire
    	*/
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    		//	 on passe la main au GET
    		doGet(request, response);
    	}
     
    	public void doFileWrite(HttpServletRequest request) throws IOException, ServletException {
     
    		//	 Set upload parameters
    		int MaxMemorySize = 512 * 1024 * 8; // en bytes
    		int MaxRequestSize = 1024 * 1024 * 8;
    		String yourTempDirectory = "c:/java/softwares/tomcat/webapps/ANTITODE/uploaded/"; // un répertoire ou tomcat
    		//	 a
    		//	 le droit d'écrire
     
    		//	 Create a new file upload handler
    		DiskFileItemFactory fileItemFactory = new DiskFileItemFactory( );
    		ServletFileUpload upload = new ServletFileUpload( fileItemFactory );
     
    		fileItemFactory.setSizeThreshold(MaxMemorySize);
    		upload.setSizeMax(MaxRequestSize);
    	    //upload.setRepositoryPath(yourTempDirectory);
     
    		//	 Parse the request -on recupère tous les champs du formulaire
    		List items;
    		try
    		{
    			items = upload.parseRequest(request);
     
    			//	 Process the uploaded items
    			Iterator iter = items.iterator( );
    			while ( iter.hasNext( ) )
    			{
    				FileItem item = (FileItem) iter.next( );
     
    				//	 Process a regular form field
    				if ( item.isFormField( ) )
    				{
    					String name = item.getFieldName( );
    					String value = item.getString( );
    				}
    				//	 Process a file upload
    				else
    				{
    					String fieldName = item.getFieldName( );
    					String fileName = item.getName( );
    					String contentType = item.getContentType( );
    					boolean isInMemory = item.isInMemory( );
    					long sizeInBytes = item.getSize( );
     
    					boolean writeToFile = true;
    					//	 Copie directe pour les petits fichiers, sinon streaming (le
    					//	 streaming ne marche pas)
    					if ( sizeInBytes > 512 * 1024 * 8 ) writeToFile = false;
     
    					//	 Process a file upload
    					if ( ( writeToFile ) & ( fieldName.equals( "source" ) ) )
    					{ // Ecriture directe
    						System.out.println( "Ecriture directe" );
    						File uploadedFile = new File( yourTempDirectory + fileName );
    						item.write( uploadedFile );
    					}
    					else
    					{ // Streaming
    						File uploadedFile = new File( yourTempDirectory + fileName ); // ou
    						//	 sinon
    						//	 un nouveau nom de fichier à la place de fileName
    						InputStream sourceFile;
    						try
    						{
    							sourceFile = item.getInputStream( );
    							OutputStream destinationFile;
    							try
    							{
    								destinationFile = new FileOutputStream( uploadedFile );
    								byte buffer[] = new byte[512 * 1024];
    								int nbLecture;
    								while ( ( nbLecture = sourceFile.read( buffer ) ) != -1 )
    								{
    									destinationFile.write( buffer, 0, nbLecture );
    								}
    								sourceFile.close( );
    							}
    							catch ( FileNotFoundException e )
    							{
    								//	 TODO Auto-generated catch block
    								e.printStackTrace( );
    							}
    							catch ( IOException e )
    							{
    								//	 TODO Auto-generated catch block
    								e.printStackTrace( );
    							}
    						}
    						catch ( IOException e )
    						{
    							//	 TODO Auto-generated catch block
    							e.printStackTrace( );
    						}
    					}
     
    				}
    			}
    		}
    		catch ( FileUploadException e )
    		{
    			//	 TODO Auto-generated catch block
    			e.printStackTrace( );
    		}
    		catch ( Exception e )
    		{
    			//	 TODO Auto-generated catch block
    			e.printStackTrace( );
    		}
    	}
    }
    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
    23
    24
    25
    26
    <%
    // on récupère les valeurs nécessaire à l'affichage
    String XML1=(String)request.getAttribute("txtXML");
    String XSL1=(String)request.getAttribute("txtXSL");
    %>
     
    <html>
    	<head>
    		<title>Antidote</title>
    	</head>
    	<body>
    		<center>
    			<h2>Antidote</h2>
    			<hr>
    				<form name="myform" method="post" enctype="multipart/form-data">
    				     <label for="xml_file">Indiquez le fichier XML à uploader</label><br />
    				     <input type="file" name="xml_file" id="xml_file" /><br />
    				     <label for="xsl_file">Indiquez le fichier XSL à uploader</label><br />
    				     <input type="hidden" name="MAX_FILE_SIZE" value="1048576" />
    				     <input type="file" name="xsl_file" id="xsl_file" /><br />
    				     <input type="submit" name="submit" value="Envoyer" />
    				</form>
    			</form>
    		</center>
    	</body>
    </html>

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    je soupsonne une histoire de path

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    Bonjour alexandre et merci de ta réponse,
    lorsque tu entends une histoire de path c'est a quel niveau ? Que pourrais je te montrer pour t'éclairer ?

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    "c:/java/softwares/tomcat/webapps/ANTITODE/uploaded/"

    pas certain que tu ne doives pas doubler les /

  10. #10
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    C'est normal qu'il ne se passe rien, tu as oublié de positionner le parametre action de la balise <form> pour faire le lien avec ta servlet.

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    ouais ^^
    mais j'ai testé en ajoutant dans action le parametre défini pour appeller ma servlet dans le web.xml et le résultat est une belle erreur 404 ...
    Donc il y aurait un probleme au niveau de la définition du contexte de ma servlet ?



    a savoir :
    <form name="myform" action="/gestionupload" method="post" enctype="multipart/form-data">

    ou /gestionupload correspond dans web.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app SYSTEM "http://java.sun.com/dtd/web-app_2_3.dtd" >
    <web-app>
    	<servlet>
    		<servlet-name>gestionupload</servlet-name>
    		<servlet-class>UploadServlet</servlet-class>
    		<init-param>
    			<param-name>defaultXML</param-name>
    			<param-value>inconnu</param-value>
    		</init-param>
    		<init-param>
    			<param-name>defaultXSL</param-name>
    			<param-value>XXX</param-value>
    		</init-param>
    	</servlet>
    	<servlet-mapping>
    		<servlet-name>gestionupload</servlet-name>
    		<url-pattern>/gestionupload</url-pattern>
    	</servlet-mapping>
    </web-app>
    je vais tester le doublage des /

    Merci pour vos réponses

  12. #12
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Essayes plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <form action="<%=request.getContextPath()%>/gestionupload"...>
    A part ça, dans ta servlet, le request.getParameter risque de te renvoyer null pour un formulaire de type "multipart/form-data". (sauf si tu utilises Struts 1.1)
    Il y a quelques pistes ici : http://www.jguru.com/faq/view.jsp?EID=1045507

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 82
    Points : 52
    Points
    52
    Par défaut
    merci pour ta réponse, effectivement maintenant le formulaire appelle la servlet et je tombe sur une magnifique erreur 500 que j'ai déjà rencontré hier.

    Je n'utilise pas struts, je trouvais que c'etait une interface lourde a mettre en place pour mon application qui n'est pas tres compliquée, elle me permet surtout de me familiariser avec les archi web en java avant mon stage

    j'avais vu qu'il pouvait y avoir certains problemes avec multiform, je fais y jeter un oeil merci pour ton lien !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
    Bizarre comme erreur, pourtant j'ai ajouté common-io

    l'erreur provient de la ligne
    items = upload.parseRequest(request);

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    t as ajouter la lib ? et t es sur qu elle est dispo dans ton repertoire WEB-INF/lib ?

  15. #15
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Je te conseil de mettre tous les jar dans WEB-INF/lib, ils seront directement mis sur le serveur (sans rien faire)...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Faire fonctionner une application Swing
    Par demoisellex dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 15/01/2012, 13h12
  2. Faire fonctionner une application sur un autre PC
    Par tung_france dans le forum C#
    Réponses: 10
    Dernier message: 15/05/2008, 18h23
  3. Manque paquets pour faire fonctionner une application
    Par mullger dans le forum Applications et environnements graphiques
    Réponses: 21
    Dernier message: 30/04/2007, 13h36
  4. Faire fonctionner une application monoposte en réseau
    Par obon dans le forum Bases de données
    Réponses: 3
    Dernier message: 30/04/2006, 10h26

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