//
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(" ... 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(" ... 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[j]+": ");
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=" ";
PrintWriter s; // la sortie
PageHtml( ServletOutputStream sortie) { s= new PrintWriter(sortie); }
void fixe(String txt){s.println(""+txt+"");}
void gras(String txt){s.println(""+txt+"");}
void italique(String txt){s.println(""+txt+"");}
void souligne(String txt){s.println(""+txt+"");}
void ligne(){s.println("\n
");}
void lien(String u, String t){ s.print(""+t+"\n"); }
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("");
s.println(""+titre+"");
s.println("");
}
void finPage() {
s.println("");
s.println("");
s.close();
}
}
} // public class ServletInfo extends HttpServlet
// fin ServletInfo.java