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 :

Execution JS coté serveur..?


Sujet :

Développement Web en Java

  1. #1
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut Execution JS coté serveur..?
    Bonjour à tous!

    J'ai hérité d'une application java web. L’équipe d'origine avait mis en place un système de validation des données des formulaires en js.
    La demande que j'ai est de pouvoir parcourir les pages automatiquement, c'est à dire instancier la servlet, effectuer la validation, puis continuer vers la page suivante.. automatiquement!

    Pendant mes recherches, j'ai lu et relu que exécuter du js coté serveur était une mauvaise chose, c'est en dehors de la logique client/serveur. Je comprend bien cela, mais je n'allais quand même pas recoder toute la validation en java! si?

    Pour l'instant, j'ai ajouté un filter qui me permet de modifier la ServletResponse obtenue afin de rajouter un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="js">clickSurMonBoutonSuivant()</script>
    (logique un peu plus compliquer que ca, la navigation n'est pas straigth forward) ce qui fait que les pages changent toutes seules, mais sous l'oeil de l'utilisateur..

    Y aurait il un moyen d'effectuer toute cette navigation coté serveur (servlet / validation js / trigger du bouton pour rappeler la servlet / servlet / validation js / .............) ?
    J'ai lu que Rhino ou Node.js pouvait exécuter du code js coté serveur. Est ce adapté pour résoudre mon problème?

    Merci d'avance pour vos réponses
    J’ai des questions à toutes vos réponses!

  2. #2
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    Je comprend bien cela, mais je n'allais quand même pas recoder toute la validation en java! si?
    Si.

    Si tu as un back en Java alors oui tu dois coder en Java, tu dois effectuer les contrôles coté serveur, c'est l'une des bases de la sécurité Web.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  3. #3
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Oui je vois. Le truc c'est que l'équipe d'origine travaille toujours sur l'application (le client les paient pour mettre à jour leur framework, et nous paie pour ajouter des fonctionnalités dans leur dos, car on coute moins cher ).
    La partie validation doit rester en js.

    Les options que je vois (sans vraiment voir comment faire pour l'instant) sont:
    - faire un doublon de la machinerie en java, mais dès que l’équipe de développeur fera une modification de la validation js, cela nous obligera à la repérer (pas simple dans des milliers de lignes éparpillées dans des 100aine de fichiers/classes) puis à les recoder en java.. et puis, on ne sera jamais certain d'avoir le meme résultat que lors d'une navigation normale de l'utilisateur...
    - exécuter le js coté serveur. D'instinct cela me parait être une bonne solution de secours, il n'y aurait pas de doublon, d'erreur dans le portage, et le client (et nous meme) n'aurait pas l'impression que nous travaillons pour refaire des choses qui existent deja..

    D'instinct je dirai qu'il y a beaucoup plus de d'avantage à mettre en place la 2eme solution, l’exécution du js coté serveur.. mais je t'avoue que je ne connais pas du tout les impacts dont tu me parles au niveau de la sécurité.. est ce vraiment un soucis? (c'est une application d'entreprise, accessible depuis un vpn par les employés seulement)
    J’ai des questions à toutes vos réponses!

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    même si il est possible d'exécuter du js coté serveur avec des librairies comme rhino, ça ne t'avancera pas à grand chose. rhino comprendra la syntaxe js, mais ne fournis pas de parseur html, donc pas de dom browser sur lequel travailler.

    Déjà si t'essayais un peu de nous expliquer ce que tu essaier de faire, on pourrais mieux te guider. Car une servlet a pour but de traiter une demande d'un browser, et de fournir une réponse. Si tu veux bypasser le browser, c'est que tu connais déjà les paramètres à appliquer à la requête. Donc pas besoin de validation. Donc pas besoin du js...

    Tu es peux être occupé de te fourvoyer et essayer d'implémenter coté serveur un truc qui devrait être implémenté coté client. Après tout si tu veux simuler plusieurs opérations en cascade depuis un client, tu peux le faire avec un petit script js et du xmlHttpRequest.

  5. #5
    Modérateur
    Avatar de Gugelhupf
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Décembre 2011
    Messages
    1 320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste Programmeur

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 320
    Points : 3 741
    Points
    3 741
    Billets dans le blog
    12
    Par défaut
    J'ai vraiment du mal à saisir ton besoin, à te lire j'ai l'impression que tu as une équipe X qui s'occupe du dév. front (HTML && CSS && JS), et toi équipe Y coté back tu veux juste copier/coller leur code JS contenant des validations de formulaire (le code JS avec des "if" de l'équipe X) pour aller au plus vite .

    Si c'est ce à quoi tu penses alors ce ne sera pas aussi simple que tu crois, car tu devras forcément adapter le code du serveur par rapport aux requêtes envoyées par le front. Si ta contrainte est juste de réaliser un back en JS (cf: "La partie validation doit rester en js."), alors fais du Node.JS mais ça ne te permettra surement pas de reprendre directement le code JS coté front, tu devras quoi qu'il arrive faire des contrôles, mettre en place la logique métier que le front ne possède pas, gérer la persistance des données etc

    Si j'ai un conseil à te donner, vu que vous êtes plusieurs équipes à travailler sur ce projet, c'est de ne pas travailler en sous-marin (chacun de votre coté), de partager vos connaissances pour avancer plus rapidement ensemble.
    N'hésitez pas à consulter la FAQ Java, lire les cours et tutoriels Java, et à poser vos questions sur les forums d'entraide Java

    Ma page Developpez | Mon profil Linkedin | Vous souhaitez me contacter ? Contacter Gokan EKINCI

  6. #6
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Bonjour bonjour,

    En effet nous sommes 2 équipes distinctes, qui ne travaillent pas ensemble (volonté du client..). L'autre équipe s'occupe de maintenir le framework qu'ils vendent au client. Mon équipe s'occupe d'effectuer des développements autour du framework.

    En ce qui concerne mon problème..

    Pendant une navigation normale dans une partie du site (enchainement de page type "catalogue", série de formulaire qui oriente les prochains) l'utilisateur doit remplir les formulaires, puis cliquer sur Suivant (stratégie simplifiée).
    Les formulaires sont générés par la servlet, puis les données sont filtrées par du JavaScript au chargement de la page. Au clic sur le bouton Suivant, une autre série de fonction JavaScript valide les données insérées/modifiées par l'utilisateur puis décide de la future page à afficher.

    C'est le fonctionnement imposé par les développeurs du framework, l'autre équipe.

    La dernière demande du client est de pouvoir sauter d'un formulaire A vers un formulaire X, qui auront déjà tous été configuré en amont. Le problème est qu'on ne peut pas simplement boucler sur la servlet, puisqu'au chargement, ainsi qu'au "pre submit" de chacune d'elles, du code JavaScript est censé modifié la réponse et la request.

    Pour l'instant j'ai créé un Servlet Filter qui me permet d'ajouter à la fin de la réponse, du code JavaScript qui va s'occuper tout seul de perform le clic sur le bouton Suivant. Tout fonctionne mais j'aimerai pouvoir exécuter ce code JavaScript directement sur le serveur au lieu d'attendre que ce soit le web browser de l'utilisateur qui le fasse.

    N'étant pas un développeur web à la base, je ne vois pas bien les problèmes que cela pourrait engendrer (failles de sécurité). Je vois juste que ce serait super pratique..

    Je vais faire quelques tests avec Node.JS et/ou Rhino et voir ce que cela donne.
    J’ai des questions à toutes vos réponses!

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 37
    Points : 39
    Points
    39
    Par défaut
    je trouverais moins laborieux de coder la validation cotés serveur (en java), que de forcer le serveur à exécuter du js.
    De plus, l'appli gagnera en cohérence, ce qui n'est pas du luxe en cas de reprise du programme.

  8. #8
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut
    Je trouve aussi, si cela avait une option j'aurai plongé directement.. Cette validation JS est généré par la servlet principale. Dans le code source généré, pas loin de 6000 lignes sont du JavaScript.. sur 7000.
    Après avoir en gros vu ce qu'il s'y faisait, je ne préfère pas mettre mon nez dedans

    Du coup j'ai abandonné l'idée de faire tourner un JS engine coté serveur. Si ce que j'avais en tête est possible, ce n'est pas de mon niveau.
    Je laisse le navigateur client exécuter ces 6000 lignes à chaque page avant de simuler le clic de l'utilisateur. A défaut de la rapidité, j'ai la navigation automatique que voulait mon client..
    J’ai des questions à toutes vos réponses!

Discussions similaires

  1. [Exchange 2000] execution d'un script coté serveur
    Par ziko.1988 dans le forum Exchange Server
    Réponses: 0
    Dernier message: 16/07/2010, 13h16
  2. executer swf coté serveur
    Par Pitrivief dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 28/11/2009, 10h41
  3. Peut on executer les applets coté serveur?
    Par felops dans le forum Tomcat et TomEE
    Réponses: 13
    Dernier message: 11/04/2008, 17h17
  4. [MySQL] Executer des requetes coté serveur (ex : Verifier si un champ "date" etc
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/12/2007, 16h32
  5. [Concept] Curseur coté client et curseur coté serveur
    Par freud dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 13/09/2002, 22h13

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