Foros del Web » Programación » Java »

Pasar valores del request de una pagina JSP a una clase/servlet Java

Estas en el tema de Pasar valores del request de una pagina JSP a una clase/servlet Java en el foro de Java en Foros del Web. Buenas, soy nuevo con JSP y tengo nociones basicas de Java y voy aprendiendo poco a poco. Estoy intentando pasar los parametros del REQUEST (en ...
  #1 (permalink)  
Antiguo 05/11/2010, 13:38
 
Fecha de Ingreso: noviembre-2010
Ubicación: Madrid
Mensajes: 22
Antigüedad: 4 años
Puntos: 0
Pregunta Pasar valores del request de una pagina JSP a una clase/servlet Java

Buenas, soy nuevo con JSP y tengo nociones basicas de Java y voy aprendiendo poco a poco.

Estoy intentando pasar los parametros del REQUEST (en este caso los valores de las cajas de texto) a un metodo de la clase Java que los recibe y los procesa. Accede a la clase correctamente pero al hacer GETPARAMETER da nulo.

Al principio la clase era un servlet pero tampoco me funcionaba. Tambien he probado con un POST desde el formulario JSP pero creo que lo correcto es un evento en el boton que llame al metodo de la clase.

Pongo el codigo, gracias por echarle un vistazo, fijo que es una tonteria el porque no me funciona.

ARCHIVO JSP

Código PHP:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    
pageEncoding="ISO-8859-1"%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@
page import="paquete.NuevoP"%>
<%@
page import="paquete.NuevoPe"%>
<
html>
    <
head>
        <
meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
        <
title>Insert title here</title>
    </
head>
    <
body>
        <
form>
            <
label for="lblNombre">Nombre: </label><input
            name
="NOMBRE" type="text" class="form" id="NOMBRE" size="25" /><br />
            <
label for="lblEdad">Edad: </label><input name="EDAD" type="text"
            
class="form" id="EDAD" size="25" /><br />
            <
label for="lblEstatura">Estatura: </label><input name="ESTATURA"
            
type="text" class="form" id="ESTATURA" size="25" /> <br>
            
            <
br>
            <
input type="submit" name=GRABAR value="Insertar" onClick=<%NuevoPe.Nuevo(request);%>>
        </
form>
    </
body>
</
html

CLASE JAVA

Código PHP:
package paquete;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.servlet.http.HttpServletRequest;

public class 
NuevoPe {

    public 
NuevoPe()
    {

    }

    public static 
void Nuevo(HttpServletRequest request)
    {
        if(
request.getParameter("GRABAR") != null)
        {
            
// objetos de enlace
            
Connection canal null;
            
Statement instruccion=null;
            
String strcon "jdbc:mysql://localhost/mibase?user=root&password=root";

            
// abriendo canal o enlace en su propio try-catch
            
try {
                Class.
forName("com.mysql.jdbc.Driver").newInstance();
                
canal=DriverManager.getConnection(strcon);
                
instruccion canal.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                        
ResultSet.CONCUR_UPDATABLE);
                
            } catch(
java.lang.ClassNotFoundException e){} catch(SQLException e) {} catch (InstantiationException e) {
                
// TODO Auto-generated catch block
                
e.printStackTrace();
            } catch (
IllegalAccessException e) {
                
// TODO Auto-generated catch block
                
e.printStackTrace();
            };

            
//cargando los campos a grabar
            // excepto clave porque en mysql es de tipo auto-increment

            
String nombre request.getParameter("NOMBRE");
            
int edad Integer.parseInt(request.getParameter("EDAD"));
            
float estatura =Float.parseFloat(request.getParameter("ESTATURA"));

            
// insert into tabla(nombre,edad,estatura) values('juan', 15, 1.88);

            
String q="insert into mitabla(nombre,edad,estatura) values(\"" +nombre+"\","+edad+","+estatura+"); ";

            try {

                
// agregando renglon (insert)
                
int n=instruccion.executeUpdate(q);

                
//avisando que se hizo la instruccion
                
System.out.println("REGISTRO INSERTADO");

            } catch(
SQLException e) {System.out.println(e);};

            try{
                
                
instruccion.close();
                
canal.close();
                
            } catch(
SQLException e) {System.out.println(e);};
        }
    }

Tambien queria preguntaros si merece la pena que los metodos de la clase comentada arriba esten en un servlet o mejor en una clase.

Muchas gracias por la ayuda, un saludo.
  #2 (permalink)  
Antiguo 06/11/2010, 06:52
Avatar de LordJhony  
Fecha de Ingreso: septiembre-2010
Mensajes: 422
Antigüedad: 4 años, 2 meses
Puntos: 22
Respuesta: Pasar valores del request de una pagina JSP a una clase/servlet Java

Mira... El error es simple
Primero tu formulario debe tener el metodo post y lo que debes hacer es recibir el nombre de tus areas de texto en un servlet. figate
Código HTML:
Ver original
  1. <form method='post' action='tu_servlet'>
  2.             <label for="lblNombre">Nombre: </label><input
  3.            name="NOMBRE" type="text" class="form" id="NOMBRE" size="25" /><br />
  4.             <label for="lblEdad">Edad: </label><input name="EDAD" type="text"
  5.            class="form" id="EDAD" size="25" /><br />
  6.             <label for="lblEstatura">Estatura: </label><input name="ESTATURA"
  7.            type="text" class="form" id="ESTATURA" size="25" /> <br>            
  8.             <br>
  9.             <input type="submit" name="GRABAR" value="Insertar" id="GRABAR">
  10.         </form>
El codigo de tu servlet seria mas o menos asi:
Código Java:
Ver original
  1. import java.io.IOException;
  2. import javax.servlet.ServletException;
  3. import javax.servlet.http.HttpServlet;
  4. import javax.servlet.http.HttpServletRequest;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.sql.*;
  7. public class tu_servlet extends HttpServlet
  8. {
  9.    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  10.     throws ServletException, IOException
  11.    {
  12.        String nombre=(req.getParameter("NOMBRE)).trim();
  13.      //aca tomas el valor de tu texto NOMBRE
  14.      //realizas lo mismo para todos tus areas de texto
  15.     //despues de tomado esto haces con tus variables lo que requieras
  16. }}
__________________
ريد ان يستغل الفتيات
  #3 (permalink)  
Antiguo 08/11/2010, 10:16
 
Fecha de Ingreso: noviembre-2010
Ubicación: Madrid
Mensajes: 22
Antigüedad: 4 años
Puntos: 0
Respuesta: Pasar valores del request de una pagina JSP a una clase/servlet Java

Bien, muchisimas gracias. He creado un nuevo proyecto ya que en el otro no me detectaba el servlet.

Queria preguntarte si en un servlet solo puedo usar el metodo doPost para realizar la accion del form y no puedo tener varios metodos como en una clase normal (metodo nuevoCliente, modificarCliente, etc)?

Otra pregunta seria: si por ejemplo tengo una web en JSP con dos o mas botones y quiero que cada boton haga una accion (y por ende ir a un servlet a ejecutar las tareas correspondientes) como lo podria hacer ya que en el form tengo que meter los controles HTML que interactuan con ese boton verdad?

He estado mirando el tema de los servlets pero no consigo quedarme con ellos. Gracias por la ayuda, un saludo.
  #4 (permalink)  
Antiguo 08/11/2010, 11:15
Avatar de LordJhony  
Fecha de Ingreso: septiembre-2010
Mensajes: 422
Antigüedad: 4 años, 2 meses
Puntos: 22
Respuesta: Pasar valores del request de una pagina JSP a una clase/servlet Java

Mira en tu servlet puedes tener los metodos que tu quieras pero ten encuenta que tu formulario solo va a trabajar con lo que hagas dentro del metodo con el cual lo estas enviando dopost o doget, tambien puedes trabajarlo con processrequest.

Lo de los botones es mas sencillo simplemente los recibes en el servlet y dentro de un try condicionado con un if haces lo que quieres que haga cada boton por ejemplo.

Código Java:
Ver original
  1. public class tu_servlet extends HttpServlet
  2. {
  3.     protected void doPost(HttpServletRequest req, HttpServletResponse res)
  4.     throws ServletException, IOException
  5.     {
  6.         try
  7.         {
  8.             if (req.getParameter("nombre de tu boton1")!=null)
  9.             {
  10.                //el codigo de lo que quieres hacer con el boton
  11.             }
  12.             else if(req.getParameter("nombre de tu boton2")!=null)
  13.             {
  14.                 //el codigo de lo que quieres hacer con el boton
  15.             }
  16.           }
  17.           catch(Exception e){}
  18. }}
Lo que pasa ahi es que cada vez que tu le des clic a un determinado boton en tu jsp este va enviar el nombre del mismo y tu lo que haces es capturar ese nombre y realizar tus acciones
__________________
ريد ان يستغل الفتيات
  #5 (permalink)  
Antiguo 08/11/2010, 12:00
 
Fecha de Ingreso: noviembre-2010
Ubicación: Madrid
Mensajes: 22
Antigüedad: 4 años
Puntos: 0
Respuesta: Pasar valores del request de una pagina JSP a una clase/servlet Java

Gracias, bien explicado y creo que entendido jeje.

Un abrazo ;)
  #6 (permalink)  
Antiguo 18/02/2011, 17:57
Avatar de juanalberto008  
Fecha de Ingreso: enero-2011
Ubicación: Guatemala
Mensajes: 36
Antigüedad: 3 años, 10 meses
Puntos: 0
Respuesta: Pasar valores del request de una pagina JSP a una clase/servlet Java

Eres un crak!

Etiquetas: clases, jsp, request, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:47.
SEO by vBSEO 3.3.2