
eu.ginere.base.web.services.ServletSessionTest Maven / Gradle / Ivy
package eu.ginere.base.web.services;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
import java.lang.reflect.Field;
import java.util.Enumeration;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* Servlet que muestra los objetos en session si son serializables.
*
* @author Pedro Toribio Guardiola
*
*/
public class ServletSessionTest extends HttpServlet {
/**
* Serial UID.
*/
private static final long serialVersionUID = 1L;
/**
* Constante para el nombre del fichero.
*/
private static final String FILE_NAME ="/tmp/test.bin";
/**
* Metodo de servlet service.
*
* @param request HttpServletRequest
* @param response HttpServletResponse
* @throws ServletException Throwable
* @throws IOException Throwable
*/
public final void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session=request.getSession();
PrintWriter out=response.getWriter();
ObjectOutputStream outStream=new ObjectOutputStream(new FileOutputStream(FILE_NAME));
out.write("\n");
out.write("Session Content : "+session.getId()+"
\n");
out.write("Session Content : "+request.isRequestedSessionIdValid()+"
\n");
out.write("\n");
int cnt=0;
int tab=0;
for(Enumeration enumeration=session.getAttributeNames();enumeration.hasMoreElements();cnt++){
String name=(String)enumeration.nextElement();
Object obj=session.getAttribute(name);
printObj(out,outStream,name,obj,cnt,tab);
out.write("\n");
}
out.write("
\n");
out.write("");
outStream.close();
}
/**
* Lanza los objetos y comprueba la serializacion.
*
* @param out PrintWriter
* @param outStream ObjectOutputStream
* @param name String
* @param obj Object
* @param cnt int
* @param tab int
*/
private static void printObj(PrintWriter out,ObjectOutputStream outStream,String name,Object obj,int cnt,int tab){
Class clazz=obj.getClass();
printTab(out,tab);
out.write(Integer.toString(cnt));
out.write(") Object Name:'"+name+"'");
out.write("
");
printTab(out,tab);
out.write("Class:'"+(clazz.getName())+"'");
if (isSerializable(outStream,obj)){
out.write(" serializable
");
} else {
out.write(" SERIALIZATION FAILED!!!
");
}
Field fields[]=clazz.getDeclaredFields();
tab++;
for (int i=0;i");
printField(out,outStream,field,obj,tab);
}
// printTab(out,tab);
// out.write("Value:'"+(obj)+"'");
out.write("
");
}
/**
* Lanza los campos y al tipo primitivo que corresponde.
*
* @param out PrintWriter
* @param outStream ObjectOutputStream
* @param field Field
* @param obj Object
* @param tab int
*/
static void printField(PrintWriter out,ObjectOutputStream outStream,Field field,Object obj,int tab){
Class returnType=field.getType();
if (returnType.isPrimitive()){
return;
} else if (returnType.isArray()){
return;
} else if (Void.TYPE.equals(returnType)){
return;
} else if (Class.class.equals(returnType)){
return;
} else if (String.class.equals(returnType)){
return;
// } else if (Object.class.equals(returnType)){
// return;
}
try {
Object ret=field.get(obj);
if (ret!=null){
printObj(out,outStream,"",ret,0,tab);
}
} catch (Exception e) {
printTab(out,tab);
// out.write("Exception:"+e.getMessage()+"
\n");
out.write("Private
\n");
}
}
/**
* Comprueba si son serializables los objetos.
*
* @param out ObjectOutputStream
* @param obj Object
* @return boolean
*/
private static boolean isSerializable(ObjectOutputStream out,Object obj){
try {
out.writeObject(obj);
return true;
} catch (Exception e) {
return false;
}
}
/**
* Lanza una Tabla.
*
* @param out PrintWriter
* @param tab int
*/
private static void printTab(PrintWriter out,int tab){
for (int i=0;i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy