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 :

Classe statique sur un serveur


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut Classe statique sur un serveur
    Bonsoir,
    la question est dans le titre, je souhaiterais simplement savoir s'il est possible d'utiliser des objets HttpServletRequest et HttpServletResponse dans une classe qui n'hérite pas HttpServlet sur un serveur tomcat, perso j'utilise spring pour monter un site, et je ne sais pas comment faire sans, d'où plus ou moins ma question, mais c'est surtout pour une autre raison :

    dans toutes mes servlets j'ai actuellement une classe privée de ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private class Views {
     
        public String accueil(HttpServletRequest request, String message) {
             request.setAttribute("user", getUser(request));
             request.setAttribute("temoignages", serviceTemoignage.getAll());
             request.setAttribute("message", message);
             return ("/WEB-INF/vues/accueil.jsp");
        }      
    }
    contenant en fait plusieurs méthodes semblables, dont celle-ci qui apparait sur toutes les pages, et j'aimerais pouvoir centraliser toutes ces méthodes dans une classe privée à part. J'ai donc imaginé que je pourrais utiliser une classe statique contenant tous mes liens vers mes fichiers .jsp afin de les centraliser(pas de problème avec les noms des méthodes j'ai distingué tous les noms suivant chaque cas sauf accueil(...) et accueilNC() communes à tous les servlets), cependant j'ai besoin d'accéder à ma bdd via la couche service comme ici avec l'objet serviceTemoignage que je dois actuellement initialiser dans chaque servlet et je me dit que ça commence à faire long et qu'il existe forcément un autre moyen, c'est du java quand même... et donc je me demandais si tomcat acceptais ce genre de classe statique sans HttpServlet.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    Voici aussi comment j'initialise actuellement la couche service, je sais pas si ça peut servir, mais bon...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public class Messages extends HttpServlet {
     
        private IService serviceTemoignage = null;
     
        @Override
        final public void init(ServletConfig c) throws ServletException {
            super.init(c);
            serviceTemoignage = (IService) new XmlBeanFactory(new ClassPathResource("spring-config-postgres.xml")).getBean("serviceTemoignage");
        }
     
    ...
     
    }

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ben que votre méthode soit statique ou pas n'y change rien, il faudra lui passer le servletRequest si elle a besoin de le modifier

    Pour ce qui est d'injecter du spring dans vos servlet, pourquoi ne pas passer par l'AOP fournis par spring, qui permet d'injecter comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    @Configurable
    public class Messages extends HttpServlet {
     
        private IService serviceTemoignage = null;
        @Autowired
        public void setServiceTemoignage(IService service){serviceTemoignage=service;}
        public IService getServiceTemoignage(){return serviceTemoignage;}
    }
    Bon c'est un choilla plus complexe (voir la doc de spring sur l'injection de dépendance dans les objet qui ne sont pas gérés par spring)
    http://static.springsource.org/sprin...atconfigurable

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    Oh déjà une réponse !!
    Pour spring,et bien tout simplement parce que je ne le savais pas, dans les tutos de Serge Tahé il présente cette méthode, elle marche et ça me convient, mais celle-ci a du charme je l'avoue

    euh, il n'y aurait pas une erreur par rapport à mon code, j'ai l'impression qu'il faudrait écrire

    public void setServiceTemoignage(IService service){serviceTemoignage=serviceTemoignage;}

    D'après moi, il manque le dernier mot dans votre version.

    Pour le sujet de la question, j'ai dans les paramètres de la méthodes l'objet HttpServletRequest request donc c'est déjà bon de ce côté, mais suis-je obligé de faire que ma classe hérite de HttpServlet pour utiliser la classe HttpServletRequest dans mes méthodes comme dans cet exemple dans une classe à part, ne servant qu'à renvoyer ces string, seulement je voudrais que le fichier utilisé par mes servlets ne soit exécuté qu'une seule fois sur le serveur pour tous les servlets, plutot que de voir cette classe chargée à chaque servlet exécutée, je sais pas trop si c'est possible.

    Euh en écrivant je me demande si je pourrais pas initialiser mes liens dans web.xml ou avec spring, à la limite si vous connaissez un petit lien ou un tuto ou avez un exemple sous la main je suis preneur

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Non il n'y a pas d'erreur, j'ai bien passé un paramètre que j'ai appelé service


    j'ai du mal a vous suivre par contre. Donc je vais répondre en général. Non, vous n'avez pas besoin d'étendre HttpServlet pour manipuler les objet httpservletrequest et httpservletresponse. Ce objet ne sont que des paramètres passés à un méthode de la servlet (qui elle étends HttpServlet) dans sa méthode doGet/doPost, etc. Bref ce que vous faites de ces objet une fois que vous les avez recus lors de l'appel, c'est vo affaire, vous en faite un arbre de noel pour décorer si ça vous chante

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    92
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 92
    Par défaut
    [Euh reflexion faite la dernière proposition est hors sujet puisque je souhaite passer mes paramètres dans la requête, j'aurai besoin de la garder sous forme de méthodes que j'appelle, c'est juste les en-tetes des classes et méthodes qui m'embetent à la limite...]

    [EDIT]
    J'ai répondu trop tard... en effet entre temps j'ai bricolé un truc et ça marche.

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

Discussions similaires

  1. [POO] Appels statiques sur des classes
    Par daajack dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2007, 15h47
  2. recuperer une class sur mon serveur
    Par hterrolle dans le forum Général Java
    Réponses: 6
    Dernier message: 05/12/2007, 22h14
  3. Trouve pas mes classes sur le serveur de production
    Par batataw dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 22/09/2007, 12h01
  4. Réponses: 1
    Dernier message: 28/03/2007, 12h01
  5. Réponses: 12
    Dernier message: 14/08/2006, 12h55

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