Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1705 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

URL Rewriting ou comment gérer les sessions sans cookie

n°193666
darklord
You're welcome
Posté le 11-08-2002 à 11:46:13  profilanswer
 

Reprise du message précédent :

benou a écrit a écrit :

 
mais c'ets le genre de truc qui a déjà du être développé 100 fois.
 
Y a personne qui connait un produit (gratuit) qui fait ca (là je commence à demander bcp je sais)...




 
non désolé je connais pas. Va faire un tour sur sf.net peut etre ...


---------------
Just because you feel good does not make you right
mood
Publicité
Posté le 11-08-2002 à 11:46:13  profilanswer
 

n°193670
benou
Posté le 11-08-2002 à 11:59:30  profilanswer
 

:( y a pas ...

n°193757
veryfree
Posté le 11-08-2002 à 21:13:51  profilanswer
 

benou a écrit a écrit :

 
mais c'ets le genre de truc qui a déjà du être développé 100 fois.
 
Y a personne qui connait un produit (gratuit) qui fait ca (là je commence à demander bcp je sais)...




 
moi j avait créer un aspirateur de site ( tres bancal il faut dire) qui lisait caractere par caractere des qu il trouvait une balise entrante ("<" ) il l analysait et si il avait un lien a l interieur, il recuperait le lien et le foutait ds un vecteur...
si ca t interesse je recherche ce vieux truc...

n°193775
veryfree
Posté le 11-08-2002 à 21:58:48  profilanswer
 

je m ennuyait alors j ai essayé de faire qq chose
, c'est pas tres propre pq c du recyclé  :p  

Code :
  1. import java.util.*;
  2. import java.net.*;
  3. import java.io.*;
  4. public class Aspir
  5. {
  6. private String sessionID;
  7. private PrintWriter writer=null ;
  8.   public Aspir(URL url,String sessionID)
  9.   {
  10.   this.sessionID=sessionID;
  11.   String destPage="test2.html"; //(on ne modifie pas  l'original)
  12.   String balise;
  13.   String lien;
  14.   try
  15.   {
  16.   writer = getWriter (destPage);
  17.   DataInputStream dis= new DataInputStream(url.openStream());
  18.    while (true)
  19.    {
  20.    char c = (char) dis.readByte();
  21.    writer.print(c);
  22.     if (c=='<')
  23.     {
  24.         balise = getBalise(dis);    
  25.         analyse(balise);
  26.     }
  27.    }
  28.   }catch (EOFException e) {} catch (Exception e) {System.err.println(":" + e);}
  29.      writer.close();
  30.   }
  31.     /**
  32.     *Permet de recupérer une balise HTML lorsque l on passe en argument le DataInputStream
  33.     **/
  34.   protected String getBalise(DataInputStream flux)
  35.   {
  36.    String balise="";
  37.    char a;
  38.    try
  39.    {
  40.     while ((a =(char) flux.readByte() )   != '>')
  41.     {
  42.     balise   = balise +  a;
  43.     }
  44.    }
  45.    catch (EOFException e) {}catch (Exception e) {}
  46.    balise = balise + ">";
  47.   return balise;
  48.   }
  49.       protected PrintWriter getWriter(String fichier)
  50.       {
  51.           PrintWriter printwriter = null;      
  52.           try
  53.           {
  54.            printwriter = new PrintWriter(new BufferedWriter(new FileWriter(fichier))); 
  55.           }
  56.           catch(Exception exception)
  57.           {
  58.               System.out.print("exeption:" + exception + "\n" );
  59.           }       
  60.          return printwriter;
  61.       }
  62.      public void analyse(String balise)
  63.   {
  64.             String upper;
  65.    String lien="";
  66.    int index=0,index2=0,index3,index4;
  67.       upper = balise.toUpperCase() ;
  68.     if (upper.startsWith("A HREF" ))//si la chaine commence par ces chaines ,on peut esperer trouver  un lien...
  69.     {
  70.     index = upper.indexOf('=') + 2 ;//on cherche la position du "=" que l on incremente de 2 pour atteindre le debut du lien
  71.     index2 = upper.indexOf('"',index+1);   // puis la position du  2em '"' on cherche donc apres le 1 er !
  72.     lien = balise.substring(index,index2); // on recupere cette chaine qui corespond donc au lien
  73.     }
  74.    if(lien.equals("" ))
  75.    writer.print(balise);
  76.    else
  77.    {
  78.    StringBuffer sb = new StringBuffer(balise);
  79.     if(balise.indexOf("?" )!=-1)
  80.     {
  81.      sb.insert(index2,"&"+sessionID);
  82.     }
  83.     else
  84.     {
  85.      sb.insert(index2,"?"+sessionID);
  86.     }
  87.    writer.print(sb);
  88.    }
  89.   }
  90. public static void main(String args[])
  91. {
  92.  String srcPage="test.html"; //la page qui va etre lue  
  93.  String MySessionVar="MySessionID"; //cette chaine sera ajouter apres le lien (creation du "?" si necessaire )  
  94.  String path= "file:"
  95.  + System.getProperty("user.dir" )
  96.  + System.getProperty("file.separator" )
  97.  + srcPage;
  98.  System.out.print(path+"\n" );
  99.  URL url=null;
  100.  try{
  101.  url = new URL(path);
  102.  }catch(Exception e){System.out.print("ex:"+e+"\n" );}
  103.  new Aspir(url,MySessionVar);
  104. }
  105. }


Message édité par veryfree le 11-08-2002 à 22:11:14
n°193779
benou
Posté le 11-08-2002 à 22:10:45  profilanswer
 

merci c'est vachement sympa, mais en fait au boulot, j'ai déjà un truc qui fait ca dont je compte me reservir ...
 
mais merci bien :jap:

n°193814
veryfree
Posté le 12-08-2002 à 00:40:17  profilanswer
 

benou a écrit a écrit :

merci c'est vachement sympa, mais en fait au boulot, j'ai déjà un truc qui fait ca dont je compte me reservir ...
 
mais merci bien :jap:




 
tans pis alors
jmet ca de coté :/

n°193821
benou
Posté le 12-08-2002 à 07:55:07  profilanswer
 

désolé :/

n°194329
benou
Posté le 12-08-2002 à 21:59:14  profilanswer
 

bon, je réutilise ce post même si ca a pas grand chose à voir.
 
pour info, j'ai fait le truc avec le parser pour rajouter les sessions et ca focntionne.
 
En faite, c'est un filtre qui remplace le OutputStream ou le Writer de la HttpServletResponse par un objet à moi et qui surcharge les péthodes write, comme ca je récupère tout ce qui est écrit sur le out, et j'en fais ce que je veux ...
 
Ca marche très bien avec les servlet/jsp, mais quand j'essaye de faire focntionner mon Filtre sur des pages html à la con, ca marche moins bien : ca fonctionne : mon filtre est bien executé et fait bien son boulot, mais on dirait que la socket se ferme pas : sous IE, la page est complétement affichée, mais le petit e continue à tourner pendant un moment (surement jusqu'à un timeout de IE). Ca fait chier parce que ca veut dire qu'en cas de nombreux accès simultanés, ca va faire planter le serveur ...
 
Estce que l'un de vous a déjà coder des Filtres et a déjà rencontré le problème ?? (j'y crois pas trop là, mais bon ...)
 
pour info : oui, j'ai bien redéfinie la méthode close() dans mon objet qui remplace le ServletOuputStream, mais ca change rien ... (en fait, elle est jamais appelée :/ )

n°194363
benou
Posté le 12-08-2002 à 23:18:53  profilanswer
 

le temps de faire la route jusqu'à chez moi j'ai trouvé la réponse ... c'est méga tordu mais je suis persuadé que c'est ca ! (pour la peine, je me suis fait une despé)
 
En faite ca doit venir du header http content-length : mon Filtre fait le ménage dans les fichiers HTML : il supprime pas mal de caractères => au final le fichier envoyé est plus petit que le fichier présant sur le disque. Le problème c'est que quand mon Filtre passe la main au moteur de servlet, lui il execute ca de façon normal et vu que c'est un fichier statique, il doit fixer le header content-length à la taille du fichier sur le dur. Au final, moi j'aurai envoyé un fichier plus court que ce qui était indiqué => IE va continuer à attendre les caractères manquants.
 
Vous allez me dire que logiquement, IE devrait se prendre une fermeture de socket dans la gueule et comprendre que le téléchargement est fini (c'est ce que je me disais, moi, en tout cas), et ben nan : pour optimiser les choses, les browsers et les serveurs HTTP laissent les connexions ouvertes (afin de faire passer plusieurs requêtes dans la même sockets). C'est pour ca que la méthode close était jamais appelée sur mes OutputStream ...
 
Dans le cas des pages statiques (les JSP), le problème ne se pose pas puisque le serveur est obligé d'attendre que la page soient entièrement générée pour fixer le content-length. C'est pour ca qu'avec les JSP/servelt mon filtre marche...
 
Mais bon maintenant j'ai compris le problème, mais je sais toujours pas comment le résoudre. Et en réfléchissant bien, à mon avis, c'est un problème insoluble : je crois pas qu'il soit possible de faire un Filtre qui réduise la taille des pages qui ne sont pas dynamiques. Je crois avoir pensé à tout les moyen possible et y en a aucun qui soit sans inconveniant majeur ...
 
Si quelqu'un a compris le charabia que j'ai tappé et a une solution à me proposer je suis méga-preneur !

n°194372
benou
Posté le 12-08-2002 à 23:35:35  profilanswer
 

Je me demande vraiment comment je suis arrivé à penser à un truc aussi tordu au volant de ma voiture en 20 minutes alors que j'ai passé 3 heures devant mon code sans avancer ...
 
le cerveau humain, "c'est quand même bien fait" [:cherrytree1]


Message édité par benou le 12-08-2002 à 23:36:14
mood
Publicité
Posté le 12-08-2002 à 23:35:35  profilanswer
 

n°194373
veryfree
Posté le 12-08-2002 à 23:37:07  profilanswer
 

benou a écrit a écrit :

Je me demande vraiment comment je suis arrivé à penser à un truc aussi tordu au volant de ma voiture en 20 minutes alors que j'ai passé 3 heures devant mon code sans avancer ...
 
le cerveau humain, "c'est quand même bien fait" [:cherrytree1]




 
 
faudrait faire un recappitulatif pq la c difficilement gerable
je suis largué  :D

n°194380
benou
Posté le 12-08-2002 à 23:47:30  profilanswer
 

veryfree a écrit a écrit :

 
faudrait faire un recappitulatif pq la c difficilement gerable
je suis largué  :D  




 
ben les 3 derniers postesn c'est sur un nouveau problème ... sinnon la citation c'était de "c'est arrivé près de chez vous ..."
 
 
d'ailleurs, je viens de regarder les sources de tomcat et c'est bien ce que je pensais : le contentLength est fixé à la taille du fichier :(

n°194385
veryfree
Posté le 12-08-2002 à 23:53:36  profilanswer
 

benou a écrit a écrit :

 
 
ben les 3 derniers postesn c'est sur un nouveau problème ... sinnon la citation c'était de "c'est arrivé près de chez vous ..."
 
 
d'ailleurs, je viens de regarder les sources de tomcat et c'est bien ce que je pensais : le contentLength est fixé à la taille du fichier :(  




 
[:calinv]

n°194387
benou
Posté le 12-08-2002 à 23:55:46  profilanswer
 

veryfree a écrit a écrit :

 
[:calinv]




c'est mal foutu ce truc !!! dans le cas où on utilise un Filtre, ils devraient avoir prévu que la taille du fichier pouvait changer ...  
 
c'est malin. comment je fais moi maintenant ... :(

n°194389
veryfree
Posté le 12-08-2002 à 23:58:25  profilanswer
 

attend demain moi je peux pas t aider en + chui crevé de fatigue
bonne nuit mister  :hello:

n°194402
--greg--
Posté le 13-08-2002 à 00:49:27  profilanswer
 

moi j'ai compris :D
c effectivement ça le probleme. je sais plus qui que je connais avait eu un problème similaire. enfin ct l'inverse, et ie n'affichait qu'une partie du contenu.
au niveau solution, à part renommer tes fichiers, je vois pas:)

n°194424
benou
Posté le 13-08-2002 à 08:42:51  profilanswer
 

:(
 
ben y a bien une soltion qui consiste à tester l'existence du fichier et, s'il existe de l'ouvrir et de transférer le flux du fichier vers l'output de la servlet, mais le problème dans les cas ou le fichier ne devait pas être lu tel quel (à cause d'un autre filtre ou d'autres règles...).
 
J'ai vraiment l'impression qu'il y a pas de solutions. Fait chier !
 
En fait, il suffirait que je puisse indiquer au moteur de servlet de traiter le fichier comme si son contenu était dynamique et ca marcherait, mais ca je sais pas si on peut le faire ... :(

n°194482
darklord
You're welcome
Posté le 13-08-2002 à 09:55:34  profilanswer
 

benou a écrit a écrit :

Si quelqu'un a compris le charabia que j'ai tappé et a une solution à me proposer je suis méga-preneur !




 
Tout ca est absolument clair. pour la réponse, voir si tu peux redéfnir le comportement de ton moteur pour qu'il prenne la taille réelle


Message édité par darklord le 13-08-2002 à 09:56:17

---------------
Just because you feel good does not make you right
n°194490
benou
Posté le 13-08-2002 à 10:42:15  profilanswer
 

bha ouais c'est ca le truc. Et ca je susi pas sur que ce soit possible pacre que ca veut dire modifier le comportement du traitement du fichier et ca je pense pas qu'on puisse le faire ... C'est la merde !

n°194504
chapi456
Posté le 13-08-2002 à 11:32:00  profilanswer
 

Y'a pas moy dans tomcat de dire de gerer tous les fichiers en tant que Jsp et non en tant que statique ?
Comment il fait la difference entre les 2 ?

n°194519
--greg--
Posté le 13-08-2002 à 12:00:21  profilanswer
 

benou mais pq tu renommes pas tes .html en .jsp?
apres tomcat (en tous cas resin le fait), il en fait pas des servlets s'il n'y a que du contenu statique dedans, et avec un peu de pot ça marchera pour ton filtre. t'as essayé?

n°194523
darklord
You're welcome
Posté le 13-08-2002 à 12:02:38  profilanswer
 

bin son contexte (je parle opérationnel) ne le permets surement pas sinon il l'aurait fait depuis longtemps je pense.


---------------
Just because you feel good does not make you right
n°194527
--greg--
Posté le 13-08-2002 à 12:09:53  profilanswer
 

ouais mais j'aimerais bien qu'il essaye quand meme pour savoir:)

n°194578
benou
Posté le 13-08-2002 à 13:06:20  profilanswer
 

--greg-- a écrit a écrit :

benou mais pq tu renommes pas tes .html en .jsp?
apres tomcat (en tous cas resin le fait), il en fait pas des servlets s'il n'y a que du contenu statique dedans, et avec un peu de pot ça marchera pour ton filtre. t'as essayé?




c'est exactement ca : mon but c'est de faire un filtre que t'as juste à ajouter dans le fichier de déployement et qui marche à tous les coups !
 
et bien sur, si je renome les html en jsp ca fonctionne : le problème se pose uniqueme quand tomcat considère que c'est du static et qu'il détermine le header content-length avant d'avoir fini la récupération du flux correspondant à la page, qu'il fait avec des pages html (content-length = taille du fichier)

n°194579
benou
Posté le 13-08-2002 à 13:09:21  profilanswer
 

chapi456 a écrit a écrit :

Y'a pas moy dans tomcat de dire de gerer tous les fichiers en tant que Jsp et non en tant que statique ?
Comment il fait la difference entre les 2 ?




il fait la différence parce que par défaut il est configuré pour associer tous les fichiers ayant l'extension JSP à la serveltJSP. Les autres fichiers (statiques) sont géré par la DefaultServlet (sous tomcat). C'est elle qui pose problème.
 
Ce qui est chiant c'est que je ne dois pas modifier la servlet gérant les pages statiques car dans certains cas, les pages html sont mappés à des servlets => je ne dois pas casser ce mapping, je dois laisser la main au moteur de servlet

n°194587
--greg--
Posté le 13-08-2002 à 13:33:49  profilanswer
 

benou a écrit a écrit :

 
il fait la différence parce que par défaut il est configuré pour associer tous les fichiers ayant l'extension JSP à la serveltJSP. Les autres fichiers (statiques) sont géré par la DefaultServlet (sous tomcat). C'est elle qui pose problème.
 
Ce qui est chiant c'est que je ne dois pas modifier la servlet gérant les pages statiques car dans certains cas, les pages html sont mappés à des servlets => je ne dois pas casser ce mapping, je dois laisser la main au moteur de servlet



les pages html sont mappées a des servlets??c-a-d?
et tu ne peux pas imaginer de remplacer DefaultServlet pour les .html en forwardant la requete ou que sais-je, à la servlet pour laquelle le .html etait mappé?

n°194953
benou
Posté le 14-08-2002 à 01:30:30  profilanswer
 

ben tu peux très bien configurer le moteur de servlet pour qu'il gère les ficher HTML de façon différente : dans ma boite, y a un framework qui existe (qui ressemble aux JSP) et qui dynmiqe des pages HTML (en cherchant des tags spéciaux dedans).
 
Donc je ne peux pas prédire qu'une page va être statique ou dynamique juste par son extension, donc je ne peux décider dans mon filtre vers quelle servlet mappé la page ..., donc c'est la merde :/

n°194955
--greg--
Posté le 14-08-2002 à 01:39:40  profilanswer
 

mmhmmm...

n°194958
benou
Posté le 14-08-2002 à 01:47:29  profilanswer
 

capiché o no ?

n°194960
--greg--
Posté le 14-08-2002 à 01:49:19  profilanswer
 

benou a écrit a écrit :

capiché o no ?



vivi mais je vois pas trop de solution
(c qd meme pas bo de tripatouiller des .html)
a moins que tu ne puisses "retenir" les .html dans le filtre avant de les envoyer vers le client, auquel cas il doit etre possible de changer le content-length....?

n°194964
benou
Posté le 14-08-2002 à 01:54:48  profilanswer
 

--greg-- a écrit a écrit :

vivi mais je vois pas trop de solution
(c qd meme pas bo de tripatouiller des .html)
a moins que tu ne puisses "retenir" les .html dans le filtre avant de les envoyer vers le client, auquel cas il doit etre possible de changer le content-length....?




j'avais bien penser à faire un truc dans le genre, mais je ne pense pas que ce soit pssoble : les headers HTTP sont écrit directement par la servlet, ils ne sont pas écrit dans le outputstream => y a pas moy d'intercepter l'écriture du header HTTP dans le filtre je pense ...
 
mais à mon avis, il a pas de solution mon problème ... :(

n°195098
--greg--
Posté le 14-08-2002 à 11:01:21  profilanswer
 

benou a écrit a écrit :

 
j'avais bien penser à faire un truc dans le genre, mais je ne pense pas que ce soit pssoble : les headers HTTP sont écrit directement par la servlet, ils ne sont pas écrit dans le outputstream => y a pas moy d'intercepter l'écriture du header HTTP dans le filtre je pense ...
 
mais à mon avis, il a pas de solution mon problème ... :(



meme en subclassant la servlet->l'ecriture du content length est ds une methode avec un peu de bol?

n°195170
benou
Posté le 14-08-2002 à 13:51:32  profilanswer
 

--greg-- a écrit a écrit :

meme en subclassant la servlet->l'ecriture du content length est ds une methode avec un peu de bol?




ben ouais mais si je le surclasse, je fais quoi à la place ? je ne connais pas la taille du fichier à l'avance, et si je l'écris pas, ben y en aura pas ...

n°195174
--greg--
Posté le 14-08-2002 à 13:55:15  profilanswer
 

benou a écrit a écrit :

 
ben ouais mais si je le surclasse, je fais quoi à la place ? je ne connais pas la taille du fichier à l'avance, et si je l'écris pas, ben y en aura pas ...



ben tu mesures...? :o

n°195186
benou
Posté le 14-08-2002 à 14:02:07  profilanswer
 

--greg-- a écrit a écrit :

ben tu mesures...? :o




en fait, peut être que ca fonctionnerai ... je testerai quand j'aurais un peu de temps ...

n°195189
--greg--
Posté le 14-08-2002 à 14:05:11  profilanswer
 

benou a écrit a écrit :

 
en fait, peut être que ca fonctionnerai ... je testerai quand j'aurais un peu de temps ...



et tu me diras:D

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[java] RequestDispatcher et URLcookie dans des repertoire diferent
[PHP] La gestion des cookies : setcookie ou $HTTP_COOKIE_VARS[PHP] Sessions => demande confirmation d infos
J'aimerais gérer une compétition grace a un site web ?Prob recuperation valeur cookie...
PHP et cookie[PHP] g un probleme et je pense que ca vient de sessions mais...
Cherche URL d'un site de visualisation d'images[PHP] Comment fait on pour gerer les liens ?
Plus de sujets relatifs à : URL Rewriting ou comment gérer les sessions sans cookie


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR