在我的Web应用程序中,我从JSP向Servlet发送两个参数:action
和productCode
。基于该动作,将进行一些处理。
现在执行操作后,我正在将控制转发到JSP。问题在于,当打开新的JSP时,URL仍然包含Servlet的名称和参数。因此,如果有人刷新页面,将会一次又一次地执行相同的操作。
如果我能够以某种方式从URL删除参数,那么我在servlet中处理了无参数的情况。
谁能告诉我如何从请求对象中删除参数?
转发操作对客户端是透明的,并将请求转发到另一个处理程序进行处理。也许前锋并不完全是您想要做的。
您无法从HttpServletRequest
中删除参数。参数的确切定义是它来自客户端(浏览器)。
也许您是说请求属性?
为此您可以使用:
request.getAttribute(String name)
request.setAttribute(String name, Object o)
request.removeAttribute(String name)
您无法从HttpServletRequest中删除参数-但可以通过传递此参数的新值来更改其值。
例如,登录后隐藏密码值,您可以通过以下方式转发到下一个servlet /页面:
"*/PAM_show_orders?orderDate=2020-04-16&**password=+++***".
您可以做的是将该参数设置为null,并在执行任何操作之前检查该属性是否设置为null。这样,您仍然可以使用请求转发。
例如:
request.setAttribute("Your_attribute",null);
执行动作时检查不为空可以使用
String para=request.getAttribute("Your_attribute");
if(para.equals(null)){
//do this
}
else{
//do something else
}
当请求处理程序结束时,您可以使用:
response.setParameter("action") = "";
response.setParameter("productCode") = "";
希望这会有所帮助。