una servlet que por pasar parametros getparameter enviar datos clase java web-applications

java - por - ¿Cómo establecer un parámetro en HttpServletRequest?



request setattribute (4)

A partir de su pregunta, creo que lo que está tratando de hacer es almacenar algo (un objeto, una cadena ...) para llegar a otro servlet, utilizando RequestDispatcher (). Para hacer esto, no necesita establecer un parámetro sino un atributo usando

void setAttribute(String name, Object o);

y entonces

Object getAttribute(String name);

Estoy usando javax.servlet.http.HttpServletRequest para implementar una aplicación web.

No tengo ningún problema para obtener el parámetro de una solicitud utilizando el método getParameter . Sin embargo, no sé cómo configurar un parámetro en mi solicitud.


Si realmente quiere hacer esto, cree un HttpServletRequestWrapper.

public class AddableHttpRequest extends HttpServletRequestWrapper { private HashMap params = new HashMap(); public AddableingHttpRequest(HttpServletRequest request) { super(request); } public String getParameter(String name) { // if we added one, return that one if ( params.get( name ) != null ) { return params.get( name ); } // otherwise return what''s in the original request HttpServletRequest req = (HttpServletRequest) super.getRequest(); return validate( name, req.getParameter( name ) ); } public void addParameter( String name, String value ) { params.put( name, value ); } }


Lo siento, pero por qué no usar la siguiente construcción:

request.getParameterMap().put(parameterName, new String[] {parameterValue});


No puede, no usa la API estándar. HttpServletRequest representa una solicitud recibida por el servidor, por lo que agregar nuevos parámetros no es una opción válida (en lo que respecta a la API).

En principio, podría implementar una subclase de HttpServletRequestWrapper que envuelva la solicitud original e intercepte los métodos getParameter() y pase la solicitud envuelta cuando reenvíe.

Si realiza esta ruta, debe usar un Filter para reemplazar su HttpServletRequest con un HttpServletRequestWrapper :

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { if (servletRequest instanceof HttpServletRequest) { HttpServletRequest request = (HttpServletRequest) servletRequest; // Check wether the current request needs to be able to support the body to be read multiple times if (MULTI_READ_HTTP_METHODS.contains(request.getMethod())) { // Override current HttpServletRequest with custom implementation filterChain.doFilter(new HttpServletRequestWrapper(request), servletResponse); return; } } filterChain.doFilter(servletRequest, servletResponse); }