Java 如何从HttpServletRequest中删除参数?

Java 如何从HttpServletRequest中删除参数?,java,jsp,servlets,Java,Jsp,Servlets,在我的web应用程序中,我将两个参数从JSP发送到Servlet:action和productCode。基于该操作,将进行一些处理 现在,在执行操作之后,我将把控制转发给JSP。问题是,当打开新JSP时,URL仍然包含Servlet的名称和参数。因此,如果有人刷新页面,同样的操作将一次又一次地执行 如果我能够以某种方式从URL中删除参数,那么我在servlet中处理了无参数的情况 有人能告诉我如何从请求对象中删除参数吗?当您的请求处理程序结束时,您可以使用: response.setParame

在我的web应用程序中,我将两个参数从JSP发送到Servlet:
action
productCode
。基于该操作,将进行一些处理

现在,在执行操作之后,我将把控制转发给JSP。问题是,当打开新JSP时,URL仍然包含Servlet的名称和参数。因此,如果有人刷新页面,同样的操作将一次又一次地执行

如果我能够以某种方式从URL中删除参数,那么我在servlet中处理了无参数的情况


有人能告诉我如何从请求对象中删除参数吗?

当您的请求处理程序结束时,您可以使用:

response.setParameter("action") = "";
response.setParameter("productCode") = "";

希望这有帮助。

您不能从
HttpServletRequest
中删除参数。参数的定义就是它来自客户端(浏览器)

也许您指的是请求属性

为此,您可以使用:

request.getAttribute(String name)
request.setAttribute(String name, Object o)
request.removeAttribute(String name)

转发操作对客户端是透明的,并将请求转发给另一个处理程序进行处理。也许转发并不完全是您想要做的。

请记录(如果有人找不到其他问题/答案):


  • 您可以做的是将该参数设置为null,并在执行任何操作之前检查该属性是否设置为null。这样,您仍然可以使用请求转发

    例如:

    request.setAttribute("Your_attribute",null);
    
    在执行操作时检查NOTNULL可以使用

    String para=request.getAttribute("Your_attribute");
    if(para.equals(null)){
        //do this 
    }
    else{
        //do something else
    }
    

    您不能从HttpServletRequest中删除参数,但可以通过为此参数传递新值来更改其值

    例如,在登录以隐藏密码值后,您可以通过以下方式转发到下一个servlet/页面:

    "*/PAM_show_orders?orderDate=2020-04-16&**password=+++***".
    

    除非我丢失了一些东西,否则您将重定向到另一个URL。您不能这样做。。。转发意味着保留请求中的所有内容。。。如果要从请求中删除某些内容,需要使用重定向。请停止在请求中发送不需要的参数,在处理之前使用筛选器删除它们。实际上,我的意思是仅HttpServletRequest。但问题是“如何删除请求参数”而不是请求attribute@MikeD3ViDTyson我想你应该再读一遍我的答案,喝了一杯新鲜咖啡之后,嗨,安德鲁,我想你是对的。我刚找到,我想我应该使用重定向。非常感谢。在
    response
    下没有
    setParameter()
    方法不是合法的Java代码。没有
    setParameter()
    ,并且不能为方法调用赋值。这不起作用。.getAttribute(“something”)将返回null,因为您将is设置为null,并且尝试使用null中的.equals()方法将抛出一个NPE。