Qu'est-ce qu'une Scripting Page ?
Il existe deux types de Scripting Pages :
Commandes incluses : Cela ressemble beaucoup aux JSP, mais en plus simple.
Il suffit d'inclure dans la page HTML des portions de script encadrées par les signes
<% et %>. Les commandes sont evaluées au chargement de la page,
et les sorties envoyées vers la sortie HTML, donc le browser client.
Fonctions : Vous pouvez remplacer l'URL d'un lien par une commande et ses
arguments, en suivant la syntaxe du langage de script utilisé,
comme print("hello") ou puts "hello".
Quel est le langage de script utilisé ?
C'est la partie amusante du projet : il n'y a pas de langage recquis pour utiliser SSP.
En théorie, vous pouvez utiliser n'importe quoi et l'intégrer dans SSP si cela suit
les spécifications suivantes :
- Il existe une interface en Java à ce que vous voulez utiliser,
- il est possible d'évaluer ou d'interpréter des portions de code à la volée.
En fait, SSP est un ensemble de classes Java construit autour d'une classe de base
abstraite. Lorsque vous voulez ajouter un nouveau langage à SSP, derivez cette classe
et connectez ainsi les classes de votre code.
Quels sont les langages de Script déjà disponibles ?
Dans la version courante (SSP-0.2), les langages de script suivants ont été connectés
(sélectionnez-en un pour plus d'informations) :
- TCL (le Tool Command Language)
- BeanShell
- JPython ( implémentation en Java du
langage Python)
- FESI (le "Free ECMA Script Language")
- DynamicJava
(un interpréteur Java écrit en Java)
Bien sûr, les implementations ne sont pas toujours complètes, ni compatible avec toutes
les possibilités offertes par le langage de script. Ceci pourra évoluer avec les
prochaines versions de SSP, en fonction des besoins des utilisateurs.
Aujourd'hui, l'implémentation de TCL fonctionne bien, car je connais bien ce langage,
et jpython a été plus testé que les autres implémentations.
Comment l'utiliser ?
Point de vue de l'Administrateur de site Web
SSP est un ensemble de Servlets Java. Vous allez devoir trouver la bonne servlet
pour votre langage de script . Ensuite, vous devez l'assigner à
- un contexte virtuel se terminant par la bonne extension
( ex: /myProject/jpython pour utiliser des commandes JPython dans un contexte
nommé 'myProject').
- un type de fichier ( ex: *.hpy pour utiliser JPython en inclusion sur la page)
et créer un fichier nommé myProject.ext où ext est une extension
specifique au langage. Ce fichier est relu à chaque fois qu'il change.
Tout ceci, bien sûr, depend de votre serveur Web. La distribution de SSP
fournit un contexte d'exemple pour Tomcat. Si vous utilisez Tomcat,
recopiez le contenu du répertoire 'webapps' dans celui de Tomcat,
et ajoutez le contexte dans le fichier conf/server.xml de Tomcat :
<Context path="/lang" docBase="webapps/lang" debug="0" reloadable="true" />
La correspondance actuelle des informations est la suivante :
Langage |
Servlet |
Sous-Contexte |
Extension |
ext. du fichier init. |
Tool Command Language |
alantea.com.ssp.TclServlet |
tcl |
.htcl |
.tcl |
Bean Shell |
alantea.com.ssp.BeanShellServlet |
BeanShell |
.hbsh |
.bsh |
Python |
alantea.com.ssp.PythonServlet |
python |
.hpy |
.py |
Free Ecma Script |
alantea.com.ssp.FesiServlet |
Fesi |
.hes |
.es |
Java Interpreter |
alantea.com.ssp.DynamicJavaServlet |
djava |
.hjava |
.djava |
Point de vue du Concepteur de Site
Lorsque SSP est intégré à un serveur pour le langage que vous désirez (voir ci-dessus)
,vous pouvez personnaliser vos contextes. Ceci peut être fait de trois façons :
- Ecrire quelques fonctions dans le fichier initial du langage dans le contexte.
- intégrer des portions de script dans les pages HTML
(entre les signes <% et %>) et enregistrer ces pages avec la bonne extension.
- appeler des fonctions de script comme des URL dans les liens HTML.
Pour tout cela, regardez les exemples.
Point de vue de l'Utilisateur du site Web
Le fonctionnement de SSP n'est quasiment pas visible du browser, uuisqu'il ne reçoit
que le code HTML généré par les sorties du script, et ne voit jamais le code.
La seule partie visible est l'appel à des scripts en tant qu'URLs.
Il est aussi possible d'envoyer du code à partir du browser vers le serveur,
en utilisant des forms. C'est un petit truc, mais cela peut être très utile.
Lorsque vous appelez directement la servlet (ex: /lang/python ) à partir d'un
formulaire en réalisant une commande "POST",et si ce formulaire contient un objet
nommé "cmd", alors le contenu de cet objet est utilisé en tant que script, evalué,
et ses sorties retournées vers le browser. En ce qui concerne la version courante
tous les autres objets du formulaire sont passés en arguments par paire
nom valeur comme arguments de la commande. Ceci est nouveau dans cette version 0.2.
Je pense que cela deviendra une règle générale.
Point de vue du Programmeur de Servlet
N'importe qui peut étendre les possibilités de SSP avec de nouvelles servlets de
script. Tout ce dont vous avez besoin, c'est une classe Java qui :
- dérive de alantea.com.ssp.LangServlet
- implémente les mèthodes suivantes :
- protected void initServlet(boolean firstTime) qui doit initialiser la servlet. Elle est appelée à chaque fois que le fichier d'initialisation a changé. Lors du premier appel, l'argument vaut true, sinon false.
- protected void evaluate(String cmd) qui doit implémenter l'évaluation d'une chaîne de caractères contenant une ou plusieurs lignes de code en script. Lorsque cette fonction est appelée, System.out pointe directement vers le Writer de réponse la servlet.
Que manque-t-il ?
Des tonnes de choses, bien sûr !
Si je devais résumer ce qui doit être fait pour obtenir un produit correct, je
proposerais :
- Gestion de Sessions
- Evaluation en parallèle (SSP utilise un seul interpréteur)
- Contrôle de la servlet par script (créer des commandes de script capables d'interagir
avec la servlet elle-même)
La réalisation de toutes ces idées est prévues, et cela devrait être disponible
dans les prochaines versions.
Pourquoi ce Projet ?
Ecrire des pages en HTML est bon lorsque vous voulez seulement construire des pages
statiques, gravées dans le marbre avec des informations qui ne changent jamais.
Dans ce cas, prenez n'importe quel éditeur HTML et déssinez votre site. N'importe qui
est capable d'accéder à vos informations, simplement à l'aide d'un browser web.
Mais si vous voulez changer la mise en page, ajouter des pages, mettre à jour tout
ce que contient votrer site, cela va devenir très désagréable, et vous devrez passer
de longues heures à valider à nouveau votre création.
Vous pouvez bien sûr utiliser CSS ou JavaScript pour aider à contrôler le look and feel de votre site. Ces outils sont très utiles
et vous aideront pour la plupart des tâches. Vous pourrez imaginer presque n'importe
quel design et obtenir un IHM sympathique. Toutefois, cela ne vous aidera pas à gérer
les informations dynamiques sur le site, puisque ces outils sont utilisés sur le client.
Un autre moyen de dynamiser votre site est d'utiliser des scripts CGI.
Ils s'éxecutent sur le serveur, et peuvent voir les fichiers des disques du serveur.
Mais ce n'est qu'un tas de scripts, que l'utilisateur déclenche en selectionnant un lien.
Mixant cela avec du JavaScript permet plein de choses,mais vous devrez apprendre
trois langages (HTML, JavaScript et Perl) pour atteindre vos buts!
En concevant le site, vous pouvez créer des applets specialisées et des servlets,
si vous savez coder en Java. C'est la manière lourde de construire un site.
C'est sûr, vous pourrez faire tout ce qu'il vous plaîra, depuis un jeu de Mastermind
jusqu'à un serveur de bases de données, mais cela reste lourd.
Lors d'une recherche sur le web, j'ai trouvé une petite chose qui m'a impressionée.
Il s'agissait du serveur HTTP en TCL par Scriptics. C'est un vrai serveur HTTP
écrit entièrement en langage TCL . Il est capable d'évaluer des pages en TCL à la volée,
comme les JSP, et sait utiliser des commandes TCL en tant qu'URLs.
J'ai trouvée que c'était une idée géniale. Mais le serveur lui-même n'est pas aussi
robuste, rapide et sûr qu'Apache, Tomcat ou un autre serveur web compilé.
La seule solution a été de créer un moyen d'offrir aux concepteurs de sites un accès
vers leur langage de script favori directement à partir du serveur.
C'est ainsi qu'a été créé SSP.