Duda variables JSP

Iniciado por Debci, 21 Marzo 2010, 15:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Debci

Hola a todos, estoy haciendome una web usando el JSP, y he encontrado que a diferencia de mi querido PHP no puedo modificar variables a través de la url al estilo:
index.jsp?secion=1

Simplemente no cambia nada, os muestro el codigo:

Código (html4strict) [Seleccionar]
<html>

<head><title>Prueba JSP</title></head>

<body>
<%! public int secion = 0;%>
<%
out.println("Bienvenido a mi web<br/>");

out.println("<b>Pagina de ejemplo JSP</b>");
out.println("<br/>");
switch(secion)
{
case 0:
out.println("Has cojido la uno!");
break;
case 1:
out.println("Has cojido la dos!");
break;
}

%>
<br/>
Fecha actual: <%= new java.util.Date() %>



</body>

</html>


Tan moderno que es jsp y mira que no se podrá dividir en modulos xD

Saludos

Shell Root

xD, aun sigo sin entender. What The Fuck!, que quieres decir con:
Cita de: ..::| D3Bć1 |::. en 21 Marzo 2010, 15:46 PM... no puedo modificar variables a través de la url al estilo:
index.jsp?secion=1

Supongo que lo que quieres, es recolectar la variable secion, y dependiendo del valor, os muestre un mensaje:
Cita de: ..::| D3Bć1 |::. en 21 Marzo 2010, 15:46 PM
Código (html4strict) [Seleccionar]
switch(secion)
{
case 0:
out.println("Has cojido la uno!");
break;
case 1:
out.println("Has cojido la dos!");
break;
}
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Debci

Cita de: Alex@ShellRoot en 21 Marzo 2010, 21:50 PM
xD, aun sigo sin entender. What The Fuck!, que quieres decir con:
Cita de: ..::| D3Bć1 |::. en 21 Marzo 2010, 15:46 PM... no puedo modificar variables a través de la url al estilo:
index.jsp?secion=1

Supongo que lo que quieres, es recolectar la variable secion, y dependiendo del valor, os muestre un mensaje:
Cita de: ..::| D3Bć1 |::. en 21 Marzo 2010, 15:46 PM
Código (html4strict) [Seleccionar]
switch(secion)
{
case 0:
out.println("Has cojido la uno!");
break;
case 1:
out.println("Has cojido la dos!");
break;
}
si pero quiero recolectarla desde la url, nod esde ningun form.

Saludos

-Ramc-

Aunque en php se pueda, no es seguro hacerlo, por otro lado utiliza el objeto request para obtener el valor de la variable:

pagina.jsp?dato=1

String datoUno = request.getParameter("dato");

Pruebalo y me dices.

Shhh... be vewy, vewy, quiet!  I'm hunting wabbits...
LA PANDILLA MAS GRANDE DE MI CIUDAD, SE LLAMA POLICIA NACIONAL.

Debci

#4
Cita de: -Ramc- en 22 Marzo 2010, 02:50 AM
Aunque en php se pueda, no es seguro hacerlo, por otro lado utiliza el objeto request para obtener el valor de la variable:

pagina.jsp?dato=1

String datoUno = request.getParameter("dato");

Pruebalo y me dices.
y de donde se supone que lo debo recojer?
Hacer eso es algo tribial, almenos desde mi punto de vista, quiero cambiar el valor de la variable desde la url...


Saludos

admin947

Directamente el parámetro pasado por la URL no puede sobreescribir el valor de la variable (eso sería una catástrofe para la seguridad).
Para conseguir lo que quieres tienes que hacer algo como:

url = pagina.jsp?p_section=1


String p_section = request.getParameter("p_section");
public int section = Integer.valueOf(p_section);

switch(section)
{
  case 0:
      out.println("Has cogido la uno!");
      break;
  case 1:
       out.println("Has cogido la dos!");
       break;
}


Ten cuidado con "Integer.valueOf()" porque puede lanzarte una excepción si alguien pone una cadena no convertible a Integer.
Sí, es lo que tiene Java respecto a PHP, hay que hacer conversiones explícitas entre tipos.

Debci

#6
Cita de: admin947 en 18 Junio 2010, 01:38 AM
Directamente el parámetro pasado por la URL no puede sobreescribir el valor de la variable (eso sería una catástrofe para la seguridad).
Para conseguir lo que quieres tienes que hacer algo como:

url = pagina.jsp?p_section=1


String p_section = request.getParameter("p_section");
public int section = Integer.valueOf(p_section);

switch(section)
{
 case 0:
     out.println("Has cogido la uno!");
     break;
 case 1:
      out.println("Has cogido la dos!");
      break;
}


Ten cuidado con "Integer.valueOf()" porque puede lanzarte una excepción si alguien pone una cadena no convertible a Integer.
Sí, es lo que tiene Java respecto a PHP, hay que hacer conversiones explícitas entre tipos.
Pero ese mismo handicap puede servirme de sistema de seguridad, pues que yo sepa un XSS no solo consta de valores Integer.
PD: Como esta definido el objeto request?
Saludos

admin947

Cita de: ..::| D3Bć1 |::. en 18 Junio 2010, 19:42 PM
PD: Como esta definido el objeto request?

Podríamos ayudarte mejor si concretases más tus preguntas...

Aquí tienes la especificación del HttpServletRequest:
http://java.sun.com/products/servlet/2.1/api/javax.servlet.http.HttpServletRequest.html

Si con "definido" te refieres al cómo se declara: request se trata de una variable implícita en la petición hecha por el cliente al servidor, así que simplemente "existe".

Debci

Cita de: admin947 en 19 Junio 2010, 04:14 AM
Cita de: ..::| D3Bć1 |::. en 18 Junio 2010, 19:42 PM
PD: Como esta definido el objeto request?

Podríamos ayudarte mejor si concretases más tus preguntas...

Aquí tienes la especificación del HttpServletRequest:
http://java.sun.com/products/servlet/2.1/api/javax.servlet.http.HttpServletRequest.html

Si con "definido" te refieres al cómo se declara: request se trata de una variable implícita en la petición hecha por el cliente al servidor, así que simplemente "existe".
Vale, siento es dudilla tan deslizada, no sabia si en alguna parte de tu codigo habias omitido la declaracion de dicho objeto.

Saludos