2010-02-23 12 views
10

Sé que puedo usar HttpServletRequest.getParameter() para obtener los valores de los parámetros de URL.HttpServletRequest - SetParameter

¿Hay un método equivalente con el que puedo establecer/reemplazar el valor?

Respuesta

7

No, no lo hay.

Solo puede cambiar los atributos, no los parámetros.

La única manera de lograr algo similar sería envolver la solicitud (con una clase que devuelva algo más para getParameter).

Curiosidad relacionada: Hay algunos errores en algunos contenedores de servlets que le permiten hacer request.getParameterValues(name)[0] = "newValue", pero esto solo puede generar inconsistencias.

+0

Sí, siempre puede envolverlo, aunque puede haber bastantes métodos. –

+0

Pregunta anterior, pero me gustaría agregar que un caso de uso para hacer esto es crear una unidad o prueba funcional. Por lo tanto, en este caso, puede hacerse utilizando una biblioteca Mock o usando un talón de solicitud proporcionado que contiene un mapa de parámetros modificable. –

4

No. Sin embargo, ¿por qué querrías hacer eso? Puede haber otras formas de lograr lo que necesita hacer.

+0

Quiero codificar todos los parámetros de la url – AJM

+0

Antes de que llegue al servlet? Debería buscar en JavaScript para eso: una vez que llega al servlet, no hay un punto real en intentar codificarlos más. ¿O está hablando de codificarlo para redireccionar a otro servlet/página? Si ese es el caso, querrá buscar la codificación mientras construye su nueva URL. Mire en java.net.URLEncoder (http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLEncoder.html); podría ayudar. – MCory

+0

No creo que esté hablando de codificación de URL. Los parámetros de solicitud ya están decodificados por URL por servletcontainer. Él está hablando más sobre la codificación de caracteres. – BalusC

4

No creo que exista. Pero puede usar el método setAttribute() de manera similar; solo tiene que usar getAttribute() - no getParameter() - para recuperar el valor más tarde.

6

Puede hacer que el parametermap un mapa modificable mediante la sustitución de la HttpServletRequest con una costumbre HttpServletRequestWrapper aplicación que sustituye al parametermap dentro de un Filter que se ha colocado al principio de la cadena.

Sin embargo, esto huele como una solución alternativa. En uno de los comentarios, indicó que quería codificar los parámetros (en realidad: decodificar ellos, porque son ya codificados en). Estás mirando en la dirección incorrecta para la solución. Para los parámetros de solicitud GET, las necesidades de codificación se establecen en el propio servletcontainer (en el caso de, por ejemplo, Tomcat, simplemente establezca el atributo URIEncoding del conector HTTP). Para POST, debe configurarlo por ServletRequest#setCharacterEncoding(). También vea las soluciones detalladas en this article (lea todo el artículo para comprender la imagen completa).

1

Los parámetros de solicitud se envían a un servlet o JSP desde un cliente a través de HTTP. No están configurados por el código del lado del servidor, por lo que no es necesario ningún método establecido (setParameter()).

Además, agregará seguridad de que nadie puede cambiar los parámetros de solicitud.

Cuestiones relacionadas