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 :

CSS et Java/Struts/JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 11
    Points
    11
    Par défaut CSS et Java/Struts/JSP
    Bonjour à tous,

    Je suis actuellement sur un projet JEE 5/Struts 1 qui fonctionne sous Tomcat 5.5.
    Je tente actuellement de "maveniser" ce projet et d'inclure le plugin Jetty (7.6).

    Pour le moment, je bloque sur la page de connexion (authentification FORM par j_security_check) qui n'arrive pas à récupérer les CSS/JS et autres données statiques correctement.

    Lorsque je lance ma page web : "http://localhost:8081/MonProjet", le serveur redirige vers la page de connexion "http://localhost:8081/MonProjet/jsp/common/login.jsp". Cette modification d'URL pose problème car le navigateur n'arrive plus à récupérer la feuille de style à l'URL "./css/style.css".
    Une fois que je me connecte, la redirection vers la page d'accueil fonctionne bien est l'URL est "http://localhost:8081/MonProjet/accueil.do"

    L'arborescence de mon projet est la suivante :
    Nom : arborescence.PNG
Affichages : 432
Taille : 3,4 Ko

    Le contenu de mon web.xml (une partie) :
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
        version="2.4">
     
        <display-name>Projet</display-name>
        <context-root>/MonProjet</context-root>
        <context-param>
            <param-name>carto_url</param-name>
            <param-value>${carto.url}</param-value>
        </context-param>
     
        <listener>
            <listener-class>org.gci.web.listeners.HibernateListener</listener-class>
        </listener>
        <!-- Standard Action Servlet Configuration (with debugging) -->
        <servlet>
            <servlet-name>action</servlet-name>
            <servlet-class>org.gci.web.actions.ActionServlet</servlet-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>/WEB-INF/struts-config.xml</param-value>
            </init-param>
            <init-param>
                <param-name>debug</param-name>
                <param-value>2</param-value>
            </init-param>
            <init-param>
                <param-name>detail</param-name>
                <param-value>2</param-value>
            </init-param>
            <init-param>
                <param-name>projectconfig</param-name>
                <param-value>/WEB-INF/cfg/config.xml</param-value>
            </init-param>
            <load-on-startup>2</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>servletLog4j</servlet-name>
            <servlet-class>org.gci.web.servlets.Log4jServlet</servlet-class>
            <init-param>
                <param-name>log4j-file</param-name>
                <param-value>WEB-INF/classes/log4j.properties</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>operationManager</servlet-name>
            <servlet-class>org.gci.web.servlets.PasserelleOperationServlet</servlet-class>
            <init-param>
                <param-name>defaultPollTime</param-name>
                <param-value>86400000</param-value>
            </init-param>
            <!-- polling time en millisecondes -->
            <load-on-startup>9</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>dailyManager</servlet-name>
            <servlet-class>org.gci.web.servlets.PasserelleDailyServlet</servlet-class>
            <init-param>
                <param-name>defaultPollTime</param-name>
                <param-value>86400000</param-value>
            </init-param>
            <!-- polling time en millisecondes -->
            <load-on-startup>9</load-on-startup>
        </servlet>
     
        <!-- Standard Action Servlet Mapping -->
        <servlet-mapping>
            <servlet-name>action</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping>
     
        <error-page>
            <error-code>403</error-code>
            <location>/jsp/erreurs/page403.jsp</location>
        </error-page>
        <error-page>
            <error-code>404</error-code>
            <location>/jsp/erreurs/notfound.jsp</location>
        </error-page>
        <error-page>
            <error-code>500</error-code>
            <location>/jsp/erreurs/interne.jsp</location>
        </error-page>
        <error-page>
            <error-code>408</error-code>
            <location>/jsp/erreurs/timeout.jsp</location>
        </error-page>
        <!-- Struts Tag Library Descriptors -->
        <jsp-config>
            <taglib>
                <taglib-uri>/tags/struts-bean</taglib-uri>
                <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
            </taglib>
     
            <taglib>
                <taglib-uri>/tags/struts-html</taglib-uri>
                <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
            </taglib>
     
            <taglib>
                <taglib-uri>/tags/struts-logic</taglib-uri>
                <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
            </taglib>
     
            <taglib>
                <taglib-uri>/tags/struts-nested</taglib-uri>
                <taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
            </taglib>
     
            <taglib>
                <taglib-uri>/tags/struts-tiles</taglib-uri>
                <taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
            </taglib>
            <taglib>
                <taglib-uri>/tags/struts-menu.tld</taglib-uri>
                <taglib-location>/WEB-INF/struts-menu.tld</taglib-location>
            </taglib>
        </jsp-config>
        <security-constraint>
            <web-resource-collection>
                <web-resource-name>Protected Area</web-resource-name>
                <url-pattern>*.do</url-pattern>
                <http-method>HEAD</http-method>
                <http-method>GET</http-method>
                <http-method>POST</http-method>
                <http-method>PUT</http-method>
                <http-method>DELETE</http-method>
            </web-resource-collection>
            <auth-constraint>
                <role-name>actif</role-name>
            </auth-constraint>
        </security-constraint>
        <login-config>
            <auth-method>FORM</auth-method>
            <realm-name>Authentication Area</realm-name>
            <form-login-config>
                <form-login-page>/jsp/common/login.jsp</form-login-page>
                <form-error-page>/jsp/erreurs/errorlogin.jsp</form-error-page>
            </form-login-config>
        </login-config>
        <security-role>
            <role-name>actif</role-name>
        </security-role>
        <resource-ref>
            <description>Oracle Datasource</description>
            <res-ref-name>jdbc/projet</res-ref-name>
            <res-type>javax.sql.DataSource</res-type>
            <res-auth>Container</res-auth>
        </resource-ref>
     
        <filter>
            <filter-name>DownloadFilter</filter-name>
            <filter-class>org.gci.web.util.DownloadFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>DownloadFilter</filter-name>
            <url-pattern>*.do</url-pattern>
        </filter-mapping>
     
        <!-- Timeout de sesssion (en minutes) -->
        <session-config>
            <session-timeout>25</session-timeout>
        </session-config>
    </web-app>
    La JSP login.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
    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
    <%@ include file="/jsp/tld.jsp"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
            <!-- HTTP 1.1 -->
            <meta http-equiv="Cache-Control" content="no-store" />
            <meta http-equiv="Refresh" content="600">
            <!-- HTTP 1.0 -->
            <meta http-equiv="Pragma" content="no-cache" />
            <!-- Prevents caching at the Proxy Server -->
            <meta http-equiv="Expires" content="0" />
            <title><bean:message key="authentification.title" /></title>
            <link rel="stylesheet" href="./css/gmao.css" type="text/css" media="all" />
            <script type="text/javascript">
                function setfocus() {
                    document.loginForm.j_username.focus();
                }
            </script>
        </head>
     
        <script type="text/javascript" src="./scripts/fonctions.js"></script>
        <script language="javascript">
            closeOnExpire();
        </script>
        <%@ include file="/jsp/layout/blockUI.jsp"%>
        <body onload="setfocus();">
            <table width="100%" height="95%">
                <tr height="40px">
                    <td style="text-align: center"><img
                        src="./images/bandeau_gauche_nc_3.gif" border="0" /><img
                        src="./images/gl_small.gif" border="0" /><img
                        src="./images/bandeau.gif" border="0" /><br>
                    <br>
                    <span style="font-size: 12; font-weight: bold">Application</span></td>
     
                </tr>
                <tr style="vertical-align: middle;">
                    <td style="text-align: center;">
                        <form name="loginForm" action="j_security_check" method="post"
                            onsubmit="if (startsWith(false, j_username.value, 'voi')) j_username.value = j_username.value.toUpperCase();blockUI();">
                            <table style="width: 300px;" class="formulaire">
                                <tr>
                                    <td colspan="2" class="title"><span class="title"><bean:message
                                                key="authentification.title" /></span></td>
                                </tr>
                                <tr>
                                    <td class="label"><label for="j_username" class="required"><bean:message
                                                key="utilisateur.label.login" /> :</label></td>
                                    <td class="field"><input type="text" name="j_username" /></td>
                                </tr>
                                <tr>
                                    <td class="label"><label for="j_password" class="required"><bean:message
                                                key="utilisateur.label.password" /> :</label></td>
                                    <td class="field"><input type="password" name="j_password"
                                        value="" /></td>
                                <tr>
                                    <td colspan="2" class="buttonbar"><html:submit
                                            titleKey="bouton.valider" styleClass="valider"
                                            onmouseover="this.className='valider-hover'"
                                            onmouseout="this.className='valider'">
                                            <bean:message key="bouton.valider" />
                                        </html:submit></td>
                                </tr>
                            </table>
                        </form>
                    </td>
                </tr>
            </table>
        </body>
    </html>
    Le contenu de mon pom.xml (plugin Jetty) :
    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
    <plugin>
                    <groupId>org.mortbay.jetty</groupId>
                    <artifactId>jetty-maven-plugin</artifactId>
                    <version>7.6.16.v20140903</version>
                    <configuration>
                        <webAppConfig>
                            <contextPath>/MonProjet</contextPath>
                            <extraClasspath>src/main/resources/hibernate</extraClasspath>
                            <jettyEnvXml>src/main/resources/META-INF/jetty/jetty-env.xml</jettyEnvXml>
                        </webAppConfig>
                        <scanIntervalSeconds>10</scanIntervalSeconds>
                        <webAppSourceDirectory>${project.build.directory}/jetty-docroot</webAppSourceDirectory>
                        <connectors>
                            <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
                                <host>localhost</host>
                                <port>8081</port>
                                <maxIdleTime>60000</maxIdleTime>
                            </connector>
                        </connectors>
                    </configuration>
                    <executions>
                        <execution>
                            <id>jetty-run</id>
                            <phase>prepare-package</phase>
                            <goals>
                                <goal>run</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
    Le jetty-env.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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
        <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
            <Arg>jdbc/projet</Arg>
            <Arg>
                <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <Set name="driverClass">oracle.jdbc.driver.OracleDriver</Set>
                    <Set name="jdbcUrl">jdbc:oracle:thin:@xx.xx.xx.xx:1521:orcl</Set>
                    <Set name="factoryClassLocation">org.apache.naming.factory.BeanFactory</Set>
                    <Set name="user">login</Set>
                    <Set name="password">password</Set>
     
                    <Set name="minPoolSize">2</Set>
                    <Set name="maxPoolSize">5</Set>
                    <Set name="acquireIncrement">1</Set>
                </New>
            </Arg>
        </New>
     
        <Get name="securityHandler">
            <Set name="loginService">
                <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
                    <Set name="Name">Authentication Area</Set>
                    <Set name="LoginModuleName">authenticationModule</Set>
                </New>
            </Set>
        </Get>
    </Configure>
    Ça fait déjà un certain temps que je cherche mais sans résultat.
    L'application fonctionne très bien sur Tomcat et je n'arrive pas à trouver où se situe la différence entre les 2 serveurs.

    Merci d'avance pour votre aide

  2. #2
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Je viens de comprendre d'où venait le problème et de trouver la solution.
    Si j'ai bien tout saisi, par défaut Jetty effectue un "redirect" (code HTTP 302) vers la page de login alors que Tomcat effectue un "forward". Ce qui a pour effet de modifier l'URL de la page affichée qui devient celle de la JSP de login.
    La solution est de créer son propre Authenticator dans la configuration de Jetty.

    J'ai donc modifié le jetty-env.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
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
    <Configure class="org.eclipse.jetty.webapp.WebAppContext">
        <New id="dataSource" class="org.eclipse.jetty.plus.jndi.Resource">
            <Arg>jdbc/projet</Arg>
            <Arg>
                <New class="com.mchange.v2.c3p0.ComboPooledDataSource">
                    <Set name="driverClass">oracle.jdbc.driver.OracleDriver</Set>
                    <Set name="jdbcUrl">jdbc:oracle:thin:@xx.xx.xx.xx:1521:orcl</Set>
                    <Set name="factoryClassLocation">org.apache.naming.factory.BeanFactory</Set>
                    <Set name="user">login</Set>
                    <Set name="password">password</Set>
     
                    <Set name="minPoolSize">2</Set>
                    <Set name="maxPoolSize">5</Set>
                    <Set name="acquireIncrement">1</Set>
                </New>
            </Arg>
        </New>
     
        <Get name="securityHandler">
            <Set name="loginService">
                <New class="org.eclipse.jetty.plus.jaas.JAASLoginService">
                    <Set name="Name">Authentication Area</Set>
                    <Set name="LoginModuleName">authenticationModule</Set>
                </New>
            </Set>
            <Set name="authenticator">
        		<New class="org.eclipse.jetty.security.authentication.FormAuthenticator">
        			<Arg>/jsp/common/login.jsp</Arg>
        			<Arg>/jsp/erreurs/errorlogin.jsp</Arg>
        			<Arg type="boolean">true</Arg>
        		</New>
        	</Set>
        </Get>
    </Configure>
    L'élément important, est le 3ème paramètre du FormAuthenticator. S'il vaut false (valeur par défaut), Jetty effectuera un "redirect".

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

Discussions similaires

  1. Struts JSP Récuper une liste JSP vers Java
    Par Anthone dans le forum Struts 1
    Réponses: 0
    Dernier message: 11/10/2012, 11h00
  2. css et java en struts 2
    Par Bigoodheart dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 29/12/2010, 19h13
  3. [Struts][jsp] probleme de path
    Par vpet dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/03/2004, 19h21
  4. [ STRUTS ][ JSP ][ ArrayList] un lien pour trier
    Par LoulouFifi dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 03/02/2004, 18h24
  5. [struts][JSP][select] problème avec le select
    Par redge_touch dans le forum Struts 1
    Réponses: 4
    Dernier message: 14/01/2004, 11h05

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