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

Struts 1 Java Discussion :

[Struts] Page blanche


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut [Struts] Page blanche
    Voilà j'ai suivi un conseil dans la FAQ Struts qui permet de passer directment sur un *.do en page d'accueil.

    J'ai configuré comme suit mais le résultat me donne une page blanche! Avant j'avais ma page index.jsp qui avait un lien qui pointait vers le logon.do et tout marchait parfaitement. Quelqu'un a une idée ?

    web.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>
    struts-config.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        <action    path="/logon"
                   type="org.apache.struts.webapp.example.LogonAction"
                   name="logonForm"
                  scope="session"
                  input="logon">
    		<forward name="success" path="/search.do"/>
        </action>
    index.jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
     
    <logic:forward name="logon"/>

  2. #2
    Membre habitué
    Inscrit en
    Octobre 2005
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 10
    Par défaut
    As tu regardé les logs coté serveur?

    Je n'utilise pas Struts, mais quand j'ai une page blanche, j'arrive a trouver des messages d'erreur dans le catalina.out de mon tomcat....

    Peut etre est ce pareil dans ton cas...

  3. #3
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Citation Envoyé par Skydoll
    As tu regardé les logs coté serveur?

    Je n'utilise pas Struts, mais quand j'ai une page blanche, j'arrive a trouver des messages d'erreur dans le catalina.out de mon tomcat....

    Peut etre est ce pareil dans ton cas...
    Ce qui est troublant c'est qu'aucune erreur ne s'affiche. Je développe avec Eclipse et le plugin tomcat et rien ne s'affiche comme message d'erreur dans la console...

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    salut,

    t'es sur que c'est ta page index est appelé. ce probleme survient des fois quand il y'a problème de compilation des jsp!!

    essaye de bien définir le chemin de ta page!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
      </welcome-file-list>

  5. #5
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Vérification effectuée !

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par fisico
    Vérification effectuée !
    tu as définis le global forward:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <global-forwards> 
       <forward name="logon" path="/logon.do"/> 
    </global-forwards>

  7. #7
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Quand je définis pas ce global forward, j'ai une page blanche...

    Quand je définis ce global forward, mon serveur boucle !

  8. #8
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Quand on code un logic:forward dans une jsp, il faut que le forward soit défini dans la section <global-forwards>.

    Mais normalement, il devrait te mettre un message d'erreur du style
    Cannot find global ActionForward for name logon

  9. #9
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par fisico
    Quand je définis pas ce global forward, j'ai une page...

    Quand je définis ce global forward, mon serveur boucle !
    le logic forward demande un global forward, je te conseil d'enlever le forward, voir d'abord si la page index.jsp est bien affiché, puis tester ton action logon, s'il rentre dans l'action et sa reboucle c'est peut etre dans ton action search.do!!
    faut tester les choses une par une ..

  10. #10
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Maintenant j'ai recompilé et j'ai bien l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cannot find global ActionForward for name logon
    Je vais rajouter le global et vous faire suivre l'erreur.

  11. #11
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il y a quand même quelque chose qui m'échappe.

    Tel que tu as codé, tu cherches à exécuter l'Action LogonAction avant de saisir quoi que ce soit dans un formulaire ?
    Que fais LogonAction, elle initialise ton formulaire de login ?

    Et quel est l'intérêt d'écrire une jsp dans laquelle tu codes seulement un forward ?

    Pourquoi ne pas pointer directement sur ta page jsp de logon dans le welcome-file ?

  12. #12
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    C'est ma première application en struts. Donc je ne saisis pas encore tout.

    Je vais essayer d'être clair pour expliquer ce que j'essaye de faire.

    En fait, j'aimerais que quand je tape l'url de mon application, je tombe sur un formulaire contenant deux champs (login et password).

    Et quand je clique sur le bouton, j'ai le formulaire qui va recherche dans ma bd mysql les données et vérifie si l'utilisateur a fourni un bon login et password.

    Cette vérification, je l'a fait avec LogonAction. Mais apparemment je m'y prend mal...

  13. #13
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par fisico
    En fait, j'aimerais que quand je tape l'url de mon application, je tombe sur un formulaire contenant deux champs (login et password).
    Donc, dans <welcome-file>, mets ta page jsp de login plutôt que la page index.jsp.

  14. #14
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    dans la définition de l'action:

    le input est une page jsp!!
    dans cette page, il faut développer un formulaire dont l'action est celle ou tu vérifie le user et le mot de passe : logonAction

    tu as développez les actions??

  15. #15
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    Alors j'ai fait les mises à jour et voici ce qui se produit.

    Quand je donne des login et password corrects, je suis bien dirigé vers la page search.do donc ça marche.

    MAIS

    Quand je donne des login et password incorrects je tombe sur une page blanche.

    web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
      <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
      </servlet-mapping>
     
      <welcome-file-list>
        <welcome-file>logon.jsp</welcome-file>
      </welcome-file-list>
    struts-config.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
    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
    	<data-sources>
    		<data-source key="webserver">
    			<set-property property="driverClass" value="com.mysql.jdbc.Driver"></set-property>
    			<set-property property="url" value="jdbc:mysql://localhost/webserver"></set-property>
    			<set-property property="user" value="root"></set-property>
    			<set-property property="password" value="root"></set-property>
    			<set-property property="minCount" value="2"></set-property>
    			<set-property property="maxCount" value="5"></set-property>
    		</data-source>
    	</data-sources>	
      <form-beans>
        <form-bean name="logonForm" type="org.apache.struts.validator.DynaValidatorForm">
    		<form-property name="username" type="java.lang.String"/>
    		<form-property name="password" type="java.lang.String"/>
        </form-bean>
        <form-bean name="searchForm" type="org.apache.struts.validator.DynaValidatorForm">
    		<form-property name="criteria" type="java.lang.String"/>
        </form-bean>	     
      </form-beans>
      <global-forwards>
    	<forward name="logoff" path="/logoff.do"/>	    
      </global-forwards>			
      <action-mappings>
        <action    path="/logoff"
                   type="org.apache.struts.webapp.example.LogoffAction">
    		<forward name="success" path="/logon.jsp"/>
        </action>
        <action    path="/logon"
                   type="org.apache.struts.webapp.example.LogonAction"
                   name="logonForm"
                  scope="session"
                  input="/logon.jsp">
    		<forward name="success" path="/search.do"/>
        </action>
    	<action
    	path="/search"
    	parameter="/search.jsp"
    	type="org.apache.struts.actions.ForwardAction"
    	/>  	  
    	<action
    	path="/result"
    	parameter="/result.jsp"
    	type="org.apache.struts.actions.ForwardAction"
    	/>		  	  	  	  
      </action-mappings>
    logon.jsp
    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
     
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
     
    <html:html locale="true">
    <head>
    <title><bean:message key="logon.title"/></title>
    <html:base/>
    </head>
    <body bgcolor="white">
     
    <html:img src="img/header.jpg"/>
     
    <h3><bean:message key="logon.heading"/></h3>
     
    <html:form action="/logon" focus="username" onsubmit="return validateLogonForm(this);">
     
    <table>
    <tr>
    <td width=100><bean:message key="prompt.username"/></td>
    <td width=100><html:text property="username" size="15" maxlength="15"/></td>
    </tr>
    <tr>
    <td><bean:message key="prompt.password"/></td>
    <td><html:password property="password" size="15" maxlength="15" redisplay="false"/></td>
    </tr>
    </table>
    <br>
    <html:submit value="Se connecter"/>
    <html:reset value="Effacer"/>
    </html:form>
     
    <html:errors/>
     
    <html:javascript formName="logonForm"
            dynamicJavascript="true"
             staticJavascript="false"/>
    <script language="Javascript1.1" src="staticJavascript.jsp"></script>
     
    </body>
    </html:html>
    LogonAction.java
    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
    package org.apache.struts.webapp.example;
     
    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.Locale;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletResponse;
    import javax.sql.DataSource;
    import javax.sql.RowSet;
     
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.util.ModuleException;
    import org.apache.struts.util.MessageResources;
    import org.apache.commons.beanutils.PropertyUtils;
     
    public final class LogonAction extends Action {
     
        public ActionForward execute(ActionMapping mapping,
    				 ActionForm form,
    				 HttpServletRequest request,
    				 HttpServletResponse response)
    	throws Exception {
     
            Locale locale = getLocale(request);
     
    		DataSource dataSource = this.getDataSource(request, "webserver");
     
    		if (dataSource == null) {
    			ActionErrors errors = new ActionErrors();
    			errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.database.missing"));
    		    saveErrors(request, errors);
    	        return (mapping.getInputForward());
    		}		
     
    		MessageResources messages = getResources(request);
     
    		Connection connection = null;
    		Statement st = null;
    		ResultSet rs = null;
    		String query = null;
    		RowSet rowset = null;
    		int ResultCount = 0;
     
    		String username = (String)PropertyUtils.getSimpleProperty(form, "username");
    	    String password = (String)PropertyUtils.getSimpleProperty(form, "password");
     
    		try {
    			 connection = dataSource.getConnection();
    			 query = "select count(*) as rowcount from tb_users where login='"+username+"' and password='"+password+"'";
    			 st = connection.createStatement();
    			 rs = st.executeQuery(query);
     
    			 rs.next();
    			 ResultCount = rs.getInt("rowcount") ;			 
     
    			 rs.close();
    			 st.close();
    		 } catch (Exception ex) {
    			 ActionErrors errors = new ActionErrors();
    			 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("error.database.connection"));
    			 this.saveErrors(request, errors);
    			 return (mapping.getInputForward());
    		 } finally {
    			 try {
    			     connection.close();
    			 } catch (Exception ignored) {
    			 }
    		 }	
     
    		if(ResultCount == 0) {
    		    ActionErrors errors = new ActionErrors();
    	        errors.add(ActionErrors.GLOBAL_ERROR,new ActionError("error.password.mismatch"));
    	        this.saveErrors(request, errors);
    	        return (mapping.getInputForward());
    		}
    		else
    		{
    			HttpSession session = request.getSession();
    			session.setAttribute(Constants.USER_KEY, username);
     
    			if (mapping.getAttribute() != null) {
    		            if ("request".equals(mapping.getScope()))
    		                request.removeAttribute(mapping.getAttribute());
    		            else
    		                session.removeAttribute(mapping.getAttribute());
    		    }
     
    			return (mapping.findForward("success"));
    		}
        }
    }

  16. #16
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Il suffit de faire un forward vers la page d'input,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return  new ActionForward(actionMapping.getInput());
    et dans la jsp:
    pour afficher le message d'erreur.

  17. #17
    Membre confirmé Avatar de fisico
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 98
    Par défaut
    J'ai fait comme dit, ça marche maintenant mais je ne comprends pas pourquoi...

    J'ai une question super bête, la fonction qui est appelé avec onsubmit sur la page logon.jsp est généré automatiquement ?

  18. #18
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Par défaut
    Citation Envoyé par fisico
    J'ai fait comme dit, ça marche maintenant mais je ne comprends pas pourquoi...

    J'ai une question super bête, la fonction qui est appelé avec onsubmit sur la page logon.jsp est généré automatiquement ?
    la fonction doit etre defini quelque part dans ton application, lisant son nom, elle doit vérifier la validité de données du formulaire.
    Ce n'est pas conseilllé de le faire coté client, tu peux utiliser soit Struts validator, ou valider juste dans la fonction validate de ActionForm.

    Le formulaire est envoyé grace au qui envoi le formulaire à l'action définit dans html:form.

    Je te conseil de lire la doc de Struts avant de plonger dans le code!!!

  19. #19
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par Sniper37
    Citation Envoyé par fisico
    J'ai fait comme dit, ça marche maintenant mais je ne comprends pas pourquoi...

    J'ai une question super bête, la fonction qui est appelé avec onsubmit sur la page logon.jsp est généré automatiquement ?
    la fonction doit etre defini quelque part dans ton application, lisant son nom, elle doit vérifier la validité de données du formulaire.
    Ce n'est pas conseilllé de le faire coté client, tu peux utiliser soit Struts validator, ou valider juste dans la fonction validate de ActionForm.

    Le formulaire est envoyé grace au qui envoi le formulaire à l'action définit dans html:form.

    Je te conseil de lire la doc de Struts avant de plonger dans le code!!!
    fisico utilise déjà le Validator.

    Donc, pour répondre à ta question fisico, le Javascript est généré automatiquement par le Validator.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Directives] Page blanche quand erreur de syntaxe
    Par syl2095 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 17/02/2006, 15h15
  2. Internet Explorer m'affiche une page blanche
    Par poof65 dans le forum IE
    Réponses: 10
    Dernier message: 15/08/2005, 22h50
  3. Page blanche pour l'impression d'un état
    Par PAINCO dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 14h46
  4. [C#] Page blanche lors avec Response (NFop)
    Par SoaB dans le forum ASP.NET
    Réponses: 2
    Dernier message: 16/06/2005, 16h26
  5. [CR] Avoir seulement une page blanche qd la base est vide???
    Par littleChick dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 13/08/2002, 18h26

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