¿Hay una forma sencilla de obtener URL en Java?

Estoy trabajando en un enlace de validación de correo electrónico para un sitio web. Cuando un usuario se registra y termina de completar sus datos personales (y pasa todas las verificaciones), se lo envía a una página jsp que dice que se ha enviado un correo electrónico a la dirección que ingresó como nombre de usuario, con un enlace para hacer clic para validar la direccion de correo electronico. Entonces esa parte está muy bien, genero el enlace (por ahora solo usando mi host local) y se ve así como un ejemplo http://localhost:9999/javawork/msc/validate/?6FRQ8RAT&u=1s3w1Iih64egX01188HT. Cuando hacen clic en el enlace, va a la página jsp. index.jsp en la carpeta de validación. En este punto, necesito obtener la URL completa y enviarla a una función para asegurarme de que la URL tenga el formato correcto (por motivos de seguridad). Si pasa y el formato está bien, necesito tomar el código de 8 dígitos inmediatamente después del '?' y también el valor de 'u'. Luego envío esos valores a una función que verifica que coincidan con lo que tenemos en nuestra base de datos y, si es así, actualizo el registro de la base de datos con una fecha de validación para que sepamos que han validado su dirección de correo electrónico.

Entonces, mi pregunta es primero, ¿cómo tomo la URL completa para verificar el formato y segundo, cómo tomo el código de 8 dígitos y el valor de 'u'? He estado buscando en línea y todos los ejemplos requieren la creación de múltiples funciones o clases y el uso de la clase URL. Y todos quieren que haga una instancia de un objeto URL y lo inicialice usando la URL completa. Pero no es una URL estática, será diferente para cada usuario que se registre, ya que genera un código aleatorio de 8 dígitos para verificar, y el valor de 'u' es la identificación de usuario enmascarada de la base de datos. No entiendo cómo puede requerir que inicialice la URL completa para obtener los valores, cuando no sabe cuáles son los valores hasta que los obtiene de la URL.

¿Hay una manera simple de obtener los valores y la URL completa? Incluso si puedo obtener todo después del '?', conozco la URL base y puedo crear una nueva cadena para verificar el formato si puedo obtener del '?' y después. Por favor ayuda con esa parte. Gracias.

preguntado el 27 de julio de 12 a las 16:07

¿Está escribiendo un servlet para procesar la solicitud del cliente o simplemente un .jsp ¿página? -

solo una página jsp. Ya tengo funciones en una clase de Java para verificar los valores con la base de datos. Solo necesito la página jsp para obtener los valores de URL, pasarlos a las funciones (que devuelven un booleano) y luego la página jsp muestra un mensaje de éxito si se devuelve verdadero y un mensaje de falla si se devuelve falso. -

2 Respuestas

La interfaz HTTPServletRequest contiene un método getRequestURL que devuelve un StringBuffer que puede utilizar para comprobar el formato de toda la URL. Puede obtenerlo, en una página jsp con:

<%=request.getRequestURL()%>

Si está utilizando el formato de solicitud que especificó anteriormente, entonces su segunda pregunta:

¿Cómo tomo el código de 8 dígitos y el valor de 'u'?

Puede responderse manipulando ese StringBuffer para dividirlo en el ? y & para el código de 8 dígitos. O use otro método de solicitud, ServletRequest.getParameter(java.lang.String nombre)

Sin embargo, para tomar cada parámetro, no estoy seguro de cómo terminará manejando el parámetro sin nombre del código de 8 dígitos. Déjame saber cómo va eso.

Respondido 27 Jul 12, 18:07

eso es exactamente lo que necesitaba. Una vez que tengo la URL completa, puedo dividirla en el '?' Como dijiste. Muchas gracias. - kei23th

<%=request.getRequestURL()%> sólo me da hasta el '?' pero no el '?' o cualquier cosa después. ¿Alguna idea de cómo obtener también los parámetros de la cadena de consulta? - kei23th

Haces un excelente punto, mi error. El segundo método que proporcioné hará el truco. solicitud.getParameterNames() devolverá una Enumeración de los nombres de los parámetros, que puede usar junto con request.getParameter(java.lang.String nombre) para recorrer cada parámetro y obtener su valor. - OYRM

No piense en el código de 8 dígitos como un parámetro sin nombre. Piense en ello como un parámetro sin valor.

request.getParameterNames() le dará el código de 8 dígitos, así como "u". Entonces puede recorrer así: String code = "";

for(String paramName : request.getParameterNames()) {
    if(!paramName.equalsIgnoreCase("u"))
        code = paramName;
}

respondido 19 nov., 13:16

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.