Struts. Solo peticiones POST.

Alberto
10 de Marzo del 2006
Hola a [email protected]:

Estoy haciendo una aplicacion con struts y mi cuestion es que yo quiero que todas las peticiones sean peticiones POST.

Un ejemplo:

Tengo este formulario:

<html:form action="comun.Login.do" method="POST" focus="usuario">
<p>
<c:out value="Usuario:"/>
<html:text property="usuario" size="16" maxlength="16" styleId="usuario"/>
</p>
<p>
<c:out value="Contraseña:"/>
<html:password property="password" size="16" maxlength="16" styleId="password"/>
</p>
<p>
<html:submit value="Conectar"/>
</p>
</html:form>

Todo funciona perfectamente, la peticion por POST la bien, pero si en la barra de navegacion del explorer ó firefox escribo "comun.Login.do?usuario=Alberto&password=1234" también lo hace y yo lo que quiero es que no se puedan escribir en el navegador los parámetros de los formularios ó parámetros ocultos que pueda pasar de una JSP a otra. Resumiendo, que no se acepten peticiones GET.

Espero haberme explicado bien.

Muchas gracias y un saludo.

efiz65
10 de Marzo del 2006
¿comun.Login.do es un servlet?
Si es un servlet haz que solo tenga el metodo doPost() y no tenga ni el metodo doGet() ni tampoco service()

alberto
10 de Marzo del 2006
comun.Login.do es un Action de struts.

neossoftware
10 de Marzo del 2006
Muy buena pregunta la tuya, voy con la respuesta:

Mira lo que debes de crear es un Filtro J2EE, este filtro se va a encargar de bloquear todas las peticiones GET antes de que lleguen al Servlet Front de Struts, y obviamente antes de que se atienda cualquier Action.

Los Filtros son muy usados para cuestiones de seguridad, checar si el usuario tiene sesion activa, con el fin de no repetir el código en los procesos de negocio, en tu caso Actions de Struts.

Este Filtro se mapea en el web.xml y el codigo que deberas de colocar en el filtro mas o menos debería de ser el siguiente:

//request es del tipo HttpServletRequest

String method = request.getMethod();
System.out.println("Método: " + requestType.getMethod());

if (method.equalsIgnoreCase("GET")){
//colocas el codigo que quieras en caso de que la peticion sea GET

}

Saludos y espero que esto te sirva de ayuda!!!