//Informations connues d'une servlet en java /* ServletInfo.java fournit informations d'un client information de configuration (objet ServletConfig) de session (objet HttpSession) sur les paramètres (voir méthode nomsValsPar) aide à la génération de code html avec la classe PageHtml classes: ServletInfo et PageHtml (classe interne) */ import javax.servlet.*; import javax.servlet.http.*; import java.io.*; import java.util.*; public class ServletInfo extends HttpServlet { ServletConfig scf; Enumeration np; ServletContext scx; String par[] = {"par1","par2", "par3","par4"}; //Initialiser les variables globales public void init(ServletConfig config) throws ServletException { super.init(config); scf=config; np = config.getInitParameterNames(); scx = config.getServletContext(); int i; for(i=0; i<4; i++) par[i]=config.getInitParameter(par[i]); } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / //Traiter la requête HTTP Post public void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost( request, response); } public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PageHtml p = new PageHtml( response.getOutputStream()); p.enTete("Test de servlet"); infoParametres(request,p); p.ligne(); infoConfig(scf,p); p.ligne(); infoSession(request,p); // p.ajout("Retour au "); // p.lien("javascript:history.go(-1)","formulaire"); p.finPage(); } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / //Obtenir les informations de servlet public String getServletInfo() { return "Information ServletInfo"; } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / void infoConfig( ServletConfig cfg, PageHtml p) { Enumeration vals; int n=0; p.ajout(p.P,p.E); p.ajout(p.H3,"style='color:red;'" ,"Configuration (objet ServletConfig)"); p.debut(p.UL); p.ajout(p.LI,".getInitParameterNames()"); vals=cfg.getInitParameterNames(); n=0; p.debut(p.OL,"type='1'"); while(vals.hasMoreElements()){ n++; p.ajout(p.LI, (String)vals.nextElement()); } if( n==0 ) p.ajout("&nbsp; &nbsp; ... vide"); p.fin(p.OL); p.ajout(p.LI,".getInitParameter(\"par?\")"); p.debut(p.OL,"type='1'"); for(n=0; n<4; n++) p.ajout(p.LI, "par"+(n+1)+"="+par[n]); p.fin(p.OL); p.ajout(p.LI,".getServletContext()"); p.ajout(p.B," "+scx.toString()); p.ajout(p.LI,".getServletContext().getRealPath(\"/\")"); p.ajout(p.B," "+cfg.getServletContext().getRealPath("/")); p.ajout(p.LI,".getServletContext().getRealPath(\"Salut_u2\")"); p.ajout(p.B," "+cfg.getServletContext().getRealPath("Salut_u2")); p.ajout(p.LI,".getServletContext().getServerInfo()"); p.ajout(p.B," "+scx.getServerInfo()); // Pour cause de viellissement // p.ajout(p.LI,".getServletContext().getServletsNames()"); // vals=scx.getServletNames(); n=0; // p.debut(p.OL,"type='1'"); // while(vals.hasMoreElements()) { // n++; p.ajout(p.LI, (String)vals.nextElement()); // } // if(n==0) p.ajout("&nbsp; &nbsp; ... vide"); // p.fin(p.OL); p.ajout(p.LI,".getServletContext().getServletContextName() "); p.ajout(p.B," "+scx.getServletContextName()); // Pour cause de viellissement // p.ajout(p.LI,".getServletContext().getServlet"); // p.debut(p.OL,"type='1'"); // try { // p.ajout(p.LI," "+scx.getServlet("Salut_u2")); // p.ajout(p.LI," "+scx.getServlet("GenCycPMG")); // p.ajout(p.LI," "+scx.getServlet("ServletInfo")); // p.ajout(p.LI," "+scx.getServlet("bizzz")); // } // catch(Exception e) { p.ajout("? --> "+e.toString()); } // p.ajout(p.B," "+cfg.getInitParameterNames()); p.fin(p.OL); p.fin(p.UL); } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / void infoSession( HttpServletRequest req, PageHtml p) { boolean sessionCreee=false; String msg=null; HttpSession ses=req.getSession(false); if(ses==null) { msg="Session créée"; sessionCreee=true; ses=req.getSession(true); } else msg= "Session existe déjà"; // Vieillissement // String url = new String( HttpUtils.getRequestURL(req) ); p.ajout(p.P,p.E); p.ajout(p.H3,"style='color:red;'" ,"Information de session (objet HttpSession)"); p.ajout(p.B,msg); p.ajout(p.P,"") ; // Viellissement Integer ises=(Integer)ses.getAttribute("sessiontest.counter"); if(ises==null) ises=new Integer(1); else ises=new Integer(ises.intValue()+1); // Viellissement ses.setAttribute("sessiontest.counter",ises); p.ajout(p.H3,"style='color:green;'" ,"Avec objet HttpServletRequest"); p.debut(p.UL); p.ajout(p.LI,", getHeader()"); p.ajout(p.B," "+req.getHeader("Title")); p.ajout(p.LI,"La méthode, getMethod()"); p.ajout(p.B," "+req.getMethod()); p.ajout(p.LI,"Chemin, getPathInfo()"); p.ajout(p.B," "+req.getPathInfo()); p.ajout(p.LI,"Chemin, getPathTranslated()"); p.ajout(p.B," "+req.getPathTranslated()); p.ajout(p.LI,"Dans l'URL, getQueryString()"); p.ajout(p.B," "+req.getQueryString()); p.ajout(p.LI,", getRemoteAdr()"); p.ajout(p.B," "+req.getRemoteAddr()); p.ajout(p.LI,", getRemoteHost()"); p.ajout(p.B," "+req.getRemoteHost()); // p.ajout(p.LI,", "); // p.ajout(p.B," "+req.); p.ajout(p.LI,", getRemoteUser()"); p.ajout(p.B," "+req.getRemoteUser()); p.ajout(p.LI,"Identification de session, getRequestedSessionId()"); p.ajout(p.B," "+req.getRequestedSessionId()); p.ajout(p.LI,", getRequestURI()"); p.ajout(p.B," "+req.getRequestURI()); p.ajout(p.LI,", getScheme()"); p.ajout(p.B," "+req.getScheme()); p.ajout(p.LI,", getServerName()"); p.ajout(p.B," "+req.getServerName()); p.ajout(p.LI,", getServerPort()"); p.ajout(p.B," "+req.getServerPort()); p.ajout(p.LI,", getServletPath()"); p.ajout(p.B," "+req.getServletPath()); p.ajout(p.LI,", getSession(false)"); p.ajout(p.B," "+req.getSession(false)); p.ajout(p.LI,"Identif. avec cookie, isRequestedSessionIdFromCookie()"); p.ajout(p.B," "+req.isRequestedSessionIdFromCookie()); // Viellissement // p.ajout(p.LI,"Identification avec url, isRequestedSessionIdFromUrl()"); // p.ajout(p.B," "+req.isRequestedSessionIdFromUrl()); p.ajout(p.LI,"Identification avec url, isRequestedSessionIdFromURL()"); p.ajout(p.B," "+req.isRequestedSessionIdFromURL()); p.ajout(p.LI,"Identification valide, isRequestedSessionIdValid()"); p.ajout(p.B," "+req.isRequestedSessionIdValid()); // p.ajout(p.LI,"url, HttpUtils.getRequestURL(req)"); // p.ajout(p.B," "+url); p.fin(p.UL); p.ajout(p.H3,"style='color:green;'" ,"Avec objet HttpSession"); p.debut(p.UL); p.ajout(p.LI,"Date de création, session.getCreationTime()"); p.ajout(p.B," "+ses.getCreationTime()); p.ajout(p.LI,"Identification session.getId()"); p.ajout(p.B," "+ses.getId()); long delta=(ses.getLastAccessedTime()-ses.getCreationTime())/1000; p.ajout(p.LI,"Dernier accès session.getLastAccessedTime()"); p.ajout(p.B," "+ses.getLastAccessedTime()+" ("+delta+"sec.)"); // Viellissement // p.ajout(p.LI,"Contexte de session .getSessionContext()"); // p.ajout(p.B," "+ses.getSessionContext()); p.ajout(p.LI,"Par getValue(String): Nombre de visite:"+ises); p.ajout(p.LI,"Identification valide, session.isNew()"); p.ajout(p.B," "+ses.isNew()); // Viellissement // p.ajout(p.LI,""); p.ajout(p.B,"Dans le contexte de session"); // p.debut(p.OL); // Enumeration e; // HttpSessionContext ctx=ses.getSessionContext(); // for( e=ctx.getIds(); e.hasMoreElements();) // p.ajout(p.LI,"... "+(String)e.nextElement()); // p.fin(p.OL); p.fin(p.UL); } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / /* Si v est la valeur renvoyée, et noms=(String[])v.elementAt(0) vals=(String[][])v.elementAt(1) alors: noms[i][0] est un nom de paramètre vals[i]50], vals[i][1] ... sont les valeurs de ce paramètres */ Vector nomsValsPar(HttpServletRequest req) { Enumeration lesPar=req.getParameterNames(); int nPar=0; // Compter le nombre de paramètres while(lesPar.hasMoreElements()) { nPar++; lesPar.nextElement(); } // Extraire noms et valeurs String tnp[]= new String[nPar]; String tvp[][] = new String[nPar][]; nPar=0; lesPar = req.getParameterNames(); while(lesPar.hasMoreElements()) { tnp[nPar] = new String((String)lesPar.nextElement()); tvp[nPar] = (String[])req.getParameterValues(tnp[nPar]); nPar++ ; } Vector nomsVals= new Vector(); nomsVals.add(tnp); nomsVals.add(tvp); return nomsVals; } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / void infoParametres( HttpServletRequest req, PageHtml p) { int i,j; p.ajout(p.P,p.E); p.ajout(p.H3,"style='color:red;'","Noms des paramètres :"); p.debut(p.OL,"type='1'"); Vector nv = nomsValsPar(req); String noms[]=(String [])nv.elementAt(0); String vals[][]=(String [][])nv.elementAt(1); for( j=0; j<noms.length; j++){ p.ajout(p.LI,"<b>"+noms[j]+"</b>: "); if(vals[j].length==1) p.ajout(vals[j][0]); else { p.debut(p.OL,"type='a'"); for(i=0;i< vals[j].length;i++)p.ajout(p.LI,vals[j][i]); p.fin(p.OL); } } p.fin(p.OL); if(noms.length==0) { p.ajout(p.P,"align='center'", "pas de paramètre"); } } // /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// /// / class PageHtml { public final String H1="h1"; public final String H2="h2"; public final String H3="h3"; public final String H4="h4"; public final String H5="h5"; public final String BR="br"; public final String P="p"; public final String XMP="xmp"; public final String BLOCK="blockquote"; public final String BLOCKQUOTE="blockquote"; public final String ADDRESS="adresse"; public final String DIV="div"; public final String A="a"; public final String B="b"; public final String I="i"; public final String TT="tt"; public final String U="u"; // type: I, 1, a circle disc square public final String DL="dl"; public final String DT="dt"; public final String DD="dd"; public final String UL="ul"; public final String OL="ol"; public final String LI="li"; // espace non sécable public final String E=" &nbsp; "; PrintWriter s; // la sortie PageHtml( ServletOutputStream sortie) { s= new PrintWriter(sortie); } void fixe(String txt){s.println("<tt>"+txt+"</tt>");} void gras(String txt){s.println("<b>"+txt+"</b>");} void italique(String txt){s.println("<i>"+txt+"</i>");} void souligne(String txt){s.println("<u>"+txt+"</u>");} void ligne(){s.println("\n<hr>");} void lien(String u, String t){ s.print("<a href=\""+u+ "\">"+t+"\n</A>"); } void ajout(String txt){s.print(txt);} void ajout(String balise, String txt){ s.print("<"+balise+">"); s.println(txt + "\n</"+balise+">"); } void ajout(String balise, String attributs,String txt){ s.println("<"+balise+" "+attributs+">"); s.println(txt + "\n</"+balise+">"); } void debut(String balise) { s.print("<"+balise+">"); } void debut(String balise, String attributs) { s.println("<"+balise+" "+attributs+">"); } void fin(String balise) { s.println("</"+balise+">"); } void enTete(String titre) { s.println("<html>"); s.println("<head><title>"+titre+"</title></head>"); s.println("<body>"); } void finPage() { s.println("</body>"); s.println("</html>"); s.close(); } } } // public class ServletInfo extends HttpServlet // fin ServletInfo.java