Inicio /
Para servir desde un servlet una imagen de acceso restringido

Este código nos servirá como ejemplo para lanzar otros tipos de archivos que no sean imágenes que también tengan algún tipo de acceso restringido.

 

En primer lugar deberemos de sustituir la url de la imagen por la del servlet que nos la devuelve, es decir las etiquetas img quedarían de la siguiente manera:

<img src="direcciónServlet\nombreServlet"/>

Como vemos se sustituirá el recurso de la imagen por el servlet que nos lo devuelve.

 

El código es el siguiente:

package utils.imagenes;

 

import javax.servlet.http.HttpServlet;

import javax.servlet.*;

import javax.servlet.http.*;

import java.util.*;

import java.io.*;

import javax.mail.*;

import javax.mail.internet.*;

import java.text.*;

import com.ti.comunes.*;

import utils.constantes.*;

 

public class Obtener_Imagen extends HttpServlet {

       public void init() throws ServletException {

}

 

public void doPost(

       javax.servlet.http.HttpServletRequest request,

       javax.servlet.http.HttpServletResponse response)

       throws javax.servlet.ServletException, java.io.IOException {

}

 

public void doGet(

       javax.servlet.http.HttpServletRequest request,

       javax.servlet.http.HttpServletResponse response)

       throws javax.servlet.ServletException, java.io.IOException {

                                       

       String myID = (String) request.getParameter("ID");

       try {

           //primeramente, comprobamos que se ha pasado el ID, si no existe no se devuelve foto                          

           if (myID == null)

               throw new Exception("[utils.imagenes.ObtenerImagen]Parametro tiene un valor desconocido");

           else

           {

               try{  

                   //leemos el fichero del ftp,usando el metodo que traduce el path

                   File f = new File(utils.constantes.ConstantesRID.FILE_PATH+myID+".jpg");

                   RandomAccessFile raf = new RandomAccessFile(utils.constantes.ConstantesRID.FILE_PATH+myID+".jpg", "r");

                   FileInputStream fis = new FileInputStream(f);

                   FileReader fr = new FileReader(f);

                   int i;

                   byte b[] = new byte[(int) f.length()];

                   raf.read(b);

                                       

                   //cabecera

                   response.setHeader("Content-Type","img/jpeg");

                   response.setIntHeader("Content-Length", (int) f.length());

                  //response.setHeader("Accept-Ranges", "bytes");

                                                                  

                  //lo escribimos

                  OutputStream out = response.getOutputStream();

                  out.write(b); 

                  out.close();                     

                  raf.close();

                  fis.close();

                  fr.close();

                                   

                  }

               catch (FileNotFoundException fe)

                  {

                     throw new Exception();

                  }

           }

       }

       catch(Exception e) {

            System.out.println(e.getMessage());

            //salida a pagina de error y devolver foto por defecto

                         

           //leemos el fichero del ftp por defecto

           File f = new File(Constants.FotoPathDefault); //Const..Default à Es un _String con la url

           RandomAccessFile raf = new RandomAccessFile(Constants.FotoPathDefault, "r");

           FileInputStream fis = new FileInputStream(f);

           FileReader fr = new FileReader(f);

           int i;

           byte b[] = new byte[(int) f.length()];

           raf.read(b);

                                 

           //cabecera

           response.setHeader("Content-Type","img/jpeg");

           response.setIntHeader("Content-Length", (int) f.length());

           //response.setHeader("Accept-Ranges", "bytes");

                                                           

           //lo escribimos

           OutputStream out = response.getOutputStream();

           out.write(b); 

           out.close(); 

           raf.close();

           fis.close();

           fr.close();

     } //catch

} //doGet          

}

 


admin @ 15:16 | comentarios (0) | Links Permanentes


Acceso desde la vista (jsp) a variables del actionForm - Framework Struts

Se pudiera dar el caso de necesitar algún dato del formulario cuando se vuelve a visualizar la vista, para acceder a ellos, deberemos de acceder al actionForm que los contiene.

En primer lugar deberemos de saber que ámbito tiene el actionForm, para lo cual abriremos el struts-config.xml, que será donde esté configurado este ámbito. Iremos al Action mapeado con el ActionForm que se utiliza en la página, lo veremos en la línea:

 

<action  path="/UploadFotoPath" name="UploadFotoFormBean" type="com.ti.rid.web.instalacionDeportiva.Struts.UploadFotoAction" input="/admin/InstalacionesDeportivas/forms/uploadFoto.jsp" scope="request" validate="true">

<forward name="alta_ok" path="/admin/InstalacionesDeportivas/forms/uploadFoto.jsp"/>

<forward name="alta_fallo" path="/mipaginaError.jsp"/>

</action> 

 

En el caso de request, deberemos de recuperarlo desde el request de la página jsp, en el caso de sesión sería análogo pero desde la sesión.

Veamos el trozo de código necesario que se debería de incluir en el script del JSP para recuperar el actionForm.

UploadFotoForm myUpload = (UploadFotoForm) request.getAttribute("UploadFotoFormBean");

 Véase que el nombre utilizado para recuperarlo, es el atributo name de la etiqueta action.

Para más información consultar http://jakarta.apache.org/struts/index.html


Daniel P. @ 15:15 | comentarios (4) | Links Permanentes


Subir archivos (Upload) con el Framework Struts

Se realiza con un Struct normal, pero con ciertas características que deberá tener el formulario (Página jsp), el ActionForm y el Action.

Veamos un ejemplo básico (en cursiva lo importate):

El archivo.jsp (formulario)

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html:html>
<head>
<title>Nueva Instalacion Deportiva</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META name="GENERATOR" content="IBM WebSphere Studio">
</head>
<body>
<p class="Titulo" align="center">Subir/Cambiar </p>
<CENTER>
<TABLE  class="CampoFormulario" width="450" height="304" border="0" cellpadding="4" cellspacing="4">
<html:form  enctype="multipart/form-data" action="/UploadFotoPath">

   <tr valign="top"><td height="4"> <FONT color="#FF0000"><html:errors/></FONT></td></tr>
   <tr valign="top"><td align="center" height="4">

  <table width="60%" border="0" align="center" cellpadding="0" cellspacing="0">
    <tr class="CampoFormulario">
      <td><div align="center">Imagen&nbsp;&nbsp;</div></td>
      <td><div align="center">
          <html:file property="theFile" />
        </div></td>
    </tr>

    <tr class="CampoFormulario" align="center">
      <td colspan="2"> <html:submit value="Subir"/>  
      </td>
    </tr>
  </table>
   </td></tr>
</html:form>
</TABLE>
</CENTER>
<p>&nbsp; </p>
</body>
</html:html>

El UploadForm.java (ActionForm)

package com.ti.rid.web.instalacionDeportiva.Struts;

import org.apache.struts.upload.FormFile;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionError;

import org.apache.struts.action.ActionErrors;

import org.apache.struts.action.ActionMapping;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class UploadFotoForm extends ActionForm {

/**

* El archivo que el usuario quiere subir

*/

protected FormFile theFile;

/**

* El identificador de la instalación deportiva

*/

protected String ID_INSTALACION;

/**

* Recupera la representacion del fichero que el usuario sube

*/

public FormFile getTheFile() {

return theFile;

}

/**

* Introduce la representacion del fichero que el usuario sube

*/

public void setTheFile(FormFile theFile) {

this .theFile = theFile;

}

/**

* Recupera el identificador de la instalacion

*/

public String getId_instalacion() {

return ID_INSTALACION;

}

/**

* Introduce el identificador de la instalación

*/

public void setId_instalacion(String aString) {

this .ID_INSTALACION = aString;

}

/*

* Comprueba que el archivo cumple los parámetros que pedimos de tamaño y extensión

*/

public ActionErrors validate( ActionMapping mapping, HttpServletRequest request) {

ActionErrors errors = new ActionErrors();

//Controlamos el tamaño del archivo

if (!((theFile.getFileSize() != 0) && (theFile.getFileSize() < utils.constantes.ConstantesRID.MAX_SIZE)))

{

errors.add( "error.tamanio" , new ActionError( "error.tamanio" ));

}

//Recuperamos el tipo de archivo

if (!theFile.getContentType().equalsIgnoreCase(utils.constantes.ConstantesRID.FILE_TYPE))

{

errors.add( "error.email" , new ActionError( "error.email" ));

}

return errors;

} //validate

} //class UploadFotoForm

El UploadAction.java (Action)

package com.ti.rid.web.instalacionDeportiva.Struts;

import java.io.InputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.FileOutputStream;

import java.io.ByteArrayOutputStream;

import java.io.FileNotFoundException;

import java.io.File;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.upload.FormFile;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionMapping;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ForwardingActionForward;

//import com.ti.rid.types.*;

import com.ti.rid.proc.*;

public class UploadFotoAction extends Action {

public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request,

HttpServletResponse response) {

if (form instanceof UploadFotoForm) {

UploadFotoForm theForm = (UploadFotoForm) form;

String fileNewName = theForm.getId_instalacion()+ ".jpg" ; //El nombre con el que queremos guardar el archivo

FormFile file = theForm.getTheFile(); //Recuperamos la representación del archivo

//ubicación y nombre del archivo a guardar

String path = utils.constantes.ConstantesRID.FILE_PATH+fileNewName;

//Controlamos las condiciones para subirlo

try {

// se comprueba que la ruta exista

File f = new File(path);

if (makeSureDirectoryExists(parent(f))) {

// Se graba en la ruta la foto;

FileOutputStream out = new FileOutputStream(f);

out.write(file.getFileData());

out.flush();

out.close();

//indicamos que la intalación tiene ya foto asociada

PInstalacionesDeportivas myPIDeportivas = new PInstalacionesDeportivas();

myPIDeportivas.setFoto( new Integer(theForm.getId_instalacion()), true );

} //if

} //try

catch (Exception ex) {

System.out.println ( "Lanzada excepcion en UploadFotoAction:" +ex);

return null ;

}

//Destruimos el archivo temporal

file.destroy();

System.out.print( "Subido el archivo deportiva" );

//Retornamos y continuamos en

return mapping.findForward( "alta_ok" );

} //if

//Nunca sucederá en este ejemplo

return null ;

} //perform

/**

* Devuelve la ruta padre del subdirectorio actual

* @param File --> El archivo del cual se quiere sacar su directorio o directorio padre

* @return File --> Crea un archivo con la ruta del directorio padre

*/

private File parent(File f) {

String dirname = f.getParent();

if (dirname == null ) {

return new File(File.separator);

}

return new File(dirname);

}

/**

* Crear un subdirectorio si este no existe

* @param dir --> El path del archivo (dirección + nombre)

* @return True -> Existe o se ha creado False --> No existe y no se ha podido crear

*/

private boolean makeSureDirectoryExists(File dir) {

if (!dir.exists()) {

if (makeSureDirectoryExists(parent(dir)))

dir.mkdir();

else

return false ;

}

return true ;

}

}

/**

* Devuelve la ruta padre del subdirectorio actual

* @param File --> El archivo del cual se quiere sacar su directorio o directorio padre

* @return File --> Crea un archivo con la ruta del directorio padre

*/

private File parent(File f) {

String dirname = f.getParent();

if (dirname == null ) {

return new File(File.separator);

}

return new File(dirname);

}

/**

* Crear un subdirectorio si este no existe

* @param dir --> El path del archivo (dirección + nombre)

* @return True -> Existe o se ha creado False --> No existe y no se ha podido crear */

private boolean makeSureDirectoryExists(File dir) {

if (!dir.exists()) {

if (makeSureDirectoryExists(parent(dir)))

dir.mkdir();

else

return false ;

}

return true ;

}

}


admin @ 14:47 | comentarios (0) | Links Permanentes



<< December 2005 >>
Sun Mon Tue Wed Thu Fri Sat
  1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
 

archivos

November - 2013
October - 2013
July - 2013
June - 2013
May - 2013
April - 2013
March - 2013
February - 2013
November - 2010
October - 2010
September - 2010
August - 2010
June - 2010
November - 2009
October - 2009
September - 2009
March - 2009
February - 2009
January - 2009
September - 2008
May - 2008
April - 2008
November - 2007
October - 2007
May - 2007
April - 2007
March - 2007
February - 2007
January - 2007
December - 2006
September - 2006
August - 2006
June - 2006
May - 2006
April - 2006
February - 2006
January - 2006
December - 2005
November - 2005

powered by SimpleBlog 2.0

rss feed




Ir a Blog de Recetas de Cocina