Java - Mostrar imagen Captcha spring jsp html

 
Vista:
sin imagen de perfil

Mostrar imagen Captcha spring jsp html

Publicado por Wasp (15 intervenciones) el 20/02/2018 16:34:21
Buenas tardes a todos/as, espero que me puedan guiar o ayudar.

Estoy realizando una app web con spring y struts.
En una de las pantallas estoy haciendo una pagina para que el usuario actualice su clave.
En dicha pagina aparte de los campos normales que puede tener, he incluido un Captcha.
Mi problema es que la imagen del captcha a mostrar siempre se queda estática.


El servidor donde alojo la imagen es Wildfly 9 y cuando hago una llamada a donde está alojado:

cambioClave.jsp
----------------------
<img src=<%=System.getProperty("jboss.server.base.dir") + File.separator + "tmp" + File.separator + "patchca.png"%>>


no se llega a mostrar la imagen. No se porque será pero supongo que no se puede hacer por este mecanismo una llamada a una ruta absoluta o relativa.
He intentando también que la imagen se refresque dentro de mi WebContent/imagenes/pathca.png pero siempre muestra la misma:


ClaseLlamada.java
-------------------------
File filePatchca = new File(System.getProperty("jboss.server.base.dir") + File.separator + "tmp" + File.separator + "patchca.png");
try {
filePatchca.delete();
} catch (Exception e) {
e.printStackTrace();
}
fos = new FileOutputStream(System.getProperty("jboss.server.base.dir") + File.separator + "tmp" + File.separator + "patchca.png");
textCaptcha = EncoderHelper.getChallangeAndWriteImage(cs, "png", fos);
fos.flush();
fos.close();

//vamos a copiar la imagen al directorio root del wrb
FileInputStream imageInFile = new FileInputStream(filePatchca);
byte imageData[] = new byte[(int) filePatchca.length()];
imageInFile.read(imageData);
String imageDataString = Base64.encodeBytes(imageData);

byte[] imageByteArray = Base64.decode(imageDataString);

File f = new File("C:\\PROYECTO\\workspace\\ejemplo\\WebContent\\imagenes\\pathca.png");
try {
f.delete();
} catch (Exception e) {
e.printStackTrace();
}
FileOutputStream imageOutFile = new
FileOutputStream("C:\\PROYECTO\\workspace\\ejemplo\\WebContent\\imagenes\\pathca.png");
imageOutFile.write(imageByteArray);
imageOutFile.flush();
imageOutFile.close();
imageInFile.close();

Toda la parte del código hasta : //vamos a copiar la imagen al directorio root del wrb me funciona bien y yo veo en las carpetas como se genera el código nuevo, pero nunca me refresca cuando le doy a mi botón de refrescar:


cambioClave.jsp
----------------------
<td>
<div id="image" onload="javaScript:refrescarPatchca();" style="top:0px;left:18px;z-index:999">
<%--<img src=<%=System.getProperty("jboss.server.base.dir") + File.separator + "tmp" + File.separator + "patchca.png"%>>--%>
<%--<img src="imagenes/patchca.png">--%>
<img src="C:\\PROYECTO\\workspace\\ejemplo\\WebContent\\imagenes\\pathca.png">
<%--<img src=" <s:url action='ImageAction?imageId=pathca.png' />" />--%>

</div>
</td>
<td>
<html:button property="refrescar" onclick="javascript:refrescarPatchca();" tabindex="7" styleClass="boton">
<bean:message key="boton.refrescar"/>
</html:button>
</td>


function refrescarPatchca() {
cambioClaveForm.action="ClaseLlamadaJava.do?method=refrescarPatchca";
cambioClaveForm.submit();
window.location.href = window.location.href;
}


Si alguien pudiera orientarme, no se si debería para dicha imagen alojarlo en un servlet, estoy algo perdido ya.
He probado multitud de opciones para recuperar dicha imagen pero no hay forma.

Gracias de antemano!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder